{"version":3,"sources":["webpack:///./abuse_reports/components/constants.js","webpack:////build/source/node_modules/d3-selection/src/matcher.js","webpack:////build/source/node_modules/lodash/groupBy.js","webpack:////build/source/node_modules/d3-selection/src/selector.js","webpack:////build/source/vendor/assets/javascripts/jquery.endless-scroll.js","webpack:///./pager.js","webpack:///./lib/utils/ajax_cache.js","webpack:////build/source/node_modules/d3-selection/src/selection/style.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/drawer/drawer.js","webpack:////build/source/node_modules/d3-selection/src/selection/sparse.js","webpack:////build/source/node_modules/d3-selection/src/selection/enter.js","webpack:////build/source/node_modules/d3-selection/src/selection/data.js","webpack:////build/source/node_modules/d3-selection/src/selection/sort.js","webpack:////build/source/node_modules/d3-selection/src/selection/call.js","webpack:////build/source/node_modules/d3-selection/src/selection/attr.js","webpack:////build/source/node_modules/d3-selection/src/selection/property.js","webpack:////build/source/node_modules/d3-selection/src/selection/classed.js","webpack:////build/source/node_modules/d3-selection/src/selection/text.js","webpack:////build/source/node_modules/d3-selection/src/selection/html.js","webpack:////build/source/node_modules/d3-selection/src/selection/raise.js","webpack:////build/source/node_modules/d3-selection/src/selection/lower.js","webpack:////build/source/node_modules/d3-selection/src/creator.js","webpack:////build/source/node_modules/d3-selection/src/selection/insert.js","webpack:////build/source/node_modules/d3-selection/src/selection/remove.js","webpack:////build/source/node_modules/d3-selection/src/selection/clone.js","webpack:////build/source/node_modules/d3-selection/src/selection/dispatch.js","webpack:////build/source/node_modules/d3-selection/src/selection/index.js","webpack:////build/source/node_modules/d3-selection/src/selection/select.js","webpack:////build/source/node_modules/d3-selection/src/selection/selectAll.js","webpack:////build/source/node_modules/d3-selection/src/selection/filter.js","webpack:////build/source/node_modules/d3-selection/src/constant.js","webpack:////build/source/node_modules/d3-selection/src/selection/exit.js","webpack:////build/source/node_modules/d3-selection/src/selection/join.js","webpack:////build/source/node_modules/d3-selection/src/selection/merge.js","webpack:////build/source/node_modules/d3-selection/src/selection/order.js","webpack:////build/source/node_modules/d3-selection/src/selection/nodes.js","webpack:////build/source/node_modules/d3-selection/src/selection/node.js","webpack:////build/source/node_modules/d3-selection/src/selection/size.js","webpack:////build/source/node_modules/d3-selection/src/selection/empty.js","webpack:////build/source/node_modules/d3-selection/src/selection/each.js","webpack:////build/source/node_modules/d3-selection/src/selection/append.js","webpack:////build/source/node_modules/d3-selection/src/selection/datum.js","webpack:///./profile/components/graphql/get_user_achievements.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/utils/stable-sort.js","webpack:///./profile/components/graphql/get_user_snippets.query.graphql","webpack:////build/source/node_modules/d3-selection/src/namespace.js","webpack:///./abuse_reports/components/abuse_category_selector.vue","webpack:///./abuse_reports/components/abuse_category_selector.vue?5b67","webpack:///abuse_reports/components/abuse_category_selector.vue","webpack:///./abuse_reports/components/abuse_category_selector.vue?54dd","webpack:///./profile/components/app.vue","webpack:///./profile/components/app.vue?08e3","webpack:///profile/components/app.vue","webpack:///./profile/components/app.vue?1f44","webpack:///./profile/components/user_achievements.vue?014a","webpack:///profile/components/user_achievements.vue","webpack:///./profile/components/user_achievements.vue?3548","webpack:///./profile/components/user_achievements.vue","webpack:///./pages/users/activity_calendar.js","webpack:///profile/components/activity_calendar.vue","webpack:///./profile/components/activity_calendar.vue?c450","webpack:///./profile/utils.js","webpack:///./profile/constants.js","webpack:///./profile/components/activity_calendar.vue?c77c","webpack:///./profile/components/activity_calendar.vue","webpack:///./profile/components/overview_tab.vue?cfe8","webpack:///profile/components/overview_tab.vue","webpack:///./profile/components/overview_tab.vue?d0a2","webpack:///./profile/components/overview_tab.vue","webpack:///./profile/components/activity_tab.vue?e0a3","webpack:///profile/components/activity_tab.vue","webpack:///./profile/components/activity_tab.vue?5083","webpack:///./profile/components/activity_tab.vue","webpack:///./profile/components/groups_tab.vue?107d","webpack:///profile/components/groups_tab.vue","webpack:///./profile/components/groups_tab.vue?b8c5","webpack:///./profile/components/groups_tab.vue","webpack:///./profile/components/contributed_projects_tab.vue?168e","webpack:///profile/components/contributed_projects_tab.vue","webpack:///./profile/components/contributed_projects_tab.vue?2a9b","webpack:///./profile/components/contributed_projects_tab.vue","webpack:///./profile/components/personal_projects_tab.vue?bdba","webpack:///profile/components/personal_projects_tab.vue","webpack:///./profile/components/personal_projects_tab.vue?39ae","webpack:///./profile/components/personal_projects_tab.vue","webpack:///./profile/components/starred_projects_tab.vue?ab94","webpack:///profile/components/starred_projects_tab.vue","webpack:///./profile/components/starred_projects_tab.vue?3607","webpack:///./profile/components/starred_projects_tab.vue","webpack:///./profile/components/snippets/snippet_row.vue?8a59","webpack:///profile/components/snippets/snippet_row.vue","webpack:///./profile/components/snippets/snippet_row.vue?4c98","webpack:///./profile/components/snippets/snippet_row.vue","webpack:///./profile/components/snippets/snippets_tab.vue?7630","webpack:///profile/components/snippets/snippets_tab.vue","webpack:///./profile/components/snippets/snippets_tab.vue?7140","webpack:///./profile/components/snippets/snippets_tab.vue","webpack:///./profile/components/follow.vue?e076","webpack:///profile/components/follow.vue","webpack:///./profile/components/follow.vue?bcd5","webpack:///./profile/components/follow.vue","webpack:///./profile/components/followers_tab.vue?409d","webpack:///profile/components/followers_tab.vue","webpack:///./profile/components/followers_tab.vue?eed0","webpack:///./profile/components/followers_tab.vue","webpack:///./profile/components/following_tab.vue?d99c","webpack:///profile/components/following_tab.vue","webpack:///./profile/components/following_tab.vue?2bed","webpack:///./profile/components/following_tab.vue","webpack:///./profile/components/profile_tabs.vue?10d1","webpack:///profile/components/profile_tabs.vue","webpack:///./profile/components/profile_tabs.vue?9074","webpack:///./profile/components/profile_tabs.vue","webpack:///./profile/index.js","webpack:///./users/profile/actions/components/user_actions_app.vue?31f2","webpack:///users/profile/actions/components/user_actions_app.vue","webpack:///./users/profile/actions/components/user_actions_app.vue?1e35","webpack:///./users/profile/actions/components/user_actions_app.vue","webpack:///./pages/users/user_overview_block.js","webpack:///./pages/users/user_tabs.js","webpack:///./pages/users/index.js","webpack:///./users/profile/actions/index.js","webpack:///./activities.js","webpack:///./loading_icon_for_legacy_js.js","webpack:///./read_more.js","webpack:////build/source/node_modules/d3-selection/src/namespaces.js","webpack:///./user_callout.js","webpack:////build/source/node_modules/d3-selection/src/window.js","webpack:///./render_vue_component_for_legacy_js.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/nav/nav.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tabs/tabs.js","webpack:////build/source/node_modules/d3-selection/src/select.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tab/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/constants.js","webpack:////build/source/node_modules/d3-selection/src/selectorAll.js","webpack:////build/source/node_modules/d3-selection/src/selection/on.js"],"names":["CATEGORY_OPTIONS","value","text","s__","this","matches","selector","baseAssignValue","createAggregator","hasOwnProperty","Object","prototype","groupBy","result","key","call","push","module","exports","none","querySelector","$","fn","endlessScroll","options","extend","bottomPixels","fireOnce","loader","data","insertAfter","resetCounter","callback","ceaseFire","is_scrollable","firing","fired","fireSequence","apply","scroll","document","window","height","scrollTop","inner_wrap","length","wrapInner","find","after","remove","init","limit","preload","disable","prepareData","noop","successCallback","errorCallback","container","offset","parseInt","getParameterByName","$container","$loading","first","getOld","initLoadMore","_this","show","url","removeParams","axios","get","params","then","append","count","html","isScrollable","hide","catch","err","finally","$w","_this2","off","fireDelay","is","AjaxCache","Cache","constructor","super","pendingRequests","override","endpoint","internalStorage","retrieve","forceRetrieve","hasData","Promise","resolve","pendingRequest","e","error","Error","message","textStatus","styleRemove","name","style","removeProperty","styleConstant","priority","setProperty","styleFunction","v","arguments","styleValue","node","getPropertyValue","getComputedStyle","each","__vue_script__","components","GlButton","props","open","type","Boolean","required","headerHeight","String","default","headerSticky","zIndex","Number","variant","validator","keys","includes","computed","styles","top","positionFromTop","maxHeight","$slots","footer","watch","immediate","addEventListener","handleEscape","removeEventListener","methods","$emit","keyCode","__vue_component__","render","_vm","_h","$createElement","_c","_self","attrs","on","emitOpened","staticClass","class","variantClass","_t","_v","$event","shouldRenderFooter","_e","staticRenderFns","undefined","Array","update","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","__data__","appendChild","child","insertBefore","next","querySelectorAll","bindIndex","group","enter","exit","i","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","a","b","NaN","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","space","local","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","propertyRemove","propertyConstant","propertyFunction","classArray","string","trim","split","classList","ClassList","_node","_names","getAttribute","classedAdd","names","list","n","add","classedRemove","classedTrue","classedFalse","classedFunction","indexOf","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","dispatchEvent","event","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","select","m","subgroups","j","subnode","subgroup","selectAll","selectorAll","filter","match","matcher","size","d","bind","x","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","map","sparse","onenter","onupdate","onexit","merge","order","groups0","groups1","selection","m0","m1","Math","min","merges","group0","group1","compareDocumentPosition","sort","compareNode","compare","sortgroups","sortgroup","nodes","empty","attr","getAttributeNS","property","classed","create","creator","insert","before","deep","dispatch","doc","loc","source","definitionRefs","findOperation","definitions","element","forEach","def","refs","Set","collectFragmentReferences","kind","selectionSet","selections","variableDefinitions","operationName","newDoc","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","oneQuery","stableSort","array","compareFn","index","concat","prefix","slice","csrf","GlDrawer","GlForm","GlFormGroup","GlFormRadioGroup","inject","reportAbusePath","reportedUserId","reportedFromUrl","showDrawer","i18n","title","__","close","label","selected","mounted","getDrawerHeaderHeight","getContentWrapperHeight","closeDrawer","component","scopedSlots","_u","_s","$options","proxy","domProps","token","model","$$v","expression","GlAvatar","GlBadge","GlPopover","GlSprintf","mixins","timeagoMixin","apollo","userAchievements","query","getUserAchievements","variables","id","convertToGraphQLId","TYPENAME_USER","userId","processNodes","user","hasUserAchievements","_this$userAchievement","entries","_groupBy","values","achievement","avatarUrl","description","createdAt","timeAgo","timeFormatted","gon","gitlab_logo","fullPath","webUrl","joinPaths","rootUrl","achievementsPath","achievementAwardedMessage","userAchievement","awardedBy","awardedByUnknownNamespace","showCountBadge","getCountBadge","achievementsLabel","_l","d3","firstDayOfWeekChoices","freeze","sunday","monday","saturday","CONTRIB_LEGENDS","ActivityCalendar","activitiesContainer","recentActivitiesContainer","timestamps","calendarActivitiesPath","utcOffset","firstDayOfWeek","monthsAgo","onClickDay","clickDay","currentSelectedDate","daySpace","daySize","daySizeWithSpace","monthNames","months","timestampsTmp","today","systemUtcOffsetSeconds","date","Date","localUtcOffsetMinutes","getTimezoneOffset","systemUtcOffsetMinutes","setMinutes","getMinutes","getSystemDate","setHours","setMonth","getMonth","days","getDayDifference","setDate","getDate","day","getDay","toISODateFormat","svg","renderSvg","renderDays","renderMonths","renderDayTitles","getExtraWidthPadding","extraWidthPadding","width","dayYPos","stamp","month","lastMonth","_last","nextLevel","findIndex","getLevelFromContributions","dateDayName","getDayName","dateText","localeDateFormat","asDate","format","contribText","n__","formatTooltipText","y","_this3","getFullYear","currentTarget","loadingIconForLegacyJS","responseType","el","asDateTimeFull","newDate","dataset","datetime","createAlert","errorAlertTitle","retry","calendarHint","GlLoadingIcon","GlAlert","isLoading","hasError","renderActivityCalendar","userCalendarPath","$nextTick","calendarContainer","getBoundingClientRect","getVisibleCalendarPeriod","$refs","calendarSvgContainer","first_day_of_week","handleClickDay","ref","personalProjects","activity","viewAll","eventsErrorMessage","GlTab","GlLink","ProjectsList","ContributionEvents","personalProjectsLoading","events","eventsLoading","userActivityPath","captureError","snippetInfo","updatedInfo","blobTooltip","GlIcon","TimeAgo","directives","GlTooltip","GlTooltipDirective","snippet","userInfo","formattedId","getIdFromGraphQLId","profilePath","relative_url_root","username","blobCount","_this$snippet$blobs","blobs","commentsCount","_this$snippet$notes","notes","visibilityIcon","_SNIPPET_VISIBILITY$t","SNIPPET_VISIBILITY","visibilityLevel","icon","sprintf","file","rawName","updatedAt","currentUserEmptyStateTitle","visitorEmptyStateTitle","emptyStateDescription","newSnippet","learnMore","GlKeysetPagination","GlEmptyState","SnippetRow","pageInfo","cursor","last","userSnippets","getUserSnippets","_data$user","_data$user2","_data$user3","_data$user4","_data$user5","snippets","hasSnippets","_this$userSnippets","emptyStateTitle","isCurrentUser","isLastSnippet","nextPage","afterToken","endCursor","prevPage","beforeToken","startCursor","helpPagePath","hasPreviousPage","hasNextPage","_b","snippetsEmptyState","newSnippetPath","GlAvatarLabeled","GlAvatarLink","GlPagination","users","loading","page","totalItems","perPage","DEFAULT_PER_PAGE","web_url","avatar_url","followEmptyState","errorMessage","Follow","followers","headers","getUserFollowers","total","parseIntPagination","normalizeHeaders","onPaginationInput","followersCount","following","getUserFollowing","followeesCount","personalProjectsErrorMessage","GlTabs","OverviewTab","ActivityTab","GroupsTab","ContributedProjectsTab","PersonalProjectsTab","StarredProjectsTab","SnippetsTab","FollowersTab","FollowingTab","tabs","response","getUserProjects","per_page","convertObjectPropsToCamelCase","project","visibility","VISIBILITY_LEVEL_PUBLIC_STRING","tag","Vue","use","VueApollo","VueRouter","createRouter","routes","path","ProfileTabs","mode","base","scrollBehavior","to","from","savedPosition","GlDisclosureDropdown","AbuseCategorySelector","rssSubscriptionPath","defaultDropdownItems","action","onUserIdCopy","extraAttrs","dropdownItems","href","rssSubscribe","toggleDrawer","reportToAdmin","$toast","userIdCopied","UserOverviewBlock","requestParams","postRenderCallback","loadData","loadingEl","containerEl","nothingHereBlock","CALENDAR_TEMPLATE","DEFAULT_LOADER_ACTIONS","UserTabs","parentEl","$legacyTabsContainer","$parentEl","windowLocation","location","bindPaginationEvent","loadPage","changePage","preventDefault","target","Activities","loadOverviewPage","defaultPageLoader","toggleLoading","skip_namespace","localTimeAgo","initReadMore","loadActivityCalendar","renderMostRecentBlocks","skip_pagination","card_mode","$calendarWrap","calendarPath","cWrap","CALENDAR_PERIOD_12_MONTHS","scrollLeft","scrollWidth","status","toggleClass","_gon$features","features","profileTabsVue","getElementById","apolloProvider","defaultClient","createDefaultClient","router","provide","UserProfileApp","initUserProfileApp","setCookie","initUserProfile","UserAchievements","initUserAchievements","mountingEl","GlToast","UserActionsApp","initUserActionsApp","UserCallout","containerSelector","$contentList","loadActivities","toggleFilter","reloadActivities","Pager","updateTooltips","sender","$sender","removeClass","closest","defaultValue","prop","_GlLoadingIcon$props$","inline","color","classes","renderVueComponentForLegacyJS","triggerSelector","triggerEls","triggerEl","targetEl","previousElementSibling","hasOwn","readMoreHeight","readMoreContent","hash","targetId","hashTargetEl","click","clientHeight","once","xhtml","xlink","xml","xmlns","className","userCalloutBody","cookieName","isCalloutDismissed","getCookie","dismissCallout","$currentTarget","cookieOptions","hasClass","expires","setCalloutPerProject","defaultView","Component","children","vm","h","$mount","$forceUpdate","$el","$destroy","align","cardHeader","fill","justified","pills","small","BNav","functional","_ref","mixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","notDisabled","tab","disabled","BVTabButton","getBvTabs","controls","noKeyNav","posInSet","setSize","tabIndex","link","shiftKey","handleEvent","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","active","bvTabs","activeNavItemClass","role","tabindex","keydown","normalizeSlot","navProps","activeTabClass","contentClass","end","lazy","navClass","navWrapperClass","noFade","noNavStyle","BTabs","currentTab","registeredTabs","newValue","oldValue","$tab","activateTab","previousTab","nextTab","updateTabs","$_observer","setObserver","$t","disconnect","handler","content","childList","subtree","attributes","attributeFilter","$tabs","safeId","identity","getTabs","reverse","buttons","$btn","$button","getButtonForTab","tabEvent","vueTarget","componentId","defaultPrevented","emitTabClick","focus","focusButton","currentIndex","math","firstTab","lastTab","$activeTab","$fallbackTab","$buttons","controlledBy","clickTab","$nav","$children","$empty","$content","validatorHelper","obj","every","val","inheritAttrs","actionPrimary","actionSecondary","actionTertiary","syncActiveTabWithQueryParams","queryParamName","activeTabIndex","some","$listeners","input","handleInput","syncActiveTabFromQueryParams","buttonBinding","queryParamValue","getQueryParamValue","tabIndexToActivate","getTabQueryParamValue","bTabs","URLSearchParams","search","currentQueryParamValue","newQueryParamValue","searchParams","set","history","pushState","pathname","toString","$attrs","setQueryParamValueIfNecessary","_g","slot","primary","secondary","tertiary","listeners","MODEL_EVENT_NAME_ACTIVE","buttonId","noBody","BTab","_isTab","card","fade","activate","deactivate","registerTab","updateButton","hasNormalizedSlot","unregisterTab","deactivateTab","tabClasses","computedLazy","computedNoFade","isArray","linkClass","filterEvents","mouseenter","mouseleave","filterContextListener","listener","contextListener","related","relatedTarget","event1","event0","parseTypenames","typenames","t","onRemove","typename","__on","o","capture","onAdd","wrap","customEvent","that","args","sourceEvent"],"mappings":"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","file":"commons-pages.users-pages.users.identity_verification.show-pages.users.registrations_identity_verifi-ececb4a4.383091b8.chunk.js","sourcesContent":["import { s__ } from '~/locale';\n\nexport const CATEGORY_OPTIONS = [\n  { value: 'spam', text: s__(\"ReportAbuse|They're posting spam.\") },\n  { value: 'offensive', text: s__(\"ReportAbuse|They're being offensive or abusive.\") },\n  { value: 'phishing', text: s__(\"ReportAbuse|They're phishing.\") },\n  { value: 'crypto', text: s__(\"ReportAbuse|They're crypto mining.\") },\n  {\n    value: 'credentials',\n    text: s__(\"ReportAbuse|They're posting personal information or credentials.\"),\n  },\n  { value: 'copyright', text: s__(\"ReportAbuse|They're violating a copyright or trademark.\") },\n  { value: 'malware', text: s__(\"ReportAbuse|They're posting malware.\") },\n  { value: 'other', text: s__('ReportAbuse|Something else.') },\n];\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","/**\n * Endless Scroll plugin for jQuery\n *\n * v1.4.8\n *\n * Copyright (c) 2008 Fred Wu\n *\n * Dual licensed under the MIT and GPL licenses:\n *   http://www.opensource.org/licenses/mit-license.php\n *   http://www.gnu.org/licenses/gpl.html\n */\n\n/**\n * Usage:\n *\n * // using default options\n * $(document).endlessScroll();\n *\n * // using some custom options\n * $(document).endlessScroll({\n *   fireOnce: false,\n *   loader: \"<div class=\\\"loading\\\"><div>\",\n *   callback: function(){\n *     alert(\"test\");\n *   }\n * });\n *\n * Configuration options:\n *\n * bottomPixels  integer          the number of pixels from the bottom of the page that triggers the event\n * fireOnce      boolean          only fire once until the execution of the current event is completed\n * loader        string           the HTML to be displayed during loading\n * data          string|function  plain HTML data, can be either a string or a function that returns a string,\n *                                when passed as a function it accepts one argument: fire sequence (the number\n *                                of times the event triggered during the current page session)\n * insertAfter   string           jQuery selector syntax: where to put the loader as well as the plain HTML data\n * callback      function         callback function, accepts one argument: fire sequence (the number of times\n *                                the event triggered during the current page session)\n * resetCounter  function         resets the fire sequence counter if the function returns true, this function\n *                                could also perform hook actions since it is applied at the start of the event\n * ceaseFire     function         stops the event (no more endless scrolling) if the function returns true\n *\n * Usage tips:\n *\n * The plugin is more useful when used with the callback function, which can then make AJAX calls to retrieve content.\n * The fire sequence argument (for the callback function) is useful for 'pagination'-like features.\n */\n\nexport const setupEndlessScroll = ($) => {\n\n  $.fn.endlessScroll = function(options) {\n\n    var defaults = {\n      bottomPixels  : 50,\n      fireOnce      : true,\n      loader        : \"<br />Loading...<br />\",\n      data          : \"\",\n      insertAfter   : \"div:last\",\n      resetCounter  : function() { return false; },\n      callback      : function() { return true; },\n      ceaseFire     : function() { return false; }\n    };\n\n    var options       = $.extend({}, defaults, options),\n        data          = false,\n        firing        = true,\n        fired         = false,\n        fireSequence  = 0,\n        is_scrollable;\n\n    if (options.ceaseFire.apply(this) === true)\n      firing = false;\n\n    if (firing === true) {\n      $(this).scroll(function() {\n        if (options.ceaseFire.apply(this) === true) {\n          firing = false;\n          return; // Scroll will still get called, but nothing will happen\n        }\n\n        if (this == document || this == window) {\n          is_scrollable = $(document).height() - $(window).height() <= $(window).scrollTop() + options.bottomPixels;\n        } else {\n          // calculates the actual height of the scrolling container\n          var inner_wrap = $(\".endless_scroll_inner_wrap\", this);\n          if (inner_wrap.length == 0)\n            inner_wrap = $(this).wrapInner(\"<div class=\\\"endless_scroll_inner_wrap\\\" />\").find(\".endless_scroll_inner_wrap\");\n          is_scrollable = inner_wrap.length > 0 &&\n            (inner_wrap.height() - $(this).height() <= $(this).scrollTop() + options.bottomPixels);\n        }\n\n        if (is_scrollable && (options.fireOnce == false || (options.fireOnce == true && fired != true))) {\n          if (options.resetCounter.apply(this) === true) fireSequence = 0;\n\n          fired = true;\n          fireSequence++;\n\n          $(options.insertAfter).after(\"<div id=\\\"endless_scroll_loader\\\">\" + options.loader + \"</div>\");\n\n          data = typeof options.data == 'function' ? options.data.apply(this, [fireSequence]) : options.data;\n\n          if (data !== false) {\n            $(options.insertAfter).after(\"<div>\" + data + \"</div>\");\n\n            options.callback.apply(this, [fireSequence]);\n\n            fired = false;\n          }\n\n          $(\"#endless_scroll_loader\").remove();\n        }\n      });\n    }\n  };\n};\n","import $ from 'jquery';\nimport { setupEndlessScroll } from 'vendor/jquery.endless-scroll';\nimport axios from '~/lib/utils/axios_utils';\nimport { removeParams, getParameterByName } from '~/lib/utils/url_utility';\n\nsetupEndlessScroll($);\n\nconst ENDLESS_SCROLL_BOTTOM_PX = 400;\nconst ENDLESS_SCROLL_FIRE_DELAY_MS = 1000;\n\nexport default {\n  init({\n    limit = 0,\n    preload = false,\n    disable = false,\n    prepareData = $.noop,\n    successCallback = $.noop,\n    errorCallback = $.noop,\n    container = '',\n  } = {}) {\n    this.limit = limit;\n    this.offset = parseInt(getParameterByName('offset'), 10) || this.limit;\n    this.disable = disable;\n    this.prepareData = prepareData;\n    this.successCallback = successCallback;\n    this.errorCallback = errorCallback;\n    this.$container = $(container);\n    this.$loading = this.$container.length\n      ? this.$container.find('.loading').first()\n      : $('.loading').first();\n    if (preload) {\n      this.offset = 0;\n      this.getOld();\n    }\n    this.initLoadMore();\n  },\n\n  getOld() {\n    this.$loading.show();\n    const url = $('.content_list').data('href') || removeParams(['limit', 'offset']);\n\n    axios\n      .get(url, {\n        params: {\n          limit: this.limit,\n          offset: this.offset,\n        },\n      })\n      .then(({ data }) => {\n        this.append(data.count, this.prepareData(data.html));\n        this.successCallback();\n\n        // keep loading until we've filled the viewport height\n        if (!this.disable && !this.isScrollable()) {\n          this.getOld();\n        } else {\n          this.$loading.hide();\n        }\n      })\n      .catch((err) => this.errorCallback(err))\n      .finally(() => this.$loading.hide());\n  },\n\n  append(count, html) {\n    $('.content_list').append(html);\n    if (count > 0) {\n      this.offset += count;\n\n      if (count < this.limit) {\n        this.disable = true;\n      }\n    } else {\n      this.disable = true;\n    }\n  },\n\n  isScrollable() {\n    const $w = $(window);\n    return $(document).height() > $w.height() + $w.scrollTop() + ENDLESS_SCROLL_BOTTOM_PX;\n  },\n\n  initLoadMore() {\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    $(document).off('scroll');\n    $(document).endlessScroll({\n      bottomPixels: ENDLESS_SCROLL_BOTTOM_PX,\n      fireDelay: ENDLESS_SCROLL_FIRE_DELAY_MS,\n      fireOnce: true,\n      ceaseFire: () => this.disable === true,\n      callback: () => {\n        if (this.$container.length && !this.$container.is(':visible')) {\n          return;\n        }\n\n        if (!this.$loading.is(':visible')) {\n          this.$loading.show();\n          this.getOld();\n        }\n      },\n    });\n  },\n};\n","import axios from './axios_utils';\nimport Cache from './cache';\n\nclass AjaxCache extends Cache {\n  constructor() {\n    super();\n    this.pendingRequests = {};\n  }\n\n  override(endpoint, data) {\n    this.internalStorage[endpoint] = data;\n  }\n\n  retrieve(endpoint, forceRetrieve) {\n    if (this.hasData(endpoint) && !forceRetrieve) {\n      return Promise.resolve(this.get(endpoint));\n    }\n\n    let pendingRequest = this.pendingRequests[endpoint];\n\n    if (!pendingRequest) {\n      pendingRequest = axios\n        .get(endpoint)\n        .then(({ data }) => {\n          this.internalStorage[endpoint] = data;\n          delete this.pendingRequests[endpoint];\n        })\n        .catch((e) => {\n          const error = new Error(`${endpoint}: ${e.message}`);\n          error.textStatus = e.message;\n\n          delete this.pendingRequests[endpoint];\n          throw error;\n        });\n\n      this.pendingRequests[endpoint] = pendingRequest;\n    }\n\n    return pendingRequest.then(() => this.get(endpoint));\n  }\n}\n\nexport default new AjaxCache();\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","import isEmpty from 'lodash/isEmpty';\nimport { maxZIndex, drawerVariants } from '../../../utils/constants';\nimport GlButton from '../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlDrawer',\n  components: {\n    GlButton\n  },\n  props: {\n    open: {\n      type: Boolean,\n      required: true\n    },\n    headerHeight: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    headerSticky: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    zIndex: {\n      type: Number,\n      required: false,\n      default: maxZIndex\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: drawerVariants.default,\n      validator: value => Object.keys(drawerVariants).includes(value)\n    }\n  },\n  computed: {\n    positionFromTop() {\n      return !isEmpty(this.headerHeight) ? this.headerHeight : 0;\n    },\n    drawerStyles() {\n      const styles = {\n        top: this.positionFromTop,\n        zIndex: this.zIndex\n      };\n      if (this.positionFromTop) {\n        styles.maxHeight = `calc(100vh - ${this.positionFromTop})`;\n      }\n      return styles;\n    },\n    drawerHeaderStyles() {\n      return {\n        zIndex: this.headerSticky ? maxZIndex : null\n      };\n    },\n    shouldRenderFooter() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$slots.footer);\n    },\n    variantClass() {\n      // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n      return `gl-drawer-${this.variant}`;\n    }\n  },\n  watch: {\n    open: {\n      immediate: true,\n      handler(open) {\n        if (open) {\n          document.addEventListener('keydown', this.handleEscape);\n        } else {\n          document.removeEventListener('keydown', this.handleEscape);\n        }\n      }\n    }\n  },\n  beforeDestroy() {\n    document.removeEventListener('keydown', this.handleEscape);\n  },\n  methods: {\n    emitOpened() {\n      /**\n       * Emits when the opening animation has finished.\n       * @event opened\n       */\n      this.$emit('opened');\n    },\n    handleEscape(e) {\n      const ESC = 27;\n      if (this.open && e.keyCode === ESC) {\n        this.$emit('close');\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"gl-drawer\"},on:{\"after-enter\":_vm.emitOpened}},[(_vm.open)?_c('aside',{staticClass:\"gl-drawer\",class:_vm.variantClass,style:(_vm.drawerStyles)},[_c('div',{staticClass:\"gl-drawer-header\",class:{ 'gl-drawer-header-sticky': _vm.headerSticky },style:(_vm.drawerHeaderStyles)},[_c('div',{staticClass:\"gl-drawer-title\"},[_vm._t(\"title\"),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-drawer-close-button\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"close\",\"aria-label\":\"Close drawer\"},on:{\"click\":function($event){return _vm.$emit('close')}}})],2),_vm._v(\" \"),_vm._t(\"header\")],2),_vm._v(\" \"),_c('div',{staticClass:\"gl-drawer-body\",class:{ 'gl-drawer-body-scrim': !_vm.shouldRenderFooter }},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.shouldRenderFooter)?_c('div',{staticClass:\"gl-drawer-footer gl-drawer-footer-sticky\",class:{ 'gl-drawer-body-scrim-on-footer': _vm.shouldRenderFooter },style:({ zIndex: _vm.zIndex })},[_vm._t(\"footer\")],2):_vm._e()]):_vm._e()])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nexport default function(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  var size = 0;\n  this.each(function() { ++size; });\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getUserAchievements\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UserID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userAchievements\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"achievement\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"namespace\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"achievementsPath\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":354}};\n    doc.loc.source = {\"body\":\"query getUserAchievements($id: UserID!) {\\n  user(id: $id) {\\n    id\\n    userAchievements {\\n      nodes {\\n        id\\n        createdAt\\n        achievement {\\n          id\\n          name\\n          description\\n          avatarUrl\\n          namespace {\\n            id\\n            fullPath\\n            achievementsPath\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getUserAchievements\"] = oneQuery(doc, \"getUserAchievements\");\n        \n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nconst stableSort = (array, compareFn) => {\n  // Using `.bind(compareFn)` on the wrapped anonymous function improves\n  // performance by avoiding the function call setup. We don't use an arrow\n  // function here as it binds `this` to the `stableSort` context rather than\n  // the `compareFn` context, which wouldn't give us the performance increase.\n  return array.map((a, index) => [index, a]).sort(function (a, b) {\n    return this(a[1], b[1]) || a[0] - b[0];\n  }.bind(compareFn)).map(e => e[1]);\n};\n\nexport { stableSort };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getUserSnippets\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UserID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"afterToken\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"beforeToken\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"snippets\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"before\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"beforeToken\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"afterToken\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"visibilityLevel\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updatedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobs\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"notes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":648}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/page_info.fragment.graphql\\\"\\n\\nquery getUserSnippets(\\n  $id: UserID!\\n  $first: Int\\n  $last: Int\\n  $afterToken: String\\n  $beforeToken: String\\n) {\\n  user(id: $id) {\\n    id\\n    avatarUrl\\n    name\\n    username\\n    snippets(first: $first, last: $last, before: $beforeToken, after: $afterToken) {\\n      pageInfo {\\n        ...PageInfo\\n      }\\n      nodes {\\n        id\\n        title\\n        webUrl\\n        visibilityLevel\\n        createdAt\\n        updatedAt\\n        blobs {\\n          nodes {\\n            name\\n          }\\n        }\\n        notes {\\n          nodes {\\n            id\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/page_info.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getUserSnippets\"] = oneQuery(doc, \"getUserSnippets\");\n        \n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-drawer',{attrs:{\"header-height\":_vm.getDrawerHeaderHeight,\"z-index\":300,\"open\":_vm.showDrawer && _vm.mounted},on:{\"close\":_vm.closeDrawer},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('h2',{staticClass:\"gl-mb-0 gl-mt-0 gl-text-size-h2 gl-leading-24\",attrs:{\"data-testid\":\"category-drawer-title\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.title)+\"\\n    \")])]},proxy:true},{key:\"default\",fn:function(){return [_c('gl-form',{staticClass:\"gl-text-left\",attrs:{\"action\":_vm.reportAbusePath,\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"authenticity_token\"},domProps:{\"value\":_vm.$options.csrf.token}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"user_id\",\"data-testid\":\"input-user-id\"},domProps:{\"value\":_vm.reportedUserId}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"abuse_report[reported_from_url]\",\"data-testid\":\"input-referer\"},domProps:{\"value\":_vm.reportedFromUrl}}),_vm._v(\" \"),_c('gl-form-group',{attrs:{\"label\":_vm.$options.i18n.label,\"label-class\":\"gl-text-default\"}},[_c('gl-form-radio-group',{attrs:{\"options\":_vm.$options.CATEGORY_OPTIONS,\"name\":\"abuse_report[category]\",\"required\":\"\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1),_vm._v(\" \"),_c('gl-button',{attrs:{\"type\":\"submit\",\"variant\":\"confirm\",\"data-testid\":\"submit-form-button\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.next)+\"\\n      \")])],1)]},proxy:true}])})\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!./abuse_category_selector.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!./abuse_category_selector.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlDrawer, GlForm, GlFormGroup, GlFormRadioGroup } from '@gitlab/ui';\nimport { getContentWrapperHeight } from '~/lib/utils/dom_utils';\nimport { s__, __ } from '~/locale';\nimport csrf from '~/lib/utils/csrf';\nimport { CATEGORY_OPTIONS } from '~/abuse_reports/components/constants';\n\nexport default {\n  name: 'AbuseCategorySelector',\n  csrf,\n  components: {\n    GlButton,\n    GlDrawer,\n    GlForm,\n    GlFormGroup,\n    GlFormRadioGroup,\n  },\n  inject: {\n    reportAbusePath: {\n      default: '',\n    },\n  },\n  props: {\n    reportedUserId: {\n      type: Number,\n      required: true,\n    },\n    reportedFromUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showDrawer: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  i18n: {\n    title: __('Report abuse to administrator'),\n    close: __('Close'),\n    label: s__('ReportAbuse|Why are you reporting this user?'),\n    next: __('Next'),\n  },\n  CATEGORY_OPTIONS,\n  data() {\n    return {\n      selected: '',\n      mounted: false,\n    };\n  },\n  computed: {\n    getDrawerHeaderHeight() {\n      // avoid calculating this in advance because it causes layout thrashing\n      // https://gitlab.com/gitlab-org/gitlab/-/issues/331172#note_1269378396\n      if (!this.showDrawer) return '0';\n      return getContentWrapperHeight();\n    },\n  },\n  mounted() {\n    // this is required for the component to properly animate\n    // when it is shown with v-if\n    this.mounted = true;\n  },\n  methods: {\n    closeDrawer() {\n      this.$emit('close-drawer');\n    },\n  },\n};\n</script>\n<template>\n  <gl-drawer\n    :header-height=\"getDrawerHeaderHeight\"\n    :z-index=\"300\"\n    :open=\"showDrawer && mounted\"\n    @close=\"closeDrawer\"\n  >\n    <template #title>\n      <h2 class=\"gl-mb-0 gl-mt-0 gl-text-size-h2 gl-leading-24\" data-testid=\"category-drawer-title\">\n        {{ $options.i18n.title }}\n      </h2>\n    </template>\n    <template #default>\n      <gl-form :action=\"reportAbusePath\" method=\"post\" class=\"gl-text-left\">\n        <input :value=\"$options.csrf.token\" type=\"hidden\" name=\"authenticity_token\" />\n\n        <input type=\"hidden\" name=\"user_id\" :value=\"reportedUserId\" data-testid=\"input-user-id\" />\n        <input\n          type=\"hidden\"\n          name=\"abuse_report[reported_from_url]\"\n          :value=\"reportedFromUrl\"\n          data-testid=\"input-referer\"\n        />\n\n        <gl-form-group :label=\"$options.i18n.label\" label-class=\"gl-text-default\">\n          <gl-form-radio-group\n            v-model=\"selected\"\n            :options=\"$options.CATEGORY_OPTIONS\"\n            name=\"abuse_report[category]\"\n            required\n          />\n        </gl-form-group>\n\n        <gl-button type=\"submit\" variant=\"confirm\" data-testid=\"submit-form-button\">\n          {{ $options.i18n.next }}\n        </gl-button>\n      </gl-form>\n    </template>\n  </gl-drawer>\n</template>\n","import { render, staticRenderFns } from \"./abuse_category_selector.vue?vue&type=template&id=4bfeb9fb\"\nimport script from \"./abuse_category_selector.vue?vue&type=script&lang=js\"\nexport * from \"./abuse_category_selector.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('router-view')\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!./app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  name: 'UserProfileApp',\n};\n</script>\n\n<template>\n  <router-view />\n</template>\n","import { render, staticRenderFns } from \"./app.vue?vue&type=template&id=50a661ee\"\nimport script from \"./app.vue?vue&type=script&lang=js\"\nexport * from \"./app.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","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!./user_achievements.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!./user_achievements.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatar, GlBadge, GlPopover, GlSprintf } from '@gitlab/ui';\nimport { groupBy } from 'lodash';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { s__ } from '~/locale';\nimport { TYPENAME_USER } from '~/graphql_shared/constants';\nimport timeagoMixin from '~/vue_shared/mixins/timeago';\nimport { joinPaths } from '~/lib/utils/url_utility';\nimport getUserAchievements from './graphql/get_user_achievements.query.graphql';\n\nexport default {\n  name: 'UserAchievements',\n  components: { GlAvatar, GlBadge, GlPopover, GlSprintf },\n  mixins: [timeagoMixin],\n  inject: ['rootUrl', 'userId'],\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    userAchievements: {\n      query: getUserAchievements,\n      variables() {\n        return {\n          id: convertToGraphQLId(TYPENAME_USER, this.userId),\n        };\n      },\n      update(data) {\n        return this.processNodes(data.user.userAchievements.nodes);\n      },\n      error() {\n        return [];\n      },\n    },\n  },\n  computed: {\n    hasUserAchievements() {\n      return Boolean(this.userAchievements?.length);\n    },\n  },\n  methods: {\n    processNodes(nodes) {\n      return Object.entries(groupBy(nodes, 'achievement.id')).map(([id, values]) => {\n        const {\n          achievement: { name, avatarUrl, description, namespace },\n          createdAt,\n        } = values[0];\n        const count = values.length;\n        return {\n          id: `user-achievement-${id}`,\n          name,\n          timeAgo: this.timeFormatted(createdAt),\n          avatarUrl: avatarUrl || gon.gitlab_logo,\n          description,\n          namespace: namespace && {\n            fullPath: namespace.fullPath,\n            webUrl: joinPaths(this.rootUrl, namespace.achievementsPath),\n          },\n          count,\n        };\n      });\n    },\n    achievementAwardedMessage(userAchievement) {\n      return userAchievement.namespace\n        ? this.$options.i18n.awardedBy\n        : this.$options.i18n.awardedByUnknownNamespace;\n    },\n    showCountBadge(count) {\n      return count > 1;\n    },\n    getCountBadge(count) {\n      return `${count}x`;\n    },\n  },\n  i18n: {\n    awardedBy: s__('Achievements|Awarded %{timeAgo} by %{namespace}'),\n    awardedByUnknownNamespace: s__('Achievements|Awarded %{timeAgo} by a private namespace'),\n    achievementsLabel: s__('Achievements|Achievements'),\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"hasUserAchievements\">\n    <h2 class=\"gl-mb-2 gl-mt-4 gl-text-base\">\n      {{ $options.i18n.achievementsLabel }}\n    </h2>\n    <div class=\"gl-flex gl-flex-wrap gl-gap-3\">\n      <div\n        v-for=\"userAchievement in userAchievements\"\n        :key=\"userAchievement.id\"\n        class=\"gl-relative\"\n        data-testid=\"user-achievement\"\n      >\n        <gl-avatar\n          :id=\"userAchievement.id\"\n          :src=\"userAchievement.avatarUrl\"\n          :size=\"48\"\n          tabindex=\"0\"\n          shape=\"rect\"\n          class=\"gl-p-1 gl-outline-none\"\n        />\n        <br />\n        <gl-badge\n          v-if=\"showCountBadge(userAchievement.count)\"\n          class=\"gl-absolute gl-left-7 gl-top-7 gl-z-1\"\n          variant=\"info\"\n          >{{ getCountBadge(userAchievement.count) }}</gl-badge\n        >\n        <gl-popover :target=\"userAchievement.id\">\n          <div>\n            <span class=\"gl-font-bold\">{{ userAchievement.name }}</span>\n            <gl-badge v-if=\"showCountBadge(userAchievement.count)\" variant=\"info\">{{\n              getCountBadge(userAchievement.count)\n            }}</gl-badge>\n          </div>\n          <div>\n            <gl-sprintf :message=\"achievementAwardedMessage(userAchievement)\">\n              <template #timeAgo>\n                <span>{{ userAchievement.timeAgo }}</span>\n              </template>\n              <template v-if=\"userAchievement.namespace\" #namespace>\n                <a :href=\"userAchievement.namespace.webUrl\">{{\n                  userAchievement.namespace.fullPath\n                }}</a>\n              </template>\n            </gl-sprintf>\n          </div>\n          <div\n            v-if=\"userAchievement.description\"\n            class=\"gl-mt-5\"\n            data-testid=\"achievement-description\"\n          >\n            {{ userAchievement.description }}\n          </div>\n        </gl-popover>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./user_achievements.vue?vue&type=template&id=7d8fa13e\"\nimport script from \"./user_achievements.vue?vue&type=script&lang=js\"\nexport * from \"./user_achievements.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.hasUserAchievements)?_c('div',[_c('h2',{staticClass:\"gl-mb-2 gl-mt-4 gl-text-base\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.achievementsLabel)+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-gap-3\"},_vm._l((_vm.userAchievements),function(userAchievement){return _c('div',{key:userAchievement.id,staticClass:\"gl-relative\",attrs:{\"data-testid\":\"user-achievement\"}},[_c('gl-avatar',{staticClass:\"gl-p-1 gl-outline-none\",attrs:{\"id\":userAchievement.id,\"src\":userAchievement.avatarUrl,\"size\":48,\"tabindex\":\"0\",\"shape\":\"rect\"}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),(_vm.showCountBadge(userAchievement.count))?_c('gl-badge',{staticClass:\"gl-absolute gl-left-7 gl-top-7 gl-z-1\",attrs:{\"variant\":\"info\"}},[_vm._v(_vm._s(_vm.getCountBadge(userAchievement.count)))]):_vm._e(),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":userAchievement.id}},[_c('div',[_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(userAchievement.name))]),_vm._v(\" \"),(_vm.showCountBadge(userAchievement.count))?_c('gl-badge',{attrs:{\"variant\":\"info\"}},[_vm._v(_vm._s(_vm.getCountBadge(userAchievement.count)))]):_vm._e()],1),_vm._v(\" \"),_c('div',[_c('gl-sprintf',{attrs:{\"message\":_vm.achievementAwardedMessage(userAchievement)},scopedSlots:_vm._u([{key:\"timeAgo\",fn:function(){return [_c('span',[_vm._v(_vm._s(userAchievement.timeAgo))])]},proxy:true},(userAchievement.namespace)?{key:\"namespace\",fn:function(){return [_c('a',{attrs:{\"href\":userAchievement.namespace.webUrl}},[_vm._v(_vm._s(userAchievement.namespace.fullPath))])]},proxy:true}:null],null,true)})],1),_vm._v(\" \"),(userAchievement.description)?_c('div',{staticClass:\"gl-mt-5\",attrs:{\"data-testid\":\"achievement-description\"}},[_vm._v(\"\\n          \"+_vm._s(userAchievement.description)+\"\\n        \")]):_vm._e()])],1)}),0)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { select } from 'd3-selection';\nimport $ from 'jquery';\nimport { last } from 'lodash';\nimport { createAlert } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\nimport {\n  getDayName,\n  getDayDifference,\n  localeDateFormat,\n  toISODateFormat,\n  newDate,\n} from '~/lib/utils/datetime_utility';\nimport { n__, s__, __ } from '~/locale';\nimport { loadingIconForLegacyJS } from '~/loading_icon_for_legacy_js';\n\nconst d3 = { select };\n\nconst firstDayOfWeekChoices = Object.freeze({\n  sunday: 0,\n  monday: 1,\n  saturday: 6,\n});\n\nconst CONTRIB_LEGENDS = [\n  { title: __('No contributions'), min: 0 },\n  { title: __('1-9 contributions'), min: 1 },\n  { title: __('10-19 contributions'), min: 10 },\n  { title: __('20-29 contributions'), min: 20 },\n  { title: __('30+ contributions'), min: 30 },\n];\n\nfunction getSystemDate(systemUtcOffsetSeconds) {\n  const date = new Date();\n  const localUtcOffsetMinutes = 0 - date.getTimezoneOffset();\n  const systemUtcOffsetMinutes = systemUtcOffsetSeconds / 60;\n  date.setMinutes(date.getMinutes() - localUtcOffsetMinutes + systemUtcOffsetMinutes);\n  return date;\n}\n\nfunction formatTooltipText({ date, count }) {\n  const dateDayName = getDayName(date);\n  const dateText = localeDateFormat.asDate.format(date);\n\n  let contribText = __('No contributions');\n  if (count > 0) {\n    contribText = n__('%d contribution', '%d contributions', count);\n  }\n  return `${contribText}<br /><span class=\"gl-text-neutral-300\">${dateDayName} ${dateText}</span>`;\n}\n\n// Return the contribution level from the number of contributions\nexport const getLevelFromContributions = (count) => {\n  if (count <= 0) {\n    return 0;\n  }\n\n  const nextLevel = CONTRIB_LEGENDS.findIndex(({ min }) => count < min);\n\n  // If there is no higher level, we are at the end\n  return nextLevel >= 0 ? nextLevel - 1 : CONTRIB_LEGENDS.length - 1;\n};\n\nexport default class ActivityCalendar {\n  constructor({\n    container,\n    activitiesContainer,\n    recentActivitiesContainer,\n    timestamps,\n    calendarActivitiesPath,\n    utcOffset = 0,\n    firstDayOfWeek = firstDayOfWeekChoices.sunday,\n    monthsAgo = 12,\n    onClickDay,\n  }) {\n    this.calendarActivitiesPath = calendarActivitiesPath;\n    this.clickDay = this.clickDay.bind(this);\n    this.currentSelectedDate = '';\n    this.daySpace = 1;\n    this.daySize = 14;\n    this.daySizeWithSpace = this.daySize + this.daySpace * 2;\n    this.monthNames = [\n      __('Jan'),\n      __('Feb'),\n      __('Mar'),\n      __('Apr'),\n      __('May'),\n      __('Jun'),\n      __('Jul'),\n      __('Aug'),\n      __('Sep'),\n      __('Oct'),\n      __('Nov'),\n      __('Dec'),\n    ];\n    this.months = [];\n    this.firstDayOfWeek = firstDayOfWeek;\n    this.activitiesContainer = activitiesContainer;\n    this.recentActivitiesContainer = recentActivitiesContainer;\n    this.container = container;\n    this.onClickDay = onClickDay;\n\n    // Loop through the timestamps to create a group of objects\n    // The group of objects will be grouped based on the day of the week they are\n    this.timestampsTmp = [];\n    let group = 0;\n\n    const today = getSystemDate(utcOffset);\n    today.setHours(0, 0, 0, 0, 0);\n\n    const timeAgo = new Date(today);\n    timeAgo.setMonth(today.getMonth() - monthsAgo);\n\n    const days = getDayDifference(timeAgo, today);\n\n    for (let i = 0; i <= days; i += 1) {\n      const date = new Date(timeAgo);\n      date.setDate(date.getDate() + i);\n\n      const day = date.getDay();\n      const count = timestamps[toISODateFormat(date)] || 0;\n\n      // Create a new group array if this is the first day of the week\n      // or if is first object\n      if ((day === this.firstDayOfWeek && i !== 0) || i === 0) {\n        this.timestampsTmp.push([]);\n        group += 1;\n      }\n\n      // Push to the inner array the values that will be used to render map\n      const innerArray = this.timestampsTmp[group - 1];\n      innerArray.push({ count, date, day });\n    }\n\n    // Init the svg element\n    this.svg = this.renderSvg(container, group);\n    this.renderDays();\n    this.renderMonths();\n    this.renderDayTitles();\n  }\n\n  // Add extra padding for the last month label if it is also the last column\n  getExtraWidthPadding(group) {\n    let extraWidthPadding = 0;\n    const lastColMonth = this.timestampsTmp[group - 1][0].date.getMonth();\n    const secondLastColMonth = this.timestampsTmp[group - 2][0].date.getMonth();\n\n    if (lastColMonth !== secondLastColMonth) {\n      extraWidthPadding = 6;\n    }\n\n    return extraWidthPadding;\n  }\n\n  renderSvg(container, group) {\n    const width = (group + 1) * this.daySizeWithSpace + this.getExtraWidthPadding(group);\n    return d3\n      .select(container)\n      .append('svg')\n      .attr('width', width)\n      .attr('height', 140)\n      .attr('class', 'contrib-calendar')\n      .attr('data-testid', 'contrib-calendar');\n  }\n\n  dayYPos(day) {\n    return this.daySizeWithSpace * ((day + 7 - this.firstDayOfWeek) % 7);\n  }\n\n  renderDays() {\n    this.svg\n      .selectAll('g')\n      .data(this.timestampsTmp)\n      .enter()\n      .append('g')\n      .attr('transform', (group, i) => {\n        group.forEach((stamp, a) => {\n          if (a === 0 && stamp.day === this.firstDayOfWeek) {\n            const month = stamp.date.getMonth();\n            const x = this.daySizeWithSpace * i + 1 + this.daySizeWithSpace;\n            const lastMonth = last(this.months);\n            if (\n              lastMonth == null ||\n              (month !== lastMonth.month && x - this.daySizeWithSpace !== lastMonth.x)\n            ) {\n              this.months.push({ month, x });\n            }\n          }\n        });\n        return `translate(${this.daySizeWithSpace * i + 1 + this.daySizeWithSpace}, 18)`;\n      })\n      .attr('data-testid', 'user-contrib-cell-group')\n      .selectAll('rect')\n      .data((stamp) => stamp)\n      .enter()\n      .append('rect')\n      .attr('x', '0')\n      .attr('y', (stamp) => this.dayYPos(stamp.day))\n      .attr('rx', '2')\n      .attr('ry', '2')\n      .attr('width', this.daySize)\n      .attr('height', this.daySize)\n      .attr('data-level', (stamp) => getLevelFromContributions(stamp.count))\n      .attr('title', (stamp) => formatTooltipText(stamp))\n      .attr('class', 'user-contrib-cell has-tooltip')\n      .attr('data-testid', 'user-contrib-cell')\n      .attr('data-html', true)\n      .attr('data-container', 'body')\n      .on('click', this.clickDay);\n  }\n\n  renderDayTitles() {\n    const days = [\n      {\n        text: s__('DayTitle|M'),\n        y: 29 + this.dayYPos(1),\n      },\n      {\n        text: s__('DayTitle|W'),\n        y: 29 + this.dayYPos(3),\n      },\n      {\n        text: s__('DayTitle|F'),\n        y: 29 + this.dayYPos(5),\n      },\n    ];\n\n    if (this.firstDayOfWeek === firstDayOfWeekChoices.monday) {\n      days.push({\n        text: s__('DayTitle|S'),\n        y: 29 + this.dayYPos(7),\n      });\n    } else if (this.firstDayOfWeek === firstDayOfWeekChoices.saturday) {\n      days.push({\n        text: s__('DayTitle|S'),\n        y: 29 + this.dayYPos(6),\n      });\n    }\n\n    this.svg\n      .append('g')\n      .selectAll('text')\n      .data(days)\n      .enter()\n      .append('text')\n      .attr('text-anchor', 'middle')\n      .attr('x', 8)\n      .attr('y', (day) => day.y)\n      .text((day) => day.text)\n      .attr('class', 'user-contrib-text');\n  }\n\n  renderMonths() {\n    this.svg\n      .append('g')\n      .attr('direction', 'ltr')\n      .selectAll('text')\n      .data(this.months)\n      .enter()\n      .append('text')\n      .attr('x', (date) => date.x)\n      .attr('y', 10)\n      .attr('class', 'user-contrib-text')\n      .text((date) => this.monthNames[date.month]);\n  }\n\n  clickDay(stamp) {\n    if (this.currentSelectedDate !== stamp.date) {\n      this.currentSelectedDate = stamp.date;\n\n      const date = [\n        this.currentSelectedDate.getFullYear(),\n        this.currentSelectedDate.getMonth() + 1,\n        this.currentSelectedDate.getDate(),\n      ].join('-');\n\n      if (this.onClickDay) {\n        this.onClickDay(date);\n\n        return;\n      }\n\n      // Remove is-active class from all other cells\n      this.svg.selectAll('.user-contrib-cell.is-active').classed('is-active', false);\n\n      // Add is-active class to the clicked cell\n      // eslint-disable-next-line no-restricted-globals\n      d3.select(event.currentTarget).classed('is-active', true);\n\n      $(this.activitiesContainer)\n        .empty()\n        .append(loadingIconForLegacyJS({ size: 'lg' }));\n\n      $(this.recentActivitiesContainer).hide();\n\n      axios\n        .get(this.calendarActivitiesPath, {\n          params: {\n            date,\n          },\n          responseType: 'text',\n        })\n        .then(({ data }) => {\n          $(this.activitiesContainer).html(data);\n          document\n            .querySelector(this.activitiesContainer)\n            .querySelectorAll('.js-localtime')\n            .forEach((el) => {\n              el.setAttribute(\n                'title',\n                localeDateFormat.asDateTimeFull.format(newDate(el.dataset.datetime)),\n              );\n            });\n        })\n        .catch(() =>\n          createAlert({\n            message: __('An error occurred while retrieving calendar activity'),\n          }),\n        );\n    } else {\n      this.currentSelectedDate = '';\n      $(this.activitiesContainer).html('');\n      $(this.recentActivitiesContainer).show();\n\n      // Remove is-active class from all other cells\n      this.svg.selectAll('.user-contrib-cell.is-active').classed('is-active', false);\n    }\n  }\n}\n","<script>\nimport { GlLoadingIcon, GlAlert } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport AjaxCache from '~/lib/utils/ajax_cache';\nimport ActivityCalendar from '~/pages/users/activity_calendar';\nimport { getVisibleCalendarPeriod } from '../utils';\n\nexport default {\n  i18n: {\n    errorAlertTitle: __('There was an error loading users activity calendar.'),\n    retry: __('Retry'),\n    calendarHint: __('Issues, merge requests, pushes, and comments.'),\n  },\n  components: { GlLoadingIcon, GlAlert },\n  inject: ['userCalendarPath', 'utcOffset'],\n  data() {\n    return {\n      isLoading: true,\n      hasError: false,\n    };\n  },\n  mounted() {\n    this.renderActivityCalendar();\n  },\n  methods: {\n    async renderActivityCalendar() {\n      this.isLoading = true;\n      this.hasError = false;\n\n      try {\n        const data = await AjaxCache.retrieve(this.userCalendarPath);\n\n        this.isLoading = false;\n\n        // Wait for `calendarContainer` to render\n        await this.$nextTick();\n        const monthsAgo = getVisibleCalendarPeriod(this.$refs.calendarContainer);\n\n        // eslint-disable-next-line no-new\n        new ActivityCalendar({\n          container: this.$refs.calendarSvgContainer,\n          timestamps: data,\n          utcOffset: this.utcOffset,\n          firstDayOfWeek: gon.first_day_of_week,\n          monthsAgo,\n          onClickDay: this.handleClickDay,\n        });\n      } catch {\n        this.isLoading = false;\n        this.hasError = true;\n      }\n    },\n    handleClickDay() {\n      // Render activities for specific day.\n      // Blocked by https://gitlab.com/gitlab-org/gitlab/-/issues/378695\n    },\n  },\n};\n</script>\n\n<template>\n  <div ref=\"calendarContainer\" class=\"gl-border-b gl-pb-5\">\n    <gl-loading-icon v-if=\"isLoading\" size=\"sm\" />\n    <gl-alert\n      v-else-if=\"hasError\"\n      :title=\"$options.i18n.errorAlertTitle\"\n      :dismissible=\"false\"\n      variant=\"danger\"\n      :primary-button-text=\"$options.i18n.retry\"\n      @primaryAction=\"renderActivityCalendar\"\n    />\n    <div v-else class=\"gl-relative gl-inline-block gl-w-full\">\n      <div ref=\"calendarSvgContainer\"></div>\n      <p class=\"gl-absolute gl-bottom-0 gl-right-0 gl-mb-0 gl-text-sm gl-text-subtle\">\n        {{ $options.i18n.calendarHint }}\n      </p>\n    </div>\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!./activity_calendar.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!./activity_calendar.vue?vue&type=script&lang=js\"","import {\n  OVERVIEW_CALENDAR_BREAKPOINT,\n  CALENDAR_PERIOD_6_MONTHS,\n  CALENDAR_PERIOD_12_MONTHS,\n} from './constants';\n\nexport const getVisibleCalendarPeriod = (calendarContainer) => {\n  const { width } = calendarContainer.getBoundingClientRect();\n\n  return width < OVERVIEW_CALENDAR_BREAKPOINT\n    ? CALENDAR_PERIOD_6_MONTHS\n    : CALENDAR_PERIOD_12_MONTHS;\n};\n","export const CALENDAR_PERIOD_6_MONTHS = 6;\nexport const CALENDAR_PERIOD_12_MONTHS = 12;\n/* computation based on\n * width = (group + 1) * this.daySizeWithSpace + this.getExtraWidthPadding(group);\n * (see activity_calendar.js)\n */\nexport const OVERVIEW_CALENDAR_BREAKPOINT = 918;\n\nexport const SNIPPET_MAX_LIST_COUNT = 20;\n\nexport const USER_PROFILE_ROUTE_NAME_DEFAULT = 'default';\n","import { render, staticRenderFns } from \"./activity_calendar.vue?vue&type=template&id=ecf1a0c8\"\nimport script from \"./activity_calendar.vue?vue&type=script&lang=js\"\nexport * from \"./activity_calendar.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"calendarContainer\",staticClass:\"gl-border-b gl-pb-5\"},[(_vm.isLoading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}):(_vm.hasError)?_c('gl-alert',{attrs:{\"title\":_vm.$options.i18n.errorAlertTitle,\"dismissible\":false,\"variant\":\"danger\",\"primary-button-text\":_vm.$options.i18n.retry},on:{\"primaryAction\":_vm.renderActivityCalendar}}):_c('div',{staticClass:\"gl-relative gl-inline-block gl-w-full\"},[_c('div',{ref:\"calendarSvgContainer\"}),_vm._v(\" \"),_c('p',{staticClass:\"gl-absolute gl-bottom-0 gl-right-0 gl-mb-0 gl-text-sm gl-text-subtle\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.calendarHint)+\"\\n    \")])])],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!./overview_tab.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!./overview_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlTab, GlLoadingIcon, GlLink } from '@gitlab/ui';\nimport axios from '~/lib/utils/axios_utils';\nimport { createAlert } from '~/alert';\nimport { s__ } from '~/locale';\nimport ProjectsList from '~/vue_shared/components/projects_list/projects_list.vue';\nimport ContributionEvents from '~/contribution_events/components/contribution_events.vue';\nimport ActivityCalendar from './activity_calendar.vue';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Overview'),\n    personalProjects: s__('UserProfile|Personal projects'),\n    activity: s__('UserProfile|Activity'),\n    viewAll: s__('UserProfile|View all'),\n    eventsErrorMessage: s__(\n      'UserProfile|An error occurred loading the activity. Please refresh the page to try again.',\n    ),\n  },\n  components: { GlTab, GlLoadingIcon, GlLink, ActivityCalendar, ProjectsList, ContributionEvents },\n  inject: ['userActivityPath'],\n  props: {\n    personalProjects: {\n      type: Array,\n      required: true,\n    },\n    personalProjectsLoading: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      events: [],\n      eventsLoading: false,\n    };\n  },\n  async mounted() {\n    this.eventsLoading = true;\n\n    try {\n      const { data: events } = await axios.get(this.userActivityPath, {\n        params: { limit: 10 },\n      });\n      this.events = events;\n    } catch (error) {\n      createAlert({ message: this.$options.i18n.eventsErrorMessage, error, captureError: true });\n    } finally {\n      this.eventsLoading = false;\n    }\n  },\n};\n</script>\n\n<template>\n  <gl-tab :title=\"$options.i18n.title\">\n    <div class=\"gl-mt-5 gl-flex gl-flex-wrap\">\n      <div class=\"gl-w-full\" data-testid=\"activity-section\">\n        <div class=\"gl-flex gl-items-center gl-border-b-1 gl-border-b-default gl-border-b-solid\">\n          <h4 class=\"gl-grow\">{{ $options.i18n.activity }}</h4>\n          <gl-link href=\"\">{{ $options.i18n.viewAll }}</gl-link>\n        </div>\n        <activity-calendar />\n        <gl-loading-icon v-if=\"eventsLoading\" class=\"gl-mt-5\" size=\"md\" />\n        <contribution-events v-else :events=\"events\" />\n      </div>\n      <div class=\"gl-w-full\" data-testid=\"personal-projects-section\">\n        <div class=\"gl-flex gl-items-center gl-border-b-1 gl-border-b-default gl-border-b-solid\">\n          <h4 class=\"gl-grow\">{{ $options.i18n.personalProjects }}</h4>\n          <gl-link href=\"\">{{ $options.i18n.viewAll }}</gl-link>\n        </div>\n        <gl-loading-icon v-if=\"personalProjectsLoading\" class=\"gl-mt-5\" size=\"md\" />\n        <projects-list v-else :projects=\"personalProjects\" />\n      </div>\n    </div>\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./overview_tab.vue?vue&type=template&id=e86a96f6\"\nimport script from \"./overview_tab.vue?vue&type=script&lang=js\"\nexport * from \"./overview_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.title}},[_c('div',{staticClass:\"gl-mt-5 gl-flex gl-flex-wrap\"},[_c('div',{staticClass:\"gl-w-full\",attrs:{\"data-testid\":\"activity-section\"}},[_c('div',{staticClass:\"gl-flex gl-items-center gl-border-b-1 gl-border-b-default gl-border-b-solid\"},[_c('h4',{staticClass:\"gl-grow\"},[_vm._v(_vm._s(_vm.$options.i18n.activity))]),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":\"\"}},[_vm._v(_vm._s(_vm.$options.i18n.viewAll))])],1),_vm._v(\" \"),_c('activity-calendar'),_vm._v(\" \"),(_vm.eventsLoading)?_c('gl-loading-icon',{staticClass:\"gl-mt-5\",attrs:{\"size\":\"md\"}}):_c('contribution-events',{attrs:{\"events\":_vm.events}})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-w-full\",attrs:{\"data-testid\":\"personal-projects-section\"}},[_c('div',{staticClass:\"gl-flex gl-items-center gl-border-b-1 gl-border-b-default gl-border-b-solid\"},[_c('h4',{staticClass:\"gl-grow\"},[_vm._v(_vm._s(_vm.$options.i18n.personalProjects))]),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":\"\"}},[_vm._v(_vm._s(_vm.$options.i18n.viewAll))])],1),_vm._v(\" \"),(_vm.personalProjectsLoading)?_c('gl-loading-icon',{staticClass:\"gl-mt-5\",attrs:{\"size\":\"md\"}}):_c('projects-list',{attrs:{\"projects\":_vm.personalProjects}})],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!./activity_tab.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!./activity_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlTab } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Activity'),\n  },\n  components: { GlTab },\n};\n</script>\n\n<template>\n  <gl-tab :title=\"$options.i18n.title\">\n    <!-- placeholder -->\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./activity_tab.vue?vue&type=template&id=be05c5ee\"\nimport script from \"./activity_tab.vue?vue&type=script&lang=js\"\nexport * from \"./activity_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.title}})\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!./groups_tab.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!./groups_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlTab } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Groups'),\n  },\n  components: { GlTab },\n};\n</script>\n\n<template>\n  <gl-tab :title=\"$options.i18n.title\">\n    <!-- placeholder -->\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./groups_tab.vue?vue&type=template&id=62804b53\"\nimport script from \"./groups_tab.vue?vue&type=script&lang=js\"\nexport * from \"./groups_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.title}})\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!./contributed_projects_tab.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!./contributed_projects_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlTab } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Contributed projects'),\n  },\n  components: { GlTab },\n};\n</script>\n\n<template>\n  <gl-tab :title=\"$options.i18n.title\">\n    <!-- placeholder -->\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./contributed_projects_tab.vue?vue&type=template&id=5256ca30\"\nimport script from \"./contributed_projects_tab.vue?vue&type=script&lang=js\"\nexport * from \"./contributed_projects_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.title}})\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!./personal_projects_tab.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!./personal_projects_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlTab } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Personal projects'),\n  },\n  components: { GlTab },\n};\n</script>\n\n<template>\n  <gl-tab :title=\"$options.i18n.title\">\n    <!-- placeholder -->\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./personal_projects_tab.vue?vue&type=template&id=3696b90c\"\nimport script from \"./personal_projects_tab.vue?vue&type=script&lang=js\"\nexport * from \"./personal_projects_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.title}})\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!./starred_projects_tab.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!./starred_projects_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlTab } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Starred projects'),\n  },\n  components: { GlTab },\n};\n</script>\n\n<template>\n  <gl-tab :title=\"$options.i18n.title\">\n    <!-- placeholder -->\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./starred_projects_tab.vue?vue&type=template&id=32644540\"\nimport script from \"./starred_projects_tab.vue?vue&type=script&lang=js\"\nexport * from \"./starred_projects_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.title}})\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!./snippet_row.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!./snippet_row.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatar, GlLink, GlSprintf, GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { s__, sprintf, n__ } from '~/locale';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport TimeAgo from '~/vue_shared/components/time_ago_tooltip.vue';\nimport { SNIPPET_VISIBILITY } from '~/snippets/constants';\n\nexport default {\n  name: 'SnippetRow',\n  i18n: {\n    snippetInfo: s__('UserProfile|%{id} · created %{created} by %{author}'),\n    updatedInfo: s__('UserProfile|updated %{updated}'),\n    blobTooltip: s__('UserProfile|%{count} %{file}'),\n  },\n  components: {\n    GlAvatar,\n    GlLink,\n    GlSprintf,\n    GlIcon,\n    TimeAgo,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    snippet: {\n      type: Object,\n      required: true,\n    },\n    userInfo: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    formattedId() {\n      return `$${getIdFromGraphQLId(this.snippet.id)}`;\n    },\n    profilePath() {\n      return `${gon.relative_url_root || ''}/${this.userInfo.username}`;\n    },\n    blobCount() {\n      return this.snippet.blobs?.nodes?.length || 0;\n    },\n    commentsCount() {\n      return this.snippet.notes?.nodes?.length || 0;\n    },\n    visibilityIcon() {\n      return SNIPPET_VISIBILITY[this.snippet.visibilityLevel]?.icon;\n    },\n    blobTooltip() {\n      return sprintf(this.$options.i18n.blobTooltip, {\n        count: this.blobCount,\n        file: n__('file', 'files', this.blobCount),\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-items-center gl-py-5\">\n    <gl-avatar :size=\"48\" :src=\"userInfo.avatarUrl\" class=\"gl-mr-3\" />\n    <div class=\"gl-flex gl-flex-col gl-items-start\">\n      <gl-link\n        data-testid=\"snippet-url\"\n        :href=\"snippet.webUrl\"\n        class=\"gl-mb-2 gl-font-bold gl-text-default\"\n        >{{ snippet.title }}</gl-link\n      >\n      <span class=\"gl-text-subtle\">\n        <gl-sprintf :message=\"$options.i18n.snippetInfo\">\n          <template #id>\n            <span data-testid=\"snippet-id\">{{ formattedId }}</span>\n          </template>\n          <template #created>\n            <time-ago data-testid=\"snippet-created-at\" :time=\"snippet.createdAt\" />\n          </template>\n          <template #author>\n            <gl-link data-testid=\"snippet-author\" :href=\"profilePath\" class=\"gl-text-default\">{{\n              userInfo.name\n            }}</gl-link>\n          </template>\n        </gl-sprintf>\n      </span>\n    </div>\n    <div class=\"gl-ml-auto gl-flex gl-flex-col gl-items-end\">\n      <div class=\"gl-mb-2 gl-flex gl-items-center\">\n        <span\n          v-gl-tooltip\n          data-testid=\"snippet-blob\"\n          :title=\"blobTooltip\"\n          class=\"gl-mr-4\"\n          :class=\"{ 'gl-opacity-5': blobCount === 0 }\"\n        >\n          <gl-icon name=\"documents\" />\n          <span>{{ blobCount }}</span>\n        </span>\n        <gl-link\n          data-testid=\"snippet-comments\"\n          :href=\"`${snippet.webUrl}#notes`\"\n          class=\"gl-mr-4 gl-text-default\"\n          :class=\"{ 'gl-opacity-5': commentsCount === 0 }\"\n        >\n          <gl-icon name=\"comments\" />\n          <span>{{ commentsCount }}</span>\n        </gl-link>\n        <gl-icon data-testid=\"snippet-visibility\" :name=\"visibilityIcon\" />\n      </div>\n      <span class=\"gl-text-subtle\">\n        <gl-sprintf :message=\"$options.i18n.updatedInfo\">\n          <template #updated>\n            <time-ago data-testid=\"snippet-updated-at\" :time=\"snippet.updatedAt\" />\n          </template>\n        </gl-sprintf>\n      </span>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./snippet_row.vue?vue&type=template&id=706fb22e\"\nimport script from \"./snippet_row.vue?vue&type=script&lang=js\"\nexport * from \"./snippet_row.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-items-center gl-py-5\"},[_c('gl-avatar',{staticClass:\"gl-mr-3\",attrs:{\"size\":48,\"src\":_vm.userInfo.avatarUrl}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-flex-col gl-items-start\"},[_c('gl-link',{staticClass:\"gl-mb-2 gl-font-bold gl-text-default\",attrs:{\"data-testid\":\"snippet-url\",\"href\":_vm.snippet.webUrl}},[_vm._v(_vm._s(_vm.snippet.title))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-subtle\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.snippetInfo},scopedSlots:_vm._u([{key:\"id\",fn:function(){return [_c('span',{attrs:{\"data-testid\":\"snippet-id\"}},[_vm._v(_vm._s(_vm.formattedId))])]},proxy:true},{key:\"created\",fn:function(){return [_c('time-ago',{attrs:{\"data-testid\":\"snippet-created-at\",\"time\":_vm.snippet.createdAt}})]},proxy:true},{key:\"author\",fn:function(){return [_c('gl-link',{staticClass:\"gl-text-default\",attrs:{\"data-testid\":\"snippet-author\",\"href\":_vm.profilePath}},[_vm._v(_vm._s(_vm.userInfo.name))])]},proxy:true}])})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-auto gl-flex gl-flex-col gl-items-end\"},[_c('div',{staticClass:\"gl-mb-2 gl-flex gl-items-center\"},[_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-4\",class:{ 'gl-opacity-5': _vm.blobCount === 0 },attrs:{\"data-testid\":\"snippet-blob\",\"title\":_vm.blobTooltip}},[_c('gl-icon',{attrs:{\"name\":\"documents\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.blobCount))])],1),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-mr-4 gl-text-default\",class:{ 'gl-opacity-5': _vm.commentsCount === 0 },attrs:{\"data-testid\":\"snippet-comments\",\"href\":`${_vm.snippet.webUrl}#notes`}},[_c('gl-icon',{attrs:{\"name\":\"comments\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.commentsCount))])],1),_vm._v(\" \"),_c('gl-icon',{attrs:{\"data-testid\":\"snippet-visibility\",\"name\":_vm.visibilityIcon}})],1),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-subtle\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.updatedInfo},scopedSlots:_vm._u([{key:\"updated\",fn:function(){return [_c('time-ago',{attrs:{\"data-testid\":\"snippet-updated-at\",\"time\":_vm.snippet.updatedAt}})]},proxy:true}])})],1)])],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!./snippets_tab.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!./snippets_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlTab, GlKeysetPagination, GlEmptyState } from '@gitlab/ui';\nimport { s__, __ } from '~/locale';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_USER } from '~/graphql_shared/constants';\nimport { SNIPPET_MAX_LIST_COUNT } from '~/profile/constants';\nimport { isCurrentUser } from '~/lib/utils/common_utils';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport getUserSnippets from '../graphql/get_user_snippets.query.graphql';\nimport SnippetRow from './snippet_row.vue';\n\nexport default {\n  name: 'SnippetsTab',\n  i18n: {\n    title: s__('UserProfile|Snippets'),\n    currentUserEmptyStateTitle: s__('UserProfile|Get started with snippets'),\n    visitorEmptyStateTitle: s__(\"UserProfile|This user doesn't have any snippets\"),\n    emptyStateDescription: s__('UserProfile|Store, share, and embed bits of code and text.'),\n    newSnippet: __('New snippet'),\n    learnMore: __('Learn more'),\n  },\n  components: {\n    GlTab,\n    GlKeysetPagination,\n    GlEmptyState,\n    SnippetRow,\n  },\n  inject: ['userId', 'snippetsEmptyState', 'newSnippetPath'],\n  data() {\n    return {\n      userInfo: {},\n      pageInfo: {},\n      cursor: {\n        first: SNIPPET_MAX_LIST_COUNT,\n        last: null,\n      },\n    };\n  },\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    userSnippets: {\n      query: getUserSnippets,\n      variables() {\n        return {\n          id: convertToGraphQLId(TYPENAME_USER, this.userId),\n          ...this.cursor,\n        };\n      },\n      update(data) {\n        this.userInfo = {\n          avatarUrl: data.user?.avatarUrl,\n          name: data.user?.name,\n          username: data.user?.username,\n        };\n        this.pageInfo = data?.user?.snippets?.pageInfo;\n        return data?.user?.snippets?.nodes || [];\n      },\n      error() {\n        return [];\n      },\n    },\n  },\n  computed: {\n    hasSnippets() {\n      return this.userSnippets?.length;\n    },\n    emptyStateTitle() {\n      return isCurrentUser(this.userId)\n        ? this.$options.i18n.currentUserEmptyStateTitle\n        : this.$options.i18n.visitorEmptyStateTitle;\n    },\n    emptyStateDescription() {\n      return isCurrentUser(this.userId) ? this.$options.i18n.emptyStateDescription : null;\n    },\n  },\n  methods: {\n    isLastSnippet(index) {\n      return index === this.userSnippets.length - 1;\n    },\n    nextPage() {\n      this.cursor = {\n        first: SNIPPET_MAX_LIST_COUNT,\n        last: null,\n        afterToken: this.pageInfo.endCursor,\n      };\n    },\n    prevPage() {\n      this.cursor = {\n        first: null,\n        last: SNIPPET_MAX_LIST_COUNT,\n        beforeToken: this.pageInfo.startCursor,\n      };\n    },\n    helpPagePath,\n  },\n};\n</script>\n\n<template>\n  <gl-tab :title=\"$options.i18n.title\">\n    <template v-if=\"hasSnippets\">\n      <snippet-row\n        v-for=\"(snippet, index) in userSnippets\"\n        :key=\"snippet.id\"\n        :snippet=\"snippet\"\n        :user-info=\"userInfo\"\n        :class=\"{ 'gl-border-b': !isLastSnippet(index) }\"\n      />\n      <div class=\"gl-mt-6 gl-flex gl-justify-center\">\n        <gl-keyset-pagination\n          v-if=\"pageInfo.hasPreviousPage || pageInfo.hasNextPage\"\n          v-bind=\"pageInfo\"\n          @prev=\"prevPage\"\n          @next=\"nextPage\"\n        />\n      </div>\n    </template>\n    <template v-if=\"!hasSnippets\">\n      <gl-empty-state\n        class=\"gl-mt-5\"\n        :svg-path=\"snippetsEmptyState\"\n        :svg-height=\"144\"\n        :title=\"emptyStateTitle\"\n        :description=\"emptyStateDescription\"\n        :primary-button-link=\"newSnippetPath\"\n        :primary-button-text=\"$options.i18n.newSnippet\"\n        :secondary-button-text=\"$options.i18n.learnMore\"\n        :secondary-button-link=\"helpPagePath('user/snippets')\"\n      />\n    </template>\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./snippets_tab.vue?vue&type=template&id=8ffe1826\"\nimport script from \"./snippets_tab.vue?vue&type=script&lang=js\"\nexport * from \"./snippets_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.title}},[(_vm.hasSnippets)?[_vm._l((_vm.userSnippets),function(snippet,index){return _c('snippet-row',{key:snippet.id,class:{ 'gl-border-b': !_vm.isLastSnippet(index) },attrs:{\"snippet\":snippet,\"user-info\":_vm.userInfo}})}),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-6 gl-flex gl-justify-center\"},[(_vm.pageInfo.hasPreviousPage || _vm.pageInfo.hasNextPage)?_c('gl-keyset-pagination',_vm._b({on:{\"prev\":_vm.prevPage,\"next\":_vm.nextPage}},'gl-keyset-pagination',_vm.pageInfo,false)):_vm._e()],1)]:_vm._e(),_vm._v(\" \"),(!_vm.hasSnippets)?[_c('gl-empty-state',{staticClass:\"gl-mt-5\",attrs:{\"svg-path\":_vm.snippetsEmptyState,\"svg-height\":144,\"title\":_vm.emptyStateTitle,\"description\":_vm.emptyStateDescription,\"primary-button-link\":_vm.newSnippetPath,\"primary-button-text\":_vm.$options.i18n.newSnippet,\"secondary-button-text\":_vm.$options.i18n.learnMore,\"secondary-button-link\":_vm.helpPagePath('user/snippets')}})]:_vm._e()],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!./follow.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!./follow.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport {\n  GlAvatarLabeled,\n  GlAvatarLink,\n  GlLoadingIcon,\n  GlPagination,\n  GlEmptyState,\n} from '@gitlab/ui';\nimport { DEFAULT_PER_PAGE } from '~/api';\nimport { isCurrentUser } from '~/lib/utils/common_utils';\n\nexport default {\n  components: {\n    GlAvatarLabeled,\n    GlAvatarLink,\n    GlLoadingIcon,\n    GlPagination,\n    GlEmptyState,\n  },\n  inject: ['followEmptyState', 'userId'],\n  props: {\n    /**\n     * Expected format:\n     *\n     * {\n     *   avatar_url: string;\n     *   id: number;\n     *   name: string;\n     *   state: string;\n     *   username: string;\n     *   web_url: string;\n     * }[]\n     */\n    users: {\n      type: Array,\n      required: true,\n    },\n    loading: {\n      type: Boolean,\n      required: true,\n    },\n    page: {\n      type: Number,\n      required: true,\n    },\n    totalItems: {\n      type: Number,\n      required: true,\n    },\n    perPage: {\n      type: Number,\n      required: false,\n      default: DEFAULT_PER_PAGE,\n    },\n    currentUserEmptyStateTitle: {\n      type: String,\n      required: true,\n    },\n    visitorEmptyStateTitle: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    emptyStateTitle() {\n      return isCurrentUser(this.userId)\n        ? this.currentUserEmptyStateTitle\n        : this.visitorEmptyStateTitle;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-loading-icon v-if=\"loading\" class=\"gl-mt-5\" size=\"md\" />\n  <gl-empty-state\n    v-else-if=\"!users.length\"\n    class=\"gl-mt-5\"\n    :svg-path=\"followEmptyState\"\n    :svg-height=\"144\"\n    :title=\"emptyStateTitle\"\n  />\n  <div v-else>\n    <div class=\"-gl-mx-3 -gl-my-3 gl-flex gl-flex-wrap\">\n      <div v-for=\"user in users\" :key=\"user.id\" class=\"gl-w-full gl-p-3 md:gl-w-1/2 lg:gl-w-1/4\">\n        <gl-avatar-link\n          :href=\"user.web_url\"\n          class=\"js-user-link gl-border gl-w-full gl-rounded-base gl-p-5\"\n          :data-user-id=\"user.id\"\n          :data-username=\"user.username\"\n        >\n          <gl-avatar-labeled\n            :src=\"user.avatar_url\"\n            :size=\"48\"\n            :entity-id=\"user.id\"\n            :entity-name=\"user.name\"\n            :label=\"user.name\"\n            :sub-label=\"user.username\"\n          />\n        </gl-avatar-link>\n      </div>\n    </div>\n    <gl-pagination\n      align=\"center\"\n      class=\"gl-mt-5\"\n      :value=\"page\"\n      :total-items=\"totalItems\"\n      :per-page=\"perPage\"\n      @input=\"$emit('pagination-input', $event)\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./follow.vue?vue&type=template&id=a45ef258\"\nimport script from \"./follow.vue?vue&type=script&lang=js\"\nexport * from \"./follow.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.loading)?_c('gl-loading-icon',{staticClass:\"gl-mt-5\",attrs:{\"size\":\"md\"}}):(!_vm.users.length)?_c('gl-empty-state',{staticClass:\"gl-mt-5\",attrs:{\"svg-path\":_vm.followEmptyState,\"svg-height\":144,\"title\":_vm.emptyStateTitle}}):_c('div',[_c('div',{staticClass:\"-gl-mx-3 -gl-my-3 gl-flex gl-flex-wrap\"},_vm._l((_vm.users),function(user){return _c('div',{key:user.id,staticClass:\"gl-w-full gl-p-3 md:gl-w-1/2 lg:gl-w-1/4\"},[_c('gl-avatar-link',{staticClass:\"js-user-link gl-border gl-w-full gl-rounded-base gl-p-5\",attrs:{\"href\":user.web_url,\"data-user-id\":user.id,\"data-username\":user.username}},[_c('gl-avatar-labeled',{attrs:{\"src\":user.avatar_url,\"size\":48,\"entity-id\":user.id,\"entity-name\":user.name,\"label\":user.name,\"sub-label\":user.username}})],1)],1)}),0),_vm._v(\" \"),_c('gl-pagination',{staticClass:\"gl-mt-5\",attrs:{\"align\":\"center\",\"value\":_vm.page,\"total-items\":_vm.totalItems,\"per-page\":_vm.perPage},on:{\"input\":function($event){return _vm.$emit('pagination-input', $event)}}})],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!./followers_tab.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!./followers_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlTab } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { getUserFollowers } from '~/rest_api';\nimport { createAlert } from '~/alert';\nimport { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';\nimport Follow from './follow.vue';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Followers'),\n    errorMessage: s__(\n      'UserProfile|An error occurred loading the followers. Please refresh the page to try again.',\n    ),\n    currentUserEmptyStateTitle: s__('UserProfile|You do not have any followers'),\n    visitorEmptyStateTitle: s__(\"UserProfile|This user doesn't have any followers\"),\n  },\n  components: {\n    GlBadge,\n    GlTab,\n    Follow,\n  },\n  inject: ['followersCount', 'userId'],\n  data() {\n    return {\n      followers: [],\n      loading: true,\n      totalItems: 0,\n      page: 1,\n    };\n  },\n  watch: {\n    page: {\n      async handler() {\n        this.loading = true;\n\n        try {\n          const { data: followers, headers } = await getUserFollowers(this.userId, {\n            page: this.page,\n          });\n          const { total } = parseIntPagination(normalizeHeaders(headers));\n\n          this.followers = followers;\n          this.totalItems = total;\n        } catch (error) {\n          createAlert({ message: this.$options.i18n.errorMessage, error, captureError: true });\n        } finally {\n          this.loading = false;\n        }\n      },\n      immediate: true,\n    },\n  },\n  methods: {\n    onPaginationInput(page) {\n      this.page = page;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-tab>\n    <template #title>\n      <span>{{ $options.i18n.title }}</span>\n      <gl-badge class=\"gl-ml-2\">{{ followersCount }}</gl-badge>\n    </template>\n    <follow\n      :users=\"followers\"\n      :loading=\"loading\"\n      :page=\"page\"\n      :total-items=\"totalItems\"\n      :current-user-empty-state-title=\"$options.i18n.currentUserEmptyStateTitle\"\n      :visitor-empty-state-title=\"$options.i18n.visitorEmptyStateTitle\"\n      @pagination-input=\"onPaginationInput\"\n    />\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./followers_tab.vue?vue&type=template&id=48641252\"\nimport script from \"./followers_tab.vue?vue&type=script&lang=js\"\nexport * from \"./followers_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',[_vm._v(_vm._s(_vm.$options.i18n.title))]),_vm._v(\" \"),_c('gl-badge',{staticClass:\"gl-ml-2\"},[_vm._v(_vm._s(_vm.followersCount))])]},proxy:true}])},[_vm._v(\" \"),_c('follow',{attrs:{\"users\":_vm.followers,\"loading\":_vm.loading,\"page\":_vm.page,\"total-items\":_vm.totalItems,\"current-user-empty-state-title\":_vm.$options.i18n.currentUserEmptyStateTitle,\"visitor-empty-state-title\":_vm.$options.i18n.visitorEmptyStateTitle},on:{\"pagination-input\":_vm.onPaginationInput}})],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!./following_tab.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!./following_tab.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlTab } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { getUserFollowing } from '~/rest_api';\nimport { createAlert } from '~/alert';\nimport { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';\nimport Follow from './follow.vue';\n\nexport default {\n  i18n: {\n    title: s__('UserProfile|Following'),\n    errorMessage: s__(\n      'UserProfile|An error occurred loading the following. Please refresh the page to try again.',\n    ),\n    currentUserEmptyStateTitle: s__('UserProfile|You are not following other users'),\n    visitorEmptyStateTitle: s__(\"UserProfile|This user isn't following other users\"),\n  },\n  components: {\n    GlBadge,\n    GlTab,\n    Follow,\n  },\n  inject: ['followeesCount', 'userId'],\n  data() {\n    return {\n      following: [],\n      loading: true,\n      totalItems: 0,\n      page: 1,\n    };\n  },\n  watch: {\n    page: {\n      async handler() {\n        this.loading = true;\n\n        try {\n          const { data: following, headers } = await getUserFollowing(this.userId, {\n            page: this.page,\n          });\n\n          const { total } = parseIntPagination(normalizeHeaders(headers));\n\n          this.following = following;\n          this.totalItems = total;\n        } catch (error) {\n          createAlert({ message: this.$options.i18n.errorMessage, error, captureError: true });\n        } finally {\n          this.loading = false;\n        }\n      },\n      immediate: true,\n    },\n  },\n  methods: {\n    onPaginationInput(page) {\n      this.page = page;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-tab>\n    <template #title>\n      <span>{{ $options.i18n.title }}</span>\n      <gl-badge class=\"gl-ml-2\">{{ followeesCount }}</gl-badge>\n    </template>\n    <follow\n      :users=\"following\"\n      :loading=\"loading\"\n      :page=\"page\"\n      :total-items=\"totalItems\"\n      :current-user-empty-state-title=\"$options.i18n.currentUserEmptyStateTitle\"\n      :visitor-empty-state-title=\"$options.i18n.visitorEmptyStateTitle\"\n      @pagination-input=\"onPaginationInput\"\n    />\n  </gl-tab>\n</template>\n","import { render, staticRenderFns } from \"./following_tab.vue?vue&type=template&id=e4a523a0\"\nimport script from \"./following_tab.vue?vue&type=script&lang=js\"\nexport * from \"./following_tab.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',[_vm._v(_vm._s(_vm.$options.i18n.title))]),_vm._v(\" \"),_c('gl-badge',{staticClass:\"gl-ml-2\"},[_vm._v(_vm._s(_vm.followeesCount))])]},proxy:true}])},[_vm._v(\" \"),_c('follow',{attrs:{\"users\":_vm.following,\"loading\":_vm.loading,\"page\":_vm.page,\"total-items\":_vm.totalItems,\"current-user-empty-state-title\":_vm.$options.i18n.currentUserEmptyStateTitle,\"visitor-empty-state-title\":_vm.$options.i18n.visitorEmptyStateTitle},on:{\"pagination-input\":_vm.onPaginationInput}})],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!./profile_tabs.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!./profile_tabs.vue?vue&type=script&lang=js\"","<script>\nimport { GlTabs } from '@gitlab/ui';\n\nimport { getUserProjects } from '~/rest_api';\nimport { s__ } from '~/locale';\nimport { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport { createAlert } from '~/alert';\nimport { VISIBILITY_LEVEL_PUBLIC_STRING } from '~/visibility_level/constants';\nimport OverviewTab from './overview_tab.vue';\nimport ActivityTab from './activity_tab.vue';\nimport GroupsTab from './groups_tab.vue';\nimport ContributedProjectsTab from './contributed_projects_tab.vue';\nimport PersonalProjectsTab from './personal_projects_tab.vue';\nimport StarredProjectsTab from './starred_projects_tab.vue';\nimport SnippetsTab from './snippets/snippets_tab.vue';\nimport FollowersTab from './followers_tab.vue';\nimport FollowingTab from './following_tab.vue';\n\nexport default {\n  name: 'ProfileTabs',\n  i18n: {\n    personalProjectsErrorMessage: s__(\n      'UserProfile|An error occurred loading the personal projects. Please refresh the page to try again.',\n    ),\n  },\n  components: {\n    GlTabs,\n    OverviewTab,\n    ActivityTab,\n    GroupsTab,\n    ContributedProjectsTab,\n    PersonalProjectsTab,\n    StarredProjectsTab,\n    SnippetsTab,\n    FollowersTab,\n    FollowingTab,\n  },\n  tabs: [\n    {\n      key: 'overview',\n      component: OverviewTab,\n    },\n    {\n      key: 'activity',\n      component: ActivityTab,\n    },\n    {\n      key: 'groups',\n      component: GroupsTab,\n    },\n    {\n      key: 'contributedProjects',\n      component: ContributedProjectsTab,\n    },\n    {\n      key: 'personalProjects',\n      component: PersonalProjectsTab,\n    },\n    {\n      key: 'starredProjects',\n      component: StarredProjectsTab,\n    },\n    {\n      key: 'snippets',\n      component: SnippetsTab,\n    },\n    {\n      key: 'followers',\n      component: FollowersTab,\n    },\n    {\n      key: 'following',\n      component: FollowingTab,\n    },\n  ],\n  inject: ['userId'],\n  data() {\n    return {\n      personalProjectsLoading: true,\n      personalProjects: [],\n    };\n  },\n  async mounted() {\n    try {\n      const response = await getUserProjects(this.userId, { per_page: 3 });\n      this.personalProjects = convertObjectPropsToCamelCase(response.data, { deep: true }).map(\n        (project) => {\n          // This API does not return the `visibility` key if user is signed out.\n          // Because this API only returns public projects when signed out, in this case, we can assume\n          // the `visibility` attribute is `public` if it is missing.\n          if (!project.visibility) {\n            return {\n              ...project,\n              visibility: VISIBILITY_LEVEL_PUBLIC_STRING,\n            };\n          }\n\n          return project;\n        },\n      );\n      this.personalProjectsLoading = false;\n    } catch (error) {\n      createAlert({ message: this.$options.i18n.personalProjectsErrorMessage });\n    }\n  },\n};\n</script>\n\n<template>\n  <gl-tabs nav-class=\"gl-bg-gray-10\" content-class=\"gl-bg-white gl-pt-5\" align=\"center\">\n    <component\n      :is=\"component\"\n      v-for=\"{ key, component } in $options.tabs\"\n      :key=\"key\"\n      class=\"container-fluid container-limited gl-text-left\"\n      :personal-projects=\"personalProjects\"\n      :personal-projects-loading=\"personalProjectsLoading\"\n    />\n  </gl-tabs>\n</template>\n","import { render, staticRenderFns } from \"./profile_tabs.vue?vue&type=template&id=ce7350fa\"\nimport script from \"./profile_tabs.vue?vue&type=script&lang=js\"\nexport * from \"./profile_tabs.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tabs',{attrs:{\"nav-class\":\"gl-bg-gray-10\",\"content-class\":\"gl-bg-white gl-pt-5\",\"align\":\"center\"}},_vm._l((_vm.$options.tabs),function({ key, component }){return _c(component,{key:key,tag:\"component\",staticClass:\"container-fluid container-limited gl-text-left\",attrs:{\"personal-projects\":_vm.personalProjects,\"personal-projects-loading\":_vm.personalProjectsLoading}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport VueRouter from 'vue-router';\n\nimport createDefaultClient from '~/lib/graphql';\nimport { USER_PROFILE_ROUTE_NAME_DEFAULT } from '~/profile/constants';\nimport UserProfileApp from './components/app.vue';\nimport UserAchievements from './components/user_achievements.vue';\nimport ProfileTabs from './components/profile_tabs.vue';\n\nVue.use(VueApollo);\nVue.use(VueRouter);\n\nexport const createRouter = () => {\n  const routes = [\n    {\n      name: USER_PROFILE_ROUTE_NAME_DEFAULT,\n      path: '/:user*',\n      component: ProfileTabs,\n    },\n  ];\n\n  return new VueRouter({\n    routes,\n    mode: 'history',\n    base: '/',\n    scrollBehavior(to, from, savedPosition) {\n      return savedPosition || { x: 0, y: 0 };\n    },\n  });\n};\n\nexport const initUserProfileApp = () => {\n  const el = document.getElementById('js-user-profile-app');\n\n  if (!el) return false;\n\n  const {\n    followeesCount,\n    followersCount,\n    userCalendarPath,\n    userActivityPath,\n    utcOffset,\n    userId,\n    snippetsEmptyState,\n    newSnippetPath,\n    followEmptyState,\n  } = el.dataset;\n\n  const apolloProvider = new VueApollo({\n    defaultClient: createDefaultClient(),\n  });\n\n  return new Vue({\n    el,\n    apolloProvider,\n    name: 'ProfileRoot',\n    router: createRouter(),\n    provide: {\n      followeesCount: parseInt(followeesCount, 10),\n      followersCount: parseInt(followersCount, 10),\n      userCalendarPath,\n      userActivityPath,\n      utcOffset,\n      userId,\n      snippetsEmptyState,\n      newSnippetPath,\n      followEmptyState,\n    },\n    render(createElement) {\n      return createElement(UserProfileApp);\n    },\n  });\n};\n\nexport const initUserAchievements = () => {\n  const el = document.getElementById('js-user-achievements');\n\n  if (!el) return false;\n\n  const { rootUrl, userId } = el.dataset;\n\n  const apolloProvider = new VueApollo({\n    defaultClient: createDefaultClient(),\n  });\n\n  return new Vue({\n    el,\n    apolloProvider,\n    name: 'UserAchievements',\n    provide: { rootUrl, userId: parseInt(userId, 10) },\n    render(createElement) {\n      return createElement(UserAchievements);\n    },\n  });\n};\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!./user_actions_app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_actions_app.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdown } from '@gitlab/ui';\nimport { sprintf, s__ } from '~/locale';\nimport AbuseCategorySelector from '~/abuse_reports/components/abuse_category_selector.vue';\n\nexport default {\n  components: {\n    GlDisclosureDropdown,\n    AbuseCategorySelector,\n  },\n  props: {\n    userId: {\n      type: String,\n      required: true,\n    },\n    rssSubscriptionPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    reportedUserId: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n    reportedFromUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      defaultDropdownItems: [\n        {\n          action: this.onUserIdCopy,\n          text: sprintf(this.$options.i18n.userId, { id: this.userId }),\n          extraAttrs: {\n            'data-clipboard-text': this.userId,\n          },\n        },\n      ],\n      open: false,\n    };\n  },\n  computed: {\n    dropdownItems() {\n      const dropdownItems = this.defaultDropdownItems.slice();\n      if (this.rssSubscriptionPath) {\n        dropdownItems.push({\n          href: this.rssSubscriptionPath,\n          text: this.$options.i18n.rssSubscribe,\n          extraAttrs: {\n            'data-testid': 'user-profile-rss-subscription-link',\n          },\n        });\n      }\n      if (this.reportedUserId) {\n        dropdownItems.push({\n          action: () => this.toggleDrawer(true),\n          text: this.$options.i18n.reportToAdmin,\n        });\n      }\n      return dropdownItems;\n    },\n  },\n  methods: {\n    onUserIdCopy() {\n      this.$toast.show(this.$options.i18n.userIdCopied);\n    },\n    toggleDrawer(open) {\n      this.open = open;\n    },\n  },\n  i18n: {\n    userId: s__('UserProfile|Copy user ID: %{id}'),\n    userIdCopied: s__('UserProfile|User ID copied to clipboard'),\n    rssSubscribe: s__('UserProfile|Subscribe'),\n    reportToAdmin: s__('ReportAbuse|Report abuse'),\n  },\n};\n</script>\n\n<template>\n  <span>\n    <gl-disclosure-dropdown\n      data-testid=\"user-profile-actions\"\n      icon=\"ellipsis_v\"\n      category=\"tertiary\"\n      no-caret\n      :items=\"dropdownItems\"\n    />\n    <abuse-category-selector\n      v-if=\"reportedUserId\"\n      :reported-user-id=\"reportedUserId\"\n      :reported-from-url=\"reportedFromUrl\"\n      :show-drawer=\"open\"\n      @close-drawer=\"toggleDrawer(false)\"\n    />\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./user_actions_app.vue?vue&type=template&id=100450fa\"\nimport script from \"./user_actions_app.vue?vue&type=script&lang=js\"\nexport * from \"./user_actions_app.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_c('gl-disclosure-dropdown',{attrs:{\"data-testid\":\"user-profile-actions\",\"icon\":\"ellipsis_v\",\"category\":\"tertiary\",\"no-caret\":\"\",\"items\":_vm.dropdownItems}}),_vm._v(\" \"),(_vm.reportedUserId)?_c('abuse-category-selector',{attrs:{\"reported-user-id\":_vm.reportedUserId,\"reported-from-url\":_vm.reportedFromUrl,\"show-drawer\":_vm.open},on:{\"close-drawer\":function($event){return _vm.toggleDrawer(false)}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '~/lib/utils/axios_utils';\n\nconst DEFAULT_LIMIT = 20;\n\nexport default class UserOverviewBlock {\n  constructor(options = {}) {\n    this.container = options.container;\n    this.url = options.url;\n    this.requestParams = {\n      limit: DEFAULT_LIMIT,\n      ...options.requestParams,\n    };\n    this.postRenderCallback = options.postRenderCallback;\n    this.loadData();\n  }\n\n  loadData() {\n    const containerEl = document.querySelector(this.container);\n    const loadingEl = containerEl.querySelector(`.loading`);\n\n    loadingEl.classList.remove('hide');\n\n    axios\n      .get(this.url, {\n        params: this.requestParams,\n      })\n      .then(({ data }) => this.render(data))\n      .catch(() => loadingEl.classList.add('hide'));\n  }\n\n  render(data) {\n    const { html, count } = data;\n    const containerEl = document.querySelector(this.container);\n    const contentList = containerEl.querySelector('.overview-content-list');\n\n    // eslint-disable-next-line no-unsanitized/property\n    contentList.innerHTML += html;\n\n    const loadingEl = containerEl.querySelector('.loading');\n\n    if (count && count > 0) {\n      containerEl.querySelector('.js-view-all').classList.remove('hide');\n    } else {\n      const nothingHereBlock = containerEl.querySelector('.nothing-here-block');\n\n      if (nothingHereBlock) {\n        nothingHereBlock.classList.add('p-5');\n      }\n    }\n\n    loadingEl.classList.add('hide');\n\n    if (this.postRenderCallback) {\n      this.postRenderCallback.call(this);\n    }\n  }\n}\n","// TODO: Remove this with the removal of the old navigation.\n// See https://gitlab.com/gitlab-org/gitlab/-/issues/435899.\n\nimport $ from 'jquery';\nimport initReadMore from '~/read_more';\nimport Activities from '~/activities';\nimport AjaxCache from '~/lib/utils/ajax_cache';\nimport axios from '~/lib/utils/axios_utils';\nimport { localTimeAgo } from '~/lib/utils/datetime_utility';\nimport { __ } from '~/locale';\nimport ActivityCalendar from './activity_calendar';\nimport UserOverviewBlock from './user_overview_block';\n\nconst CALENDAR_TEMPLATE = `\n  <div class=\"calendar\">\n    <div class=\"js-contrib-calendar gl-overflow-x-auto\"></div>\n    <div class=\"calendar-help gl-flex gl-justify-between gl-ml-auto gl-mr-auto\">\n      <div class=\"calendar-legend\">\n        <svg width=\"80px\" height=\"20px\">\n          <g>\n            <rect width=\"13\" height=\"13\" x=\"2\" y=\"2\" rx=\"2\" ry=\"2\" data-level=\"0\" class=\"user-contrib-cell has-tooltip contrib-legend\" title=\"${__(\n              'No contributions',\n            )}\" data-container=\"body\"></rect>\n            <rect width=\"13\" height=\"13\" x=\"17\" y=\"2\" rx=\"2\" ry=\"2\" data-level=\"1\" class=\"user-contrib-cell has-tooltip contrib-legend\" title=\"${__(\n              '1-9 contributions',\n            )}\" data-container=\"body\"></rect>\n            <rect width=\"13\" height=\"13\" x=\"32\" y=\"2\" rx=\"2\" ry=\"2\" data-level=\"2\" class=\"user-contrib-cell has-tooltip contrib-legend\" title=\"${__(\n              '10-19 contributions',\n            )}\" data-container=\"body\"></rect>\n            <rect width=\"13\" height=\"13\" x=\"47\" y=\"2\" rx=\"2\" ry=\"2\" data-level=\"3\" class=\"user-contrib-cell has-tooltip contrib-legend\" title=\"${__(\n              '20-29 contributions',\n            )}\" data-container=\"body\"></rect>\n            <rect width=\"13\" height=\"13\" x=\"62\" y=\"2\" rx=\"2\" ry=\"2\" data-level=\"4\" class=\"user-contrib-cell has-tooltip contrib-legend\" title=\"${__(\n              '30+ contributions',\n            )}\" data-container=\"body\"></rect>\n          </g>\n        </svg>\n      </div>\n      <div class=\"calendar-hint gl-text-sm gl-text-subtle\"></div>\n    </div>\n  </div>\n`;\n\nconst CALENDAR_PERIOD_12_MONTHS = 12;\n\nconst DEFAULT_LOADER_ACTIONS = [\n  'groups',\n  'contributed',\n  'projects',\n  'starred',\n  'snippets',\n  'followers',\n  'following',\n];\n\nexport default class UserTabs {\n  constructor({ parentEl }) {\n    this.$legacyTabsContainer = $('#js-legacy-tabs-container');\n    this.$parentEl = $(parentEl || document);\n    this.windowLocation = window.location;\n\n    const action = this.$legacyTabsContainer.data('action');\n    const endpoint = this.$legacyTabsContainer.data('endpoint');\n\n    this.bindPaginationEvent();\n    this.loadPage(action, endpoint);\n  }\n\n  bindPaginationEvent() {\n    this.$parentEl.on('click', '.gl-pagination a', (event) => this.changePage(event));\n  }\n\n  changePage(e) {\n    e.preventDefault();\n\n    $('#js-legacy-tabs-container').empty();\n    const endpoint = $(e.target).attr('href');\n    const action = this.$legacyTabsContainer.data('action');\n    this.loadPage(action, endpoint);\n  }\n\n  loadPage(action, endpoint) {\n    if (action === 'activity') {\n      // eslint-disable-next-line no-new\n      new Activities('#js-legacy-tabs-container');\n    } else if (action === 'overview') {\n      this.loadOverviewPage();\n    } else if (DEFAULT_LOADER_ACTIONS.includes(action)) {\n      this.defaultPageLoader(action, endpoint);\n    }\n  }\n\n  defaultPageLoader(action, endpoint) {\n    this.toggleLoading(true);\n\n    const params = action === 'projects' ? { skip_namespace: true } : {};\n\n    return axios\n      .get(endpoint, { params })\n      .then(({ data }) => {\n        const containerSelector = `div#js-legacy-tabs-container`;\n        this.$parentEl.find(containerSelector).html(data.html);\n        localTimeAgo(document.querySelectorAll(`${containerSelector} .js-timeago`));\n\n        this.toggleLoading(false);\n      })\n      .catch(() => {\n        this.toggleLoading(false);\n      });\n  }\n\n  loadOverviewPage() {\n    initReadMore();\n\n    this.loadActivityCalendar();\n\n    UserTabs.renderMostRecentBlocks('#js-legacy-tabs-container .activities-block', {\n      requestParams: { limit: 15 },\n    });\n\n    UserTabs.renderMostRecentBlocks('#js-legacy-tabs-container .projects-block', {\n      requestParams: { limit: 3, skip_pagination: true, skip_namespace: true, card_mode: true },\n    });\n  }\n\n  static renderMostRecentBlocks(container, options) {\n    if ($(container).length === 0) {\n      return;\n    }\n    // eslint-disable-next-line no-new\n    new UserOverviewBlock({\n      container,\n      url: $(`${container} .overview-content-list`).data('href'),\n      ...options,\n      postRenderCallback: () => localTimeAgo(document.querySelectorAll(`${container} .js-timeago`)),\n    });\n  }\n\n  loadActivityCalendar() {\n    const $calendarWrap = this.$parentEl.find('.user-calendar');\n    const calendarPath = $calendarWrap.data('calendarPath');\n\n    AjaxCache.retrieve(calendarPath)\n      .then((data) => UserTabs.renderActivityCalendar(data, $calendarWrap))\n      .catch(() => {\n        const cWrap = $calendarWrap[0];\n        cWrap.querySelector('.gl-spinner').classList.add('invisible');\n        cWrap.querySelector('.user-calendar-error').classList.remove('invisible');\n        cWrap\n          .querySelector('.user-calendar-error .js-retry-load')\n          .addEventListener('click', (e) => {\n            e.preventDefault();\n            cWrap.querySelector('.user-calendar-error').classList.add('invisible');\n            cWrap.querySelector('.gl-spinner').classList.remove('invisible');\n            this.loadActivityCalendar();\n          });\n      });\n  }\n\n  static renderActivityCalendar(data, $calendarWrap) {\n    const calendarActivitiesPath = $calendarWrap.data('calendarActivitiesPath');\n    const utcOffset = $calendarWrap.data('utcOffset');\n    const calendarHint = __('Issues, merge requests, pushes, and comments.');\n\n    $calendarWrap.html(CALENDAR_TEMPLATE);\n\n    $calendarWrap.find('.calendar-hint').text(calendarHint);\n\n    // eslint-disable-next-line no-new\n    new ActivityCalendar({\n      container: '#js-legacy-tabs-container .js-contrib-calendar',\n      activitiesContainer: '#js-legacy-tabs-container .user-calendar-activities',\n      recentActivitiesContainer:\n        '#js-legacy-tabs-container .activities-block .user-activity-content',\n      timestamps: data,\n      calendarActivitiesPath,\n      utcOffset,\n      firstDayOfWeek: gon.first_day_of_week,\n      CALENDAR_PERIOD_12_MONTHS,\n    });\n\n    // Scroll to end\n    const calendarContainer = document.querySelector('.js-contrib-calendar');\n    calendarContainer.scrollLeft = calendarContainer.scrollWidth;\n  }\n\n  toggleLoading(status) {\n    return this.$parentEl.find('.loading').toggleClass('hide', !status);\n  }\n}\n","import $ from 'jquery';\nimport { setCookie } from '~/lib/utils/common_utils';\nimport UserCallout from '~/user_callout';\nimport { initUserAchievements, initUserProfileApp } from '~/profile';\nimport { initUserActionsApp } from '~/users/profile/actions';\nimport UserTabs from './user_tabs';\n\nfunction initUserProfile(action) {\n  // TODO: Remove both Vue and legacy JS tabs code/feature flag uses with the\n  // removal of the old navigation.\n  // See https://gitlab.com/gitlab-org/gitlab/-/issues/435899.\n\n  if (gon.features?.profileTabsVue) {\n    initUserProfileApp();\n  } else {\n    // eslint-disable-next-line no-new\n    new UserTabs({ parentEl: '.user-profile', action });\n  }\n\n  // hide project limit message\n  $('.hide-project-limit-message').on('click', (e) => {\n    e.preventDefault();\n    setCookie('hide_project_limit_message', 'false');\n    $(this).parents('.project-limit-message').remove();\n  });\n}\n\nconst page = $('body').attr('data-page');\nconst action = page.split(':')[1];\ninitUserProfile(action);\ninitUserAchievements();\ninitUserActionsApp();\nnew UserCallout(); // eslint-disable-line no-new\n","import Vue from 'vue';\nimport { GlToast } from '@gitlab/ui';\nimport UserActionsApp from './components/user_actions_app.vue';\n\nexport const initUserActionsApp = () => {\n  const mountingEl = document.querySelector('.js-user-profile-actions');\n\n  if (!mountingEl) return false;\n\n  const { userId, rssSubscriptionPath, reportAbusePath, reportedUserId, reportedFromUrl } =\n    mountingEl.dataset;\n\n  Vue.use(GlToast);\n\n  return new Vue({\n    el: mountingEl,\n    name: 'UserActionsRoot',\n    provide: {\n      reportAbusePath,\n    },\n    render(createElement) {\n      return createElement(UserActionsApp, {\n        props: {\n          userId,\n          rssSubscriptionPath,\n          reportedUserId: reportedUserId ? parseInt(reportedUserId, 10) : null,\n          reportedFromUrl,\n        },\n      });\n    },\n  });\n};\n","/* eslint-disable class-methods-use-this */\n\nimport $ from 'jquery';\nimport { setCookie } from '~/lib/utils/common_utils';\nimport { createAlert } from '~/alert';\nimport { s__ } from '~/locale';\nimport { localTimeAgo } from './lib/utils/datetime_utility';\nimport Pager from './pager';\n\nexport default class Activities {\n  constructor(containerSelector = '') {\n    this.containerSelector = containerSelector;\n    this.containerEl = this.containerSelector\n      ? document.querySelector(this.containerSelector)\n      : undefined;\n    this.$contentList = $('.content_list');\n\n    this.loadActivities();\n\n    $('.event-filter-link').on('click', (e) => {\n      e.preventDefault();\n      this.toggleFilter(e.currentTarget);\n      this.reloadActivities();\n    });\n  }\n\n  loadActivities() {\n    Pager.init({\n      limit: 20,\n      preload: true,\n      prepareData: (data) => data,\n      successCallback: () => this.updateTooltips(),\n      errorCallback: () =>\n        createAlert({\n          message: s__(\n            'Activity|An error occurred while retrieving activity. Reload the page to try again.',\n          ),\n          parent: this.containerEl,\n        }),\n      container: this.containerSelector,\n    });\n  }\n\n  updateTooltips() {\n    localTimeAgo(document.querySelectorAll('.content_list .js-timeago'));\n  }\n\n  reloadActivities() {\n    this.$contentList.html('');\n    this.loadActivities();\n  }\n\n  toggleFilter(sender) {\n    const $sender = $(sender);\n    const filter = $sender.attr('id').split('_')[0];\n\n    $('.event-filter .active').removeClass('active');\n    setCookie('event_filter', filter);\n\n    $sender.closest('li').toggleClass('active');\n  }\n}\n","import { GlLoadingIcon } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { renderVueComponentForLegacyJS } from './render_vue_component_for_legacy_js';\n\nconst defaultValue = (prop) => GlLoadingIcon.props[prop]?.default;\n\n/**\n * Returns a loading icon/spinner element.\n *\n * This should *only* be used in existing legacy areas of code where Vue is not\n * in use, as part of the migration strategy defined in\n * https://gitlab.com/groups/gitlab-org/-/epics/7626.\n *\n * @param {object} props - The props to configure the spinner.\n * @param {boolean} props.inline - Display the spinner inline; otherwise, as a block.\n * @param {string} props.color - The color of the spinner ('dark' or 'light')\n * @param {string} props.size - The size of the spinner ('sm', 'md', 'lg', 'xl')\n * @param {string[]} props.classes - Additional classes to apply to the element.\n * @param {string} props.label - The ARIA label to apply to the spinner.\n * @returns {HTMLElement}\n */\nexport const loadingIconForLegacyJS = ({\n  inline = defaultValue('inline'),\n  color = defaultValue('color'),\n  size = defaultValue('size'),\n  classes = [],\n  label = __('Loading'),\n} = {}) =>\n  renderVueComponentForLegacyJS(GlLoadingIcon, {\n    class: classes,\n    props: {\n      inline,\n      color,\n      size,\n      label,\n    },\n  });\n","/**\n * ReadMore\n *\n * Adds \"read more\" functionality to elements.\n *\n * Specifically, it looks for a trigger, by default \".js-read-more-trigger\", and adds the class\n * \"is-expanded\" to the previous element in order to provide a click to expand functionality.\n *\n * This is useful for long text elements that you would like to truncate, especially for mobile.\n *\n * Example Markup\n * <div class=\"read-more-container\">\n *   <p>Some text that should be long enough to have to truncate within a specified container.</p>\n *   <p>This text will not appear in the container, as only the first line can be truncated.</p>\n *   <p>This should also not appear, if everything is working correctly!</p>\n * </div>\n * <button class=\"js-read-more-trigger\">Read more</button>\n *\n * If data-read-more-height is present it will use it to determine if the button should be shown or not.\n *\n */\nexport default function initReadMore(triggerSelector = '.js-read-more-trigger') {\n  const triggerEls = document.querySelectorAll(triggerSelector);\n\n  if (!triggerEls) return;\n\n  triggerEls.forEach((triggerEl) => {\n    const targetEl = triggerEl.previousElementSibling;\n\n    if (!targetEl) {\n      return;\n    }\n\n    if (Object.hasOwn(triggerEl.parentNode.dataset, 'readMoreHeight')) {\n      const parentEl = triggerEl.parentNode;\n      const readMoreHeight = Number(parentEl.dataset.readMoreHeight);\n      const readMoreContent = parentEl.querySelector('.read-more-content');\n\n      // If element exists in readMoreContent expand content automatically\n      // and scroll to element\n      if (window.location.hash) {\n        const targetId = window.location.href.split('#')[1];\n        const hashTargetEl = readMoreContent.querySelector(`#user-content-${targetId}`);\n\n        if (hashTargetEl) {\n          targetEl.classList.add('is-expanded');\n          triggerEl.remove();\n          window.addEventListener('load', () => {\n            // Trigger scrollTo event\n            hashTargetEl.click();\n          });\n          return;\n        }\n      }\n\n      if (readMoreContent) {\n        parentEl.style.setProperty('--read-more-height', `${readMoreHeight}px`);\n      }\n\n      if (readMoreHeight > readMoreContent.clientHeight) {\n        readMoreContent.classList.remove('read-more-content--has-scrim');\n        triggerEl.remove();\n        return;\n      }\n\n      triggerEl.classList.remove('gl-hidden');\n    }\n\n    triggerEl.addEventListener(\n      'click',\n      () => {\n        targetEl.classList.add('is-expanded');\n        triggerEl.remove();\n      },\n      { once: true },\n    );\n  });\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import $ from 'jquery';\nimport { getCookie, setCookie } from '~/lib/utils/common_utils';\n\nexport default class UserCallout {\n  constructor(options = {}) {\n    this.options = options;\n\n    const className = this.options.className || 'user-callout';\n\n    this.userCalloutBody = $(`.${className}`);\n    this.cookieName = this.userCalloutBody.data('uid');\n    this.isCalloutDismissed = getCookie(this.cookieName);\n    this.init();\n  }\n\n  init() {\n    if (!this.isCalloutDismissed || this.isCalloutDismissed === 'false') {\n      this.userCalloutBody.find('.js-close-callout').on('click', (e) => this.dismissCallout(e));\n    }\n  }\n\n  dismissCallout(e) {\n    const $currentTarget = $(e.currentTarget);\n    const cookieOptions = {};\n\n    if (!$currentTarget.hasClass('js-close-session')) {\n      cookieOptions.expires = 365;\n    }\n    if (this.options.setCalloutPerProject) {\n      cookieOptions.path = this.userCalloutBody.data('projectPath');\n    }\n\n    setCookie(this.cookieName, 'true', cookieOptions);\n\n    if ($currentTarget.hasClass('close') || $currentTarget.hasClass('js-close')) {\n      this.userCalloutBody.remove();\n    }\n  }\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import Vue from 'vue';\n\n/**\n * Returns the root element of the given Vue component.\n *\n * This should *only* be used in existing legacy areas of code where Vue is not\n * in use. For example, as part of the migration strategy defined in\n * https://gitlab.com/groups/gitlab-org/-/epics/7626.\n *\n * @param {Object} Component - The Vue component to render.\n * @param {Object} data - The data object to pass to the render function.\n * @param {string|Array} children - The children to render in the default slot\n *     of the component.\n * @returns {HTMLElement}\n */\nexport const renderVueComponentForLegacyJS = (Component, data, children) => {\n  const vm = new Vue({\n    render(h) {\n      return h(Component, data, children);\n    },\n  });\n\n  vm.$mount();\n\n  // Ensure it's rendered\n  vm.$forceUpdate();\n\n  const el = vm.$el.cloneNode(true);\n  vm.$destroy();\n\n  return el;\n};\n","import { extend, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Helper methods ---\n\nconst computeJustifyContent = value => {\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return `justify-content-${value}`;\n};\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  align: makeProp(PROP_TYPE_STRING),\n  // Set to `true` if placing in a card header\n  cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  fill: makeProp(PROP_TYPE_BOOLEAN, false),\n  justified: makeProp(PROP_TYPE_BOOLEAN, false),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'ul')\n}, NAME_NAV);\n\n// --- Main component ---\n\n// @vue/component\nconst BNav = /*#__PURE__*/extend({\n  name: NAME_NAV,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tabs,\n      pills,\n      align,\n      cardHeader\n    } = props;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'nav',\n      class: {\n        'nav-tabs': tabs,\n        'nav-pills': pills && !tabs,\n        'card-header-tabs': cardHeader && tabs,\n        'card-header-pills': cardHeader && pills && !tabs,\n        'nav-fill': props.fill,\n        'nav-justified': props.justified,\n        [computeJustifyContent(align)]: align,\n        small: props.small\n      }\n    }), children);\n  }\n});\n\nexport { BNav, props };\n","import { extend, COMPONENT_UID_KEY, REF_FOR_KEY } from '../../vue';\nimport { NAME_TAB_BUTTON_HELPER, NAME_TABS } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_PREV, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_CHANGED, EVENT_NAME_ACTIVATE_TAB } from '../../constants/events';\nimport { CODE_SPACE, CODE_UP, CODE_LEFT, CODE_HOME, CODE_DOWN, CODE_RIGHT, CODE_END } from '../../constants/key-codes';\nimport { PROP_TYPE_NUMBER, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE, SLOT_NAME_TABS_START, SLOT_NAME_TABS_END, SLOT_NAME_EMPTY } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { props as props$1, BNav } from '../nav/nav';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER\n});\n\n// --- Helper methods ---\n\n// Filter function to filter out disabled tabs\nconst notDisabled = tab => !tab.disabled;\n\n// --- Helper components ---\n\n// @vue/component\nconst BVTabButton = /*#__PURE__*/extend({\n  name: NAME_TAB_BUTTON_HELPER,\n  inject: {\n    getBvTabs: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  props: {\n    controls: makeProp(PROP_TYPE_STRING),\n    id: makeProp(PROP_TYPE_STRING),\n    noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n    posInSet: makeProp(PROP_TYPE_NUMBER),\n    setSize: makeProp(PROP_TYPE_NUMBER),\n    // Reference to the child <b-tab> instance\n    tab: makeProp(),\n    tabIndex: makeProp(PROP_TYPE_NUMBER)\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    }\n  },\n  methods: {\n    focus() {\n      attemptFocus(this.$refs.link);\n    },\n    handleEvent(event) {\n      /* istanbul ignore next */\n      if (this.tab.disabled) {\n        return;\n      }\n      const {\n        type,\n        keyCode,\n        shiftKey\n      } = event;\n      if (type === 'click') {\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n        // For ARIA tabs the SPACE key will also trigger a click/select\n        // Even with keyboard navigation disabled, SPACE should \"click\" the button\n        // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && !this.noKeyNav) {\n        // For keyboard navigation\n        if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_HOME) {\n            this.$emit(EVENT_NAME_FIRST, event);\n          } else {\n            this.$emit(EVENT_NAME_PREV, event);\n          }\n        } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_END) {\n            this.$emit(EVENT_NAME_LAST, event);\n          } else {\n            this.$emit(EVENT_NAME_NEXT, event);\n          }\n        }\n      }\n    }\n  },\n  render(h) {\n    const {\n      id,\n      tabIndex,\n      setSize,\n      posInSet,\n      controls,\n      handleEvent\n    } = this;\n    const {\n      title,\n      localActive,\n      disabled,\n      titleItemClass,\n      titleLinkClass,\n      titleLinkAttributes\n    } = this.tab;\n    const $link = h(BLink, {\n      staticClass: 'nav-link',\n      class: [{\n        active: localActive && !disabled,\n        disabled\n      }, titleLinkClass,\n      // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n      localActive ? this.bvTabs.activeNavItemClass : null],\n      props: {\n        disabled\n      },\n      attrs: {\n        ...titleLinkAttributes,\n        id,\n        role: 'tab',\n        // Roving tab index when keynav enabled\n        tabindex: tabIndex,\n        'aria-selected': localActive && !disabled ? 'true' : 'false',\n        'aria-setsize': setSize,\n        'aria-posinset': posInSet,\n        'aria-controls': controls\n      },\n      on: {\n        click: handleEvent,\n        keydown: handleEvent\n      },\n      ref: 'link'\n    }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n    return h('li', {\n      staticClass: 'nav-item',\n      class: [titleItemClass],\n      attrs: {\n        role: 'presentation'\n      }\n    }, [$link]);\n  }\n});\n\n// --- Props ---\n\nconst navProps = omit(props$1, ['tabs', 'cardHeader']);\nconst props = makePropsConfigurable(sortKeys({\n  ...props$2,\n  ...modelProps,\n  ...navProps,\n  // Only applied to the currently active `<b-nav-item>`\n  activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Only applied to the currently active `<b-tab>`\n  // This prop is sniffed by the `<b-tab>` child\n  activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Synonym for 'bottom'\n  end: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This prop is sniffed by the `<b-tab>` child\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_TABS);\n\n// --- Main component ---\n\n// @vue/component\nconst BTabs = /*#__PURE__*/extend({\n  name: NAME_TABS,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTabs: () => this\n    };\n  },\n  props,\n  data() {\n    return {\n      // Index of current tab\n      currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n      // Array of direct child `<b-tab>` instances, in DOM order\n      tabs: [],\n      // Array of child instances registered (for triggering reactive updates)\n      registeredTabs: []\n    };\n  },\n  computed: {\n    fade() {\n      // This computed prop is sniffed by the tab child\n      return !this.noFade;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        newValue = toInteger(newValue, -1);\n        oldValue = toInteger(oldValue, 0);\n        const $tab = this.tabs[newValue];\n        if ($tab && !$tab.disabled) {\n          this.activateTab($tab);\n        } else {\n          // Try next or prev tabs\n          if (newValue < oldValue) {\n            this.previousTab();\n          } else {\n            this.nextTab();\n          }\n        }\n      }\n    },\n    currentTab(newValue) {\n      let index = -1;\n\n      // Ensure only one tab is active at most\n      this.tabs.forEach(($tab, i) => {\n        if (i === newValue && !$tab.disabled) {\n          $tab.localActive = true;\n          index = i;\n        } else {\n          $tab.localActive = false;\n        }\n      });\n\n      // Update the v-model\n      this.$emit(MODEL_EVENT_NAME, index);\n    },\n    // If tabs added, removed, or re-ordered, we emit a `changed` event\n    tabs(newValue, oldValue) {\n      // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n      // if no explicit ID is provided, causing duplicate emits\n      if (!looseEqual(newValue.map($tab => $tab[COMPONENT_UID_KEY]), oldValue.map($tab => $tab[COMPONENT_UID_KEY]))) {\n        // In a `$nextTick()` to ensure `currentTab` has been set first\n        this.$nextTick(() => {\n          // We emit shallow copies of the new and old arrays of tabs,\n          // to prevent users from potentially mutating the internal arrays\n          this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n        });\n      }\n    },\n    // Each `<b-tab>` will register/unregister itself\n    // We use this to detect when tabs are added/removed\n    // to trigger the update of the tabs\n    registeredTabs() {\n      this.updateTabs();\n    }\n  },\n  created() {\n    // Create private non-reactive props\n    this.$_observer = null;\n  },\n  mounted() {\n    this.setObserver(true);\n  },\n  beforeDestroy() {\n    this.setObserver(false);\n    // Ensure no references to child instances exist\n    this.tabs = [];\n  },\n  methods: {\n    registerTab($tab) {\n      if (!arrayIncludes(this.registeredTabs, $tab)) {\n        this.registeredTabs.push($tab);\n      }\n    },\n    unregisterTab($tab) {\n      this.registeredTabs = this.registeredTabs.slice().filter($t => $t !== $tab);\n    },\n    // DOM observer is needed to detect changes in order of tabs\n    setObserver() {\n      let on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n      if (on) {\n        /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n        const handler = () => {\n          this.$nextTick(() => {\n            requestAF(() => {\n              this.updateTabs();\n            });\n          });\n        };\n\n        // Watch for changes to `<b-tab>` sub components\n        this.$_observer = observeDom(this.$refs.content, handler, {\n          childList: true,\n          subtree: false,\n          attributes: true,\n          attributeFilter: ['id']\n        });\n      }\n    },\n    getTabs() {\n      const $tabs = this.registeredTabs;\n      // Dropped intentionally\n      // .filter(\n      //   $tab => $tab.$children.filter($t => $t && $t._isTab).length === 0\n      // )\n\n      // DOM Order of Tabs\n      let order = [];\n      /* istanbul ignore next: too difficult to test */\n      if (IS_BROWSER && $tabs.length > 0) {\n        // We rely on the DOM when mounted to get the \"true\" order of the `<b-tab>` children\n        // `querySelectorAll()` always returns elements in document order, regardless of\n        // order specified in the selector\n        const selector = $tabs.map($tab => `#${$tab.safeId()}`).join(', ');\n        order = selectAll(selector, this.$el).map($el => $el.id).filter(identity);\n      }\n\n      // Stable sort keeps the original order if not found in the `order` array,\n      // which will be an empty array before mount\n      return stableSort($tabs, (a, b) => order.indexOf(a.safeId()) - order.indexOf(b.safeId()));\n    },\n    updateTabs() {\n      const $tabs = this.getTabs();\n\n      // Find last active non-disabled tab in current tabs\n      // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n      let tabIndex = $tabs.indexOf($tabs.slice().reverse().find($tab => $tab.localActive && !$tab.disabled));\n\n      // Else try setting to `currentTab`\n      if (tabIndex < 0) {\n        const {\n          currentTab\n        } = this;\n        if (currentTab >= $tabs.length) {\n          // Handle last tab being removed, so find the last non-disabled tab\n          tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n        } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n          // Current tab is not disabled\n          tabIndex = currentTab;\n        }\n      }\n\n      // Else find first non-disabled tab in current tabs\n      if (tabIndex < 0) {\n        tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n      }\n\n      // Ensure only one tab is active at a time\n      $tabs.forEach(($tab, index) => {\n        $tab.localActive = index === tabIndex;\n      });\n      this.tabs = $tabs;\n      this.currentTab = tabIndex;\n    },\n    // Find a button that controls a tab, given the tab reference\n    // Returns the button vm instance\n    getButtonForTab($tab) {\n      return (this.$refs.buttons || []).find($btn => $btn.tab === $tab);\n    },\n    // Force a button to re-render its content, given a `<b-tab>` instance\n    // Called by `<b-tab>` on `update()`\n    updateButton($tab) {\n      const $button = this.getButtonForTab($tab);\n      if ($button && $button.$forceUpdate) {\n        $button.$forceUpdate();\n      }\n    },\n    // Activate a tab given a `<b-tab>` instance\n    // Also accessed by `<b-tab>`\n    activateTab($tab) {\n      const {\n        currentTab,\n        tabs: $tabs\n      } = this;\n      let result = false;\n      if ($tab) {\n        const index = $tabs.indexOf($tab);\n        if (index !== currentTab && index > -1 && !$tab.disabled) {\n          const tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n            cancelable: true,\n            vueTarget: this,\n            componentId: this.safeId()\n          });\n          this.$emit(tabEvent.type, index, currentTab, tabEvent);\n          if (!tabEvent.defaultPrevented) {\n            this.currentTab = index;\n            result = true;\n          }\n        }\n      }\n\n      // Couldn't set tab, so ensure v-model is up to date\n      /* istanbul ignore next: should rarely happen */\n      if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n        this.$emit(MODEL_EVENT_NAME, currentTab);\n      }\n      return result;\n    },\n    // Deactivate a tab given a `<b-tab>` instance\n    // Accessed by `<b-tab>`\n    deactivateTab($tab) {\n      if ($tab) {\n        // Find first non-disabled tab that isn't the one being deactivated\n        // If no tabs are available, then don't deactivate current tab\n        return this.activateTab(this.tabs.filter($t => $t !== $tab).find(notDisabled));\n      }\n      /* istanbul ignore next: should never/rarely happen */\n      return false;\n    },\n    // Focus a tab button given its `<b-tab>` instance\n    focusButton($tab) {\n      // Wrap in `$nextTick()` to ensure DOM has completed rendering\n      this.$nextTick(() => {\n        attemptFocus(this.getButtonForTab($tab));\n      });\n    },\n    // Emit a click event on a specified `<b-tab>` component instance\n    emitTabClick(tab, event) {\n      if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n        tab.$emit(EVENT_NAME_CLICK, event);\n      }\n    },\n    // Click handler\n    clickTab($tab, event) {\n      this.activateTab($tab);\n      this.emitTabClick($tab, event);\n    },\n    // Move to first non-disabled tab\n    firstTab(focus) {\n      const $tab = this.tabs.find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to previous non-disabled tab\n    previousTab(focus) {\n      const currentIndex = mathMax(this.currentTab, 0);\n      const $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to next non-disabled tab\n    nextTab(focus) {\n      const currentIndex = mathMax(this.currentTab, -1);\n      const $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to last non-disabled tab\n    lastTab(focus) {\n      const $tab = this.tabs.slice().reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    }\n  },\n  render(h) {\n    const {\n      align,\n      end,\n      fill,\n      firstTab,\n      justified,\n      lastTab,\n      nextTab,\n      noKeyNav,\n      noNavStyle,\n      pills,\n      previousTab,\n      small,\n      tabs: $tabs\n    } = this;\n\n    // Currently active tab\n    const $activeTab = $tabs.find($tab => $tab.localActive && !$tab.disabled);\n\n    // Tab button to allow focusing when no active tab found (keynav only)\n    const $fallbackTab = $tabs.find($tab => !$tab.disabled);\n\n    // For each `<b-tab>` found create the tab buttons\n    const $buttons = $tabs.map(($tab, index) => {\n      const {\n        safeId\n      } = $tab;\n\n      // Ensure at least one tab button is focusable when keynav enabled (if possible)\n      let tabIndex = null;\n      if (!noKeyNav) {\n        // Buttons are not in tab index unless active, or a fallback tab\n        tabIndex = -1;\n        if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n          // Place tab button in tab sequence\n          tabIndex = null;\n        }\n      }\n      return h(BVTabButton, {\n        props: {\n          controls: safeId ? safeId() : null,\n          id: $tab.controlledBy || (safeId ? safeId(`_BV_tab_button_`) : null),\n          noKeyNav,\n          posInSet: index + 1,\n          setSize: $tabs.length,\n          tab: $tab,\n          tabIndex\n        },\n        on: {\n          [EVENT_NAME_CLICK]: event => {\n            this.clickTab($tab, event);\n          },\n          [EVENT_NAME_FIRST]: firstTab,\n          [EVENT_NAME_PREV]: previousTab,\n          [EVENT_NAME_NEXT]: nextTab,\n          [EVENT_NAME_LAST]: lastTab\n        },\n        key: $tab[COMPONENT_UID_KEY] || index,\n        ref: 'buttons',\n        // Needed to make `this.$refs.buttons` an array\n        [REF_FOR_KEY]: true\n      });\n    });\n    let $nav = h(BNav, {\n      class: this.navClass,\n      attrs: {\n        role: 'tablist',\n        id: this.safeId('_BV_tab_controls_')\n      },\n      props: {\n        fill,\n        justified,\n        align,\n        tabs: !noNavStyle && !pills,\n        pills: !noNavStyle && pills,\n        small\n      },\n      ref: 'nav'\n    }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n    $nav = h('div', {\n      class: this.navWrapperClass,\n      key: 'bv-tabs-nav'\n    }, [$nav]);\n    const $children = this.normalizeSlot() || [];\n    let $empty = h();\n    if ($children.length === 0) {\n      $empty = h('div', {\n        class: ['tab-pane', 'active'],\n        key: 'bv-empty-tab'\n      }, this.normalizeSlot(SLOT_NAME_EMPTY));\n    }\n    const $content = h('div', {\n      staticClass: 'tab-content',\n      class: this.contentClass,\n      attrs: {\n        id: this.safeId('_BV_tab_container_')\n      },\n      key: 'bv-content',\n      ref: 'content'\n    }, [$children, $empty]);\n\n    // Render final output\n    return h(this.tag, {\n      staticClass: 'tabs',\n      attrs: {\n        id: this.safeId()\n      }\n    }, [end ? $content : h(), $nav, end ? h() : $content]);\n  }\n});\n\nexport { BTabs, props };\n","import { BTabs } from '../../../../vendor/bootstrap-vue/src/components/tabs/tabs';\nimport { tabsButtonDefaults } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst validatorHelper = obj => Object.keys(obj).every(val => val === 'text' || val === 'attributes');\nvar script = {\n  name: 'GlTabs',\n  components: {\n    BTabs,\n    GlButton\n  },\n  inheritAttrs: false,\n  props: {\n    actionPrimary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionSecondary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionTertiary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    contentClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    navClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    justified: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Sync active tab with query string parameters. Allows for deep linking into specific tabs.\n     */\n    syncActiveTabWithQueryParams: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Name to use for query string parameter.\n     */\n    queryParamName: {\n      type: String,\n      required: false,\n      default: 'tab'\n    },\n    value: {\n      type: Number,\n      required: false,\n      default: 0\n    }\n  },\n  data() {\n    return {\n      activeTabIndex: 0\n    };\n  },\n  computed: {\n    hasActions() {\n      return [this.actionPrimary, this.actionSecondary, this.actionTertiary].some(Boolean);\n    },\n    listeners() {\n      return {\n        ...this.$listeners,\n        input: this.handleInput\n      };\n    }\n  },\n  watch: {\n    value: {\n      handler(newValue) {\n        if (this.activeTabIndex !== newValue) {\n          this.activeTabIndex = newValue;\n        }\n      },\n      immediate: true\n    }\n  },\n  mounted() {\n    if (this.syncActiveTabWithQueryParams) {\n      this.syncActiveTabFromQueryParams();\n      window.addEventListener('popstate', this.syncActiveTabFromQueryParams);\n    }\n\n    // Because we are manually binding `value` attribute to `b-tabs` the `input`\n    // event is no longer automatically fired when the component is mounted.\n    // To maintain parity with original `b-tabs` functionality\n    // we manually fire the `input` event when the component is mounted.\n    this.$emit('input', this.activeTabIndex);\n  },\n  destroyed() {\n    window.removeEventListener('popstate', this.syncActiveTabFromQueryParams);\n  },\n  methods: {\n    buttonBinding(prop, name) {\n      if (!prop.attributes) {\n        return tabsButtonDefaults[name];\n      }\n      return prop.attributes;\n    },\n    primary() {\n      this.$emit('primary');\n    },\n    secondary() {\n      this.$emit('secondary');\n    },\n    tertiary() {\n      this.$emit('tertiary');\n    },\n    /**\n     * When the query parameter is updated, update the active tab to match.\n     */\n    async syncActiveTabFromQueryParams() {\n      await this.$nextTick();\n      const queryParamValue = this.getQueryParamValue();\n      const tabIndexToActivate = this.getTabs().findIndex((tab, tabIndex) => this.getTabQueryParamValue(tabIndex) === queryParamValue);\n      this.activeTabIndex = tabIndexToActivate !== -1 ? tabIndexToActivate : 0;\n    },\n    /**\n     * Returns a list of all <b-tab> instances associated with this tab control.\n     */\n    getTabs() {\n      return this.$refs.bTabs.getTabs();\n    },\n    /**\n     * Get the value of the query param as defined by the `queryParamName` prop.\n     */\n    getQueryParamValue() {\n      const searchParams = new URLSearchParams(window.location.search);\n      return searchParams.get(this.queryParamName);\n    },\n    /**\n     * Set the value of the query param as defined by the `queryParamName` prop.\n     * This method does nothing if the query param is already up to date.\n     */\n    setQueryParamValueIfNecessary(tabIndex) {\n      const currentQueryParamValue = this.getQueryParamValue();\n      const newQueryParamValue = this.getTabQueryParamValue(tabIndex);\n\n      // If the current query parameter is already up-to-date,\n      // avoid creating a duplicate history entry.\n      if (tabIndex === 0 && !currentQueryParamValue || tabIndex !== 0 && currentQueryParamValue === newQueryParamValue) {\n        return;\n      }\n      const searchParams = new URLSearchParams(window.location.search);\n      searchParams.set(this.queryParamName, newQueryParamValue);\n      window.history.pushState({}, '', `${window.location.pathname}?${searchParams.toString()}`);\n    },\n    /**\n     * Returns the query param value for a tab.\n     * Defaults to the tab index unless the `query-param-value` attribute is set.\n     */\n    getTabQueryParamValue(tabIndex) {\n      const tab = this.getTabs()[tabIndex];\n      return (tab === null || tab === void 0 ? void 0 : tab.$attrs['query-param-value']) || tabIndex.toString();\n    },\n    /**\n     * Event handler for `input` event.\n     */\n    handleInput(tabIndex) {\n      this.$emit('input', tabIndex);\n      this.activeTabIndex = tabIndex;\n      if (this.syncActiveTabWithQueryParams) {\n        this.setQueryParamValueIfNecessary(tabIndex);\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',_vm._g(_vm._b({ref:\"bTabs\",staticClass:\"gl-tabs\",attrs:{\"no-nav-style\":true,\"no-fade\":true,\"active-nav-item-class\":\"gl-tab-nav-item-active\",\"content-class\":[_vm.contentClass, 'gl-tab-content'],\"nav-class\":[_vm.navClass, 'gl-tabs-nav'],\"justified\":_vm.justified,\"value\":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:\"tabs-start\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-start\",attrs:{\"data-testid\":\"actions-tabs-start\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null,(_vm.hasActions)?{key:\"tabs-end\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-end\",attrs:{\"data-testid\":\"actions-tabs-end\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null],null,true)},'b-tabs',_vm.$attrs,false),_vm.listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","import { extend } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition';\n\n// --- Constants ---\n\nconst MODEL_PROP_NAME_ACTIVE = 'active';\nconst MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE;\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  [MODEL_PROP_NAME_ACTIVE]: makeProp(PROP_TYPE_BOOLEAN, false),\n  buttonId: makeProp(PROP_TYPE_STRING),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  title: makeProp(PROP_TYPE_STRING),\n  // Sniffed by `<b-tabs>` and added to nav `li.nav-item`\n  titleItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  titleLinkAttributes: makeProp(PROP_TYPE_OBJECT),\n  // Sniffed by `<b-tabs>` and added to nav `a.nav-link`\n  titleLinkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}), NAME_TAB);\n\n// --- Main component ---\n\n// @vue/component\nconst BTab = /*#__PURE__*/extend({\n  name: NAME_TAB,\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    getBvTabs: {\n      default: () => () => ({})\n    }\n  },\n  props,\n  data() {\n    return {\n      localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n    };\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    },\n    // For parent sniffing of child\n    _isTab() {\n      return true;\n    },\n    tabClasses() {\n      const {\n        localActive: active,\n        disabled\n      } = this;\n      return [{\n        active,\n        disabled,\n        'card-body': this.bvTabs.card && !this.noBody\n      },\n      // Apply <b-tabs> `activeTabClass` styles when this tab is active\n      active ? this.bvTabs.activeTabClass : null];\n    },\n    controlledBy() {\n      return this.buttonId || this.safeId('__BV_tab_button__');\n    },\n    computedNoFade() {\n      return !(this.bvTabs.fade || false);\n    },\n    computedLazy() {\n      return this.bvTabs.lazy || this.lazy;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME_ACTIVE](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        if (newValue) {\n          // If activated post mount\n          this.activate();\n        } else {\n          /* istanbul ignore next */\n          if (!this.deactivate()) {\n            // Tab couldn't be deactivated, so we reset the synced active prop\n            // Deactivation will fail if no other tabs to activate\n            this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n          }\n        }\n      }\n    },\n    disabled(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        const {\n          firstTab\n        } = this.bvTabs;\n        if (newValue && this.localActive && firstTab) {\n          this.localActive = false;\n          firstTab();\n        }\n      }\n    },\n    localActive(newValue) {\n      // Make `active` prop work with `.sync` modifier\n      this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n    }\n  },\n  mounted() {\n    // Inform `<b-tabs>` of our presence\n    this.registerTab();\n  },\n  updated() {\n    // Force the tab button content to update (since slots are not reactive)\n    // Only done if we have a title slot, as the title prop is reactive\n    const {\n      updateButton\n    } = this.bvTabs;\n    if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n      updateButton(this);\n    }\n  },\n  beforeDestroy() {\n    // Inform `<b-tabs>` of our departure\n    this.unregisterTab();\n  },\n  methods: {\n    // Private methods\n    registerTab() {\n      // Inform `<b-tabs>` of our presence\n      const {\n        registerTab\n      } = this.bvTabs;\n      if (registerTab) {\n        registerTab(this);\n      }\n    },\n    unregisterTab() {\n      // Inform `<b-tabs>` of our departure\n      const {\n        unregisterTab\n      } = this.bvTabs;\n      if (unregisterTab) {\n        unregisterTab(this);\n      }\n    },\n    // Public methods\n    activate() {\n      // Not inside a `<b-tabs>` component or tab is disabled\n      const {\n        activateTab\n      } = this.bvTabs;\n      return activateTab && !this.disabled ? activateTab(this) : false;\n    },\n    deactivate() {\n      // Not inside a `<b-tabs>` component or not active to begin with\n      const {\n        deactivateTab\n      } = this.bvTabs;\n      return deactivateTab && this.localActive ? deactivateTab(this) : false;\n    }\n  },\n  render(h) {\n    const {\n      localActive\n    } = this;\n    const $content = h(this.tag, {\n      staticClass: 'tab-pane',\n      class: this.tabClasses,\n      directives: [{\n        name: 'show',\n        value: localActive\n      }],\n      attrs: {\n        role: 'tabpanel',\n        id: this.safeId(),\n        'aria-hidden': localActive ? 'false' : 'true',\n        'aria-labelledby': this.controlledBy || null\n      },\n      ref: 'panel'\n    },\n    // Render content lazily if requested\n    [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n    return h(BVTransition, {\n      props: {\n        mode: 'out-in',\n        noFade: this.computedNoFade\n      }\n    }, [$content]);\n  }\n});\n\nexport { BTab, props };\n","import isPlainObject from 'lodash/isPlainObject';\nimport { BTab } from '../../../../vendor/bootstrap-vue/src/components/tabs/tab';\nimport { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlTab',\n  components: {\n    BTab\n  },\n  inheritAttrs: false,\n  props: {\n    titleLinkClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: ''\n    },\n    /**\n     * Query string parameter value to use when `gl-tabs` `sync-active-tab-with-query-params` prop is set to `true`.\n     */\n    queryParamValue: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    linkClass() {\n      const {\n        titleLinkClass\n      } = this;\n      if (Array.isArray(titleLinkClass)) {\n        return [...titleLinkClass, DEFAULT_TAB_TITLE_LINK_CLASS];\n      }\n      if (isPlainObject(titleLinkClass)) {\n        return {\n          ...titleLinkClass,\n          [DEFAULT_TAB_TITLE_LINK_CLASS]: true\n        };\n      }\n      return `${titleLinkClass} ${DEFAULT_TAB_TITLE_LINK_CLASS}`.trim();\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tab',_vm._g(_vm._b({attrs:{\"title-link-class\":_vm.linkClass,\"query-param-value\":_vm.queryParamValue},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'b-tab',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","const DEFAULT_TAB_TITLE_LINK_CLASS = 'gl-tab-nav-item';\n\nexport { DEFAULT_TAB_TITLE_LINK_CLASS };\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!(\"onmouseenter\" in element)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = event; // Events can be reentrant (e.g., focus).\n    event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      event = event0;\n    }\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, capture) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n  var event0 = event;\n  event1.sourceEvent = event;\n  event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    event = event0;\n  }\n}\n"],"sourceRoot":""}