{"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":""}