{"version":3,"sources":["webpack:///./sidebar/queries/get_merge_request_reviewers.query.graphql","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/reviewer_applicable_approval_rules.fragment.graphql","webpack:///./graphql_shared/constants.js","webpack:///./graphql_shared/fragments/user_availability.fragment.graphql","webpack:///./notes/constants.js","webpack:///./sidebar/components/reviewers/uncollapsed_reviewer_list.vue","webpack:///./sidebar/components/reviewers/reviewer_avatar.vue?d0ec","webpack:///sidebar/components/reviewers/reviewer_avatar.vue","webpack:///./sidebar/components/reviewers/reviewer_avatar_link.vue?4c40","webpack:///sidebar/components/reviewers/reviewer_avatar_link.vue","webpack:///./sidebar/components/reviewers/reviewer_avatar.vue?f444","webpack:///./sidebar/components/reviewers/reviewer_avatar.vue","webpack:///./sidebar/components/reviewers/reviewer_avatar_link.vue?f001","webpack:///./sidebar/components/reviewers/reviewer_avatar_link.vue","webpack:///sidebar/components/reviewers/uncollapsed_reviewer_list.vue","webpack:///./sidebar/components/reviewers/uncollapsed_reviewer_list.vue?8101","webpack:///./sidebar/components/reviewers/uncollapsed_reviewer_list.vue?0ff4","webpack:///./helpers/event_hub_factory.js","webpack:///./super_sidebar/user_counts_fetch.js","webpack:///./invite_members/event_hub.js","webpack:///./sidebar/components/reviewers/sidebar_reviewers.vue","webpack:///./merge_requests/components/reviewers/reviewer_drawer.vue?eb57","webpack:///merge_requests/components/reviewers/reviewer_drawer.vue","webpack:///./merge_requests/components/reviewers/reviewer_drawer.vue?4c1a","webpack:///./merge_requests/components/reviewers/reviewer_drawer.vue","webpack:///./sidebar/components/reviewers/reviewer_title.vue?0de8","webpack:///sidebar/components/reviewers/reviewer_title.vue","webpack:///./sidebar/components/reviewers/reviewer_title.vue?205e","webpack:///./sidebar/components/reviewers/reviewer_title.vue","webpack:///./sidebar/components/reviewers/reviewers.vue?27b8","webpack:///sidebar/components/reviewers/reviewers.vue","webpack:///./sidebar/components/reviewers/reviewers.vue?a753","webpack:///./sidebar/components/reviewers/reviewers.vue","webpack:///sidebar/components/reviewers/sidebar_reviewers.vue","webpack:///./sidebar/components/reviewers/sidebar_reviewers.vue?26dc","webpack:///./sidebar/components/reviewers/sidebar_reviewers.vue?1507","webpack:///./graphql_shared/utils.js","webpack:///./lib/utils/ajax_cache.js","webpack:///./gfm_auto_complete.js","webpack:///./invite_members/components/invite_members_trigger.vue","webpack:///./invite_members/components/invite_members_trigger.vue?f47d","webpack:///invite_members/components/invite_members_trigger.vue","webpack:///./invite_members/components/invite_members_trigger.vue?c527","webpack:///./sidebar/event_hub.js","webpack:///./sidebar/queries/reviewer_rereview.mutation.graphql","webpack:///./graphql_shared/fragments/user.fragment.graphql","webpack:///./loading_icon_for_legacy_js.js","webpack:///./invite_members/constants.js","webpack:///./sidebar/stores/sidebar_store.js","webpack:///./lib/utils/regexp.js","webpack:///./graphql_shared/queries/project_autocomplete_users_with_mr_permissions.query.graphql","webpack:///./behaviors/markdown/gfm_auto_complete.js","webpack:///./merge_requests/components/reviewers/reviewer_dropdown.vue","webpack:///./merge_requests/components/reviewers/update_reviewers.vue?199e","webpack:///merge_requests/components/reviewers/update_reviewers.vue","webpack:///./merge_requests/components/reviewers/update_reviewers.vue","webpack:///./merge_requests/components/reviewers/reviewer_dropdown.vue?d87f","webpack:///merge_requests/components/reviewers/reviewer_dropdown.vue","webpack:///./merge_requests/components/reviewers/reviewer_dropdown.vue?4a6a","webpack:///./render_vue_component_for_legacy_js.js","webpack:///./merge_requests/components/reviewers/queries/user_permissions.query.graphql","webpack:///./merge_requests/components/reviewers/queries/set_reviewers.mutation.graphql","webpack:///./sidebar/queries/merge_request_reviewers.subscription.graphql","webpack:///./lib/utils/jquery_at_who.js","webpack:///./vue_shared/plugins/global_toast.js","webpack:////build/source/ee/app/assets/javascripts/gfm_auto_complete.js","webpack:///./sidebar/services/sidebar_service.js","webpack:///./sidebar/sidebar_mediator.js"],"names":["doc","loc","source","names","unique","defs","filter","def","kind","name","value","definitions","concat","definitionRefs","findOperation","i","length","element","forEach","refs","Set","collectFragmentReferences","node","add","type","selectionSet","selections","selection","variableDefinitions","module","exports","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","push","oneQuery","MINIMUM_SEARCH_LENGTH","TYPENAME_BOARD","TYPENAME_CI_BUILD","TYPENAME_CI_RUNNER","TYPENAME_CI_PIPELINE","TYPENAME_CI_STAGE","TYPENAME_CI_TRIGGER","TYPENAME_CI_VARIABLE","TYPENAME_COMMIT_STATUS","TYPENAME_CONTAINER_REPOSITORY","TYPENAME_CRM_CONTACT","TYPENAME_CRM_ORGANIZATION","TYPENAME_DESIGN_VERSION","TYPENAME_DISCUSSION","TYPENAME_DISCUSSION_NOTE","TYPENAME_EPIC","TYPENAME_EPIC_BOARD","TYPENAME_FEATURE_FLAG","TYPENAME_GROUP","TYPENAME_ISSUE","TYPENAME_ITERATION","TYPENAME_ITERATIONS_CADENCE","TYPENAME_LABEL","TYPENAME_MEMBER_ROLE","TYPENAME_MERGE_REQUEST","TYPENAME_MILESTONE","TYPENAME_NOTE","TYPENAME_PACKAGES_PACKAGE","TYPENAME_PROJECT","TYPENAME_SCANNER_PROFILE","TYPENAME_SITE_PROFILE","TYPENAME_TODO","TYPENAME_USER","TYPENAME_VULNERABILITY","TYPENAME_WORK_ITEM","TYPENAME_WORK_ITEM_RELATED_BRANCH","TYPE_ORGANIZATION","TYPE_USERS_SAVED_REPLY","TYPE_WORKSPACE","TYPE_COMPLIANCE_FRAMEWORK","QUERY_PARAM_START_CURSOR","QUERY_PARAM_END_CURSOR","DISCUSSION_NOTE","DIFF_NOTE","DISCUSSION","NOTE","SYSTEM_NOTE","COMMENT","ISSUE_NOTEABLE_TYPE","EPIC_NOTEABLE_TYPE","MERGE_REQUEST_NOTEABLE_TYPE","SNIPPET_NOTEABLE_TYPE","DESIGN_NOTEABLE_TYPE","COMMIT_NOTEABLE_TYPE","INCIDENT_NOTEABLE_TYPE","UNRESOLVE_NOTE_METHOD_NAME","RESOLVE_NOTE_METHOD_NAME","DESCRIPTION_TYPE","DISCUSSION_FILTERS_DEFAULT_VALUE","COMMENTS_ONLY_FILTER_VALUE","HISTORY_ONLY_FILTER_VALUE","DISCUSSION_TAB_LABEL","NOTE_UNDERSCORE","TIME_DIFFERENCE_VALUE","ASC","DESC","DISCUSSION_FETCH_TIMEOUT","FETCH_UPDATED_NOTES_DEBOUNCE_TIMEOUT","NOTEABLE_TYPE_MAPPING","Issue","MergeRequest","Epic","Incident","DISCUSSION_FILTER_TYPES","ALL","COMMENTS","HISTORY","toggleStateErrorMessage","STATUS_CLOSED","__","STATUS_OPEN","STATUS_REOPENED","MR_FILTER_OPTIONS","text","systemNoteIcons","noteText","s__","bot","noteType","individualNote","MR_FILTER_TRACKING_OPENED","MR_FILTER_TRACKING_USER_COMMENTS","MR_FILTER_TRACKING_BOT_COMMENTS","components","GlAvatar","GlIcon","props","user","Object","required","imgSize","Number","computed","reviewerAlt","sprintf","userName","avatarUrl","avatar_url","gon","default_avatar_url","hasMergeIcon","_this$user$mergeReque","mergeRequestInteraction","canMerge","ReviewerAvatar","_c","this","_self","staticClass","attrs","_v","_e","GlLink","directives","GlTooltip","GlTooltipDirective","rootPath","String","issuableType","default","TYPE_ISSUE","cannotMerge","TYPE_MERGE_REQUEST","reviewerId","getIdFromGraphQLId","id","reviewerUrl","webUrl","_vm","username","_t","REVIEW_STATE_ICONS","APPROVED","iconClass","title","REQUESTED_CHANGES","REVIEWED","UNREVIEWED","REVIEW_STARTED","i18n","reRequestReview","removeReviewer","GlButton","ReviewerAvatarLink","users","Array","isEditable","Boolean","data","showLess","loadingStates","watch","handler","previousUsers","_this","reduce","acc","userPreviousState","find","approved","showApprovalAnimation","immediate","methods","userId","_this2","setTimeout","reviewedButNotApprovedTooltip","toggleShowLess","$emit","callback","requestReviewComplete","_this3","done","requestRemovalComplete","success","_this4","reviewStateIcon","class","reviewState","showRequestReviewButton","includes","LOADING_STATE","SUCCESS_STATE","_l","index","key","_s","canUpdate","rawName","modifiers","$options","on","$event","EventHub","constructor","$_all","Map","dispose","clear","$on","handlers","get","set","$off","newHandlers","x","delete","$once","wrapHandler","args","fetchUserCounts","document","dispatchEvent","CustomEvent","createEventHub","apollo","reviewers","query","getMergeRequestReviewers","variables","fullPath","projectPath","iid","issuableIid","update","_data$workspace","workspace","issuable","nodes","skip","open","GlDrawer","ApprovalSummary","ApprovalRulesWrapper","inject","getDrawerHeaderHeight","getContentWrapperHeight","loadingReviewers","$apollo","queries","loading","DRAWER_Z_INDEX","scopedSlots","_u","fn","proxy","GlLoadingIcon","ReviewerDropdown","Tooltip","numberOfReviewers","editable","reviewerTitle","n__","changeReviewer","UncollapsedReviewerList","hasNoUsers","sortedReviewers","_user$mergeRequestInt","_user$mergeRequestInt2","assignSelf","requestReview","state","Vue","observable","initialLoading","drawerOpen","MountingPortal","ReviewerTitle","Reviewers","ReviewerDrawer","mediator","field","getMergeRequestReviewersQuery","result","error","createAlert","message","subscribeToMore","mergeRequestReviewersUpdatedSubscription","_this$issuable","issuableId","_this$issuable2","updateQuery","_","subscriptionData","mergeRequestReviewersUpdated","store","setReviewersFromRealtime","map","r","relativeUrlRoot","_gon$relative_url_roo","relative_url_root","_this$issuable$review","graphqlFetching","isLoading","_this$issuable$userPe","userPermissions","adminMergeRequest","created","Store","bind","addReviewer","removeAllReviewers","eventHub","saveReviewers","toggleDrawerOpen","beforeDestroy","reviewBySelf","$el","parentElement","Event","addSelfReview","then","refetch","catch","event","isGid","removeReviewerById","startsWith","parseGid","gid","replace","split","rawId","parseInt","isInteger","getTypeFromGraphQLId","mutationOperationMode","append","remove","convertToGraphQLId","TypeError","convertToGraphQLIds","ids","convertNodeIdsFromGraphQLIds","_isArray","getNodesOrDefault","queryData","nodesField","_queryData$nodesField","toggleQueryPollingByVisibility","queryRef","interval","stopStartQuery","Visibility","hidden","stopPolling","startPolling","change","etagQueryHeaders","featureCorrelation","etagResource","fetchOptions","method","headers","calculateGraphQLPaginationQueryParams","startCursor","endCursor","routeQuery","start_cursor","end_cursor","AjaxCache","Cache","super","pendingRequests","override","endpoint","internalStorage","retrieve","forceRetrieve","hasData","Promise","resolve","pendingRequest","axios","e","Error","textStatus","busyBadge","_memoize","renderVueComponentForLegacyJS","GlBadge","variant","outerHTML","escape","string","encodedString","decodedString","decodeURIComponent","_escape","showAndHideHelper","$input","alias","removeClass","addClass","createMemberSearchString","member","membersBeforeSave","members","count","mentionsDisabled","autoCompleteAvatar","charAt","toUpperCase","rectAvatarClass","imgAvatar","txtAvatar","avatarIcon","spriteIcon","avatarTag","search","icon","availability","highlighter","li","escapedQuery","_escapeRegExp","regexp","RegExp","str","$1","$2","$3","setupSubcommands","cmd","atwho","at","keys","maxLen","displayTpl","header","description","defaultAutocompleteConfig","emojis","issues","mergeRequests","epics","iterations","milestones","labels","snippets","vulnerabilities","contacts","wikis","GfmAutoComplete","dataSources","cachedData","isLoadingData","previousQuery","undefined","currentBackendFilterRequestController","setup","input","enableMap","$","setupLifecycle","each","hasClass","off","setupAtWho","trigger","clearCache","setupEmoji","setupMembers","setupIssues","setupMilestones","setupMergeRequests","setupLabels","setupSnippets","setupContacts","setupWikis","searchKey","limit","skipSpecialCharacterTest","skipMarkdownCharacterTest","defaultLoadingData","cssClasses","Loading","template","tpl","aliases","params","warning","_template","className","join","insertTpl","referencePrefix","match","exec","test","interpolate","suffix","callbacks","getDefaultCallbacks","beforeSave","commands","c","matcher","flag","subtext","setSubmitReviewStates","REVIEW_STATES","reviewed","approve","requested_changes","fetchData","Emoji","templateFunction","insertTemplateFunction","unicodeLetters","items","$inputor","sorter","setting","highlightFirst","alwaysHighlightFirst","instance","MEMBER_COMMAND","ASSIGN","UNASSIGN","ASSIGN_REVIEWER","UNASSIGN_REVIEWER","REASSIGN","CC","REQUEST_REVIEW","assignees","command","tmpl","Members","availabilityStatus","isUserBusy","delay","DEFAULT_DEBOUNCE_AND_THROTTLE_MS","_SidebarMediator$sing","_state$issuable","subtextNodes","pop","regexSubtext","values","SidebarMediator","singleton","defaultMatcher","app","controllers","sort","Issues","reference","iconName","icon_name","Milestones","expired","parsedMilestones","m","dueDate","due_date","newDate","Date","now","getTime","mA","mB","merges","LABEL_COMMAND","LABEL","LABELS","UNLABEL","RELABEL","Labels","color","endsWith","lastCandidate","label","Wikis","beforeInsert","slug","substr","toLowerCase","email","Contacts","firstName","first_name","lastName","last_name","contact","self","isTypeWithBackendFiltering","withoutAt","substring","regex","dataSource","atTypeMap","_this$cachedData$at","loadData","abort","AbortController","signal","finally","loadEmojiData","loadSubcommands","some","glEmojiTag","updateDataSources","newDataSources","destroy","dataToInspect","loadingState","atSymbolsWithBar","atSymbolsWithoutBar","targetSubtext","resultantFlag","accentAChar","decodeURI","accentYChar","typesWithBackendFiltering","emoji","item","escapedFieldValue","fieldValue","slice","nameOrUsernameStartsWith","nameOrUsernameIncludes","lowercaseQuery","_sortBy","mappedIconName","ISSUABLE_EPIC","WORK_ITEMS_TYPE_MAP","WORK_ITEM_TYPE_ENUM_EPIC","milestone","slugSpan","loadingSpinner","loadingIconForLegacyJS","inline","classes","GlDropdownItem","GlDisclosureDropdownItem","displayText","category","triggerSource","triggerElement","componentAttributes","isButtonTrigger","TRIGGER_ELEMENT_BUTTON","isWithEmojiTrigger","TRIGGER_ELEMENT_WITH_EMOJI","isDropdownWithEmojiTrigger","TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI","isDisclosureTrigger","TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN","openModal","handleDisclosureDropdownAction","component","_b","window","emitSidebarEvent","defaultValue","prop","_GlLoadingIcon$props$","PROJECT_SELECT_LABEL_ID","SEARCH_DELAY","VALID_TOKEN_BACKGROUND","WARNING_TOKEN_BACKGROUND","INVALID_TOKEN_BACKGROUND","TOAST_MESSAGE_LOCALSTORAGE_KEY","MEMBERS_WITH_QUEUED_STATUS_LOCALSTORAGE_KEY","GROUP_FILTERS","DESCENDANT_GROUPS","USERS_FILTER_ALL","USERS_FILTER_SAML_PROVIDER_ID","TOP_NAV_INVITE_MEMBERS_COMPONENT","INVITE_MEMBER_MODAL_TRACKING_CATEGORY","IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_CATEGORY","IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_LABEL","MEMBERS_MODAL_DEFAULT_TITLE","MEMBERS_MODAL_CELEBRATE_TITLE","MEMBERS_MODAL_CELEBRATE_INTRO","MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT","MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT","MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT","MEMBERS_SEARCH_FIELD","MEMBERS_PLACEHOLDER","GROUP_MODAL_DEFAULT_TITLE","GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT","GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT","GROUP_MODAL_TO_GROUP_ALERT_BODY","GROUP_MODAL_TO_GROUP_ALERT_LINK","helpPagePath","anchor","GROUP_MODAL_TO_PROJECT_ALERT_BODY","GROUP_MODAL_TO_PROJECT_ALERT_LINK","GROUP_SEARCH_FIELD","GROUP_PLACEHOLDER","ACCESS_LEVEL","ACCESS_EXPIRE_DATE","TOAST_MESSAGE_SUCCESSFUL","QUEUED_MESSAGE_SUCCESSFUL","INVALID_FEEDBACK_MESSAGE_DEFAULT","READ_MORE_TEXT","READ_MORE_ACCESS_EXPIRATION_TEXT","INVITE_BUTTON_TEXT","INVITE_BUTTON_TEXT_DISABLED","CANCEL_BUTTON_TEXT","HEADER_CLOSE_LABEL","MEMBER_ERROR_LIST_TEXT","COLLAPSED_ERRORS","EXPANDED_ERRORS","EMPTY_INVITES_ALERT_TEXT","MEMBER_MODAL_LABELS","modal","celebrate","intro","toGroup","introText","toProject","searchField","placeHolder","toastMessageSuccessful","memberErrorListText","collapsedErrors","expandedErrors","emptyInvitesAlertText","GROUP_MODAL_LABELS","notificationText","notificationLink","ON_SHOW_TRACK_LABEL","ON_CELEBRATION_TRACK_LABEL","WARNING_ALERT_TITLE","DANGER_ALERT_TITLE","REACHED_LIMIT_VARIANT","CLOSE_TO_LIMIT_VARIANT","REACHED_LIMIT_UPGRADE_SUGGESTION_MESSAGE","CLOSE_TO_LIMIT_MESSAGE","BLOCKED_SEAT_OVERAGES_BODY","BLOCKED_SEAT_OVERAGES_CTA","BLOCKED_SEAT_OVERAGES_CTA_DOCS","BLOCKED_SEAT_OVERAGES_ERROR_REASON","SidebarStore","options","initSingleton","currentUser","timeTrackingLimitToHours","parseBoolean","timeEstimate","totalTimeSpent","humanTimeEstimate","humanTimeSpent","isFetching","autocompleteProjects","moveToProjectId","isLockDialogOpen","participants","projectEmailsEnabled","subscribeDisabledDescription","subscribed","changing","setAssigneeData","setReviewerData","resetChanging","setTimeTrackingData","time_estimate","total_time_spent","human_time_estimate","humanTotalTimeSpent","human_total_time_spent","setFetchingState","setLoadingState","addAssignee","assignee","findAssignee","reviewer","findReviewer","updateAssignee","stateKey","updateReviewer","overwrite","newData","removeAssignee","removeAllAssignees","setAssigneesFromRealtime","setAutocompleteProjects","projects","setSubscribedState","setMoveToProjectId","semverRegex","noSpacesRegex","containsPotentialRegex","initGFMInput","$els","el","gfm","gl","enableGFM","dataset","supportsAutocomplete","selectedReviewers","mutate","mutation","setReviewersMutation","reviewerUsernames","render","$scopedSlots","updateReviewers","userPermissionsQuery","_data$project","project","mergeRequest","GlCollapsibleListbox","UpdateReviewers","InviteMembersTrigger","visibleReviewers","searching","fetchedUsers","currentSelectedReviewers","mappedUsers","selectedReviewersToShow","mapUser","textSrOnly","u","gqlUser","newVal","debouncedFetchAutocompleteUsers","_debounce","fetchAutocompleteUsers","secondaryText","shownDropdown","userAutocompleteWithMRPermissionsQuery","mergeRequestId","selectReviewer","unassign","directlyInviteMembers","model","$$v","expression","Component","children","vm","h","$mount","$forceUpdate","cloneNode","$destroy","use","GlToast","showGlobalToast","$toast","show","Q_ISSUE_SUB_COMMANDS","dev","transform","Q_MERGE_REQUEST_SUB_COMMANDS","fix","review","Q_MERGE_REQUEST_CAN_SUGGEST_SUB_COMMANDS","Iterations","GfmAutoCompleteEE","_defineProperty","defaultCallbacks","setupAutoCompleteEpics","setupAutoCompleteIterations","setupAutoCompleteVulnerabilities","canSuggest","getQSubCommands","gqClient","createGqClient","fetchPolicy","fetchPolicies","NO_CACHE","SidebarService","endpointMap","moveIssueEndpoint","projectsAutocompleteEndpoint","put","getProjectsAutocomplete","searchTerm","moveIssue","post","move_to_project_id","reviewerRereviewMutation","toString","service","Service","assignYourself","selected","assignee_ids","res","reject","selectedIds","suggestedSelectedIds","suggested","reviewer_ids","suggested_reviewer_ids","toast","projectId","fetch","processFetchedData","fetchAutocompleteProjects","location","pathname","web_url","visitUrl"],"mappings":"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","file":"initGFMInput.dae925e8.chunk.js","sourcesContent":["\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestReviewers\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuable\"},\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequest\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"UserAvailability\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestInteraction\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canUpdate\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewState\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ReviewersApplicableApprovalRules\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"adminMergeRequest\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":737}};\n doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/user.fragment.graphql\\\"\\n#import \\\"~/graphql_shared/fragments/user_availability.fragment.graphql\\\"\\n#import \\\"ee_else_ce/sidebar/queries/reviewer_applicable_approval_rules.fragment.graphql\\\"\\n\\nquery mergeRequestReviewers($fullPath: ID!, $iid: String!) {\\n workspace: project(fullPath: $fullPath) {\\n id\\n issuable: mergeRequest(iid: $iid) {\\n id\\n reviewers {\\n nodes {\\n ...User\\n ...UserAvailability\\n mergeRequestInteraction {\\n canMerge\\n canUpdate\\n approved\\n reviewState\\n\\n ...ReviewersApplicableApprovalRules\\n }\\n }\\n }\\n userPermissions {\\n adminMergeRequest\\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/user.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user_availability.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"ee_else_ce/sidebar/queries/reviewer_applicable_approval_rules.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[\"mergeRequestReviewers\"] = oneQuery(doc, \"mergeRequestReviewers\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ReviewersApplicableApprovalRules\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UserMergeRequestInteraction\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"applicableApprovalRules\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":116}};\n doc.loc.source = {\"body\":\"fragment ReviewersApplicableApprovalRules on UserMergeRequestInteraction {\\n applicableApprovalRules {\\n id\\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[\"ReviewersApplicableApprovalRules\"] = oneQuery(doc, \"ReviewersApplicableApprovalRules\");\n \n","export const MINIMUM_SEARCH_LENGTH = 3;\n\nexport const TYPENAME_BOARD = 'Board';\nexport const TYPENAME_CI_BUILD = 'Ci::Build';\nexport const TYPENAME_CI_RUNNER = 'Ci::Runner';\nexport const TYPENAME_CI_PIPELINE = 'Ci::Pipeline';\nexport const TYPENAME_CI_STAGE = 'Ci::Stage';\nexport const TYPENAME_CI_TRIGGER = 'Ci::Trigger';\nexport const TYPENAME_CI_VARIABLE = 'Ci::Variable';\nexport const TYPENAME_COMMIT_STATUS = 'CommitStatus';\nexport const TYPENAME_CONTAINER_REPOSITORY = 'ContainerRepository';\nexport const TYPENAME_CRM_CONTACT = 'CustomerRelations::Contact';\nexport const TYPENAME_CRM_ORGANIZATION = 'CustomerRelations::Organization';\nexport const TYPENAME_DESIGN_VERSION = 'DesignManagement::Version';\nexport const TYPENAME_DISCUSSION = 'Discussion';\nexport const TYPENAME_DISCUSSION_NOTE = 'DiscussionNote';\nexport const TYPENAME_EPIC = 'Epic';\nexport const TYPENAME_EPIC_BOARD = 'Boards::EpicBoard';\nexport const TYPENAME_FEATURE_FLAG = 'FeatureFlag';\nexport const TYPENAME_GROUP = 'Group';\nexport const TYPENAME_ISSUE = 'Issue';\nexport const TYPENAME_ITERATION = 'Iteration';\nexport const TYPENAME_ITERATIONS_CADENCE = 'Iterations::Cadence';\nexport const TYPENAME_LABEL = 'Label';\nexport const TYPENAME_MEMBER_ROLE = 'MemberRole';\nexport const TYPENAME_MERGE_REQUEST = 'MergeRequest';\nexport const TYPENAME_MILESTONE = 'Milestone';\nexport const TYPENAME_NOTE = 'Note';\nexport const TYPENAME_PACKAGES_PACKAGE = 'Packages::Package';\nexport const TYPENAME_PROJECT = 'Project';\nexport const TYPENAME_SCANNER_PROFILE = 'DastScannerProfile';\nexport const TYPENAME_SITE_PROFILE = 'DastSiteProfile';\nexport const TYPENAME_TODO = 'Todo';\nexport const TYPENAME_USER = 'User';\nexport const TYPENAME_VULNERABILITY = 'Vulnerability';\nexport const TYPENAME_WORK_ITEM = 'WorkItem';\nexport const TYPENAME_WORK_ITEM_RELATED_BRANCH = 'WorkItemRelatedBranch';\nexport const TYPE_ORGANIZATION = 'Organizations::Organization';\nexport const TYPE_USERS_SAVED_REPLY = 'Users::SavedReply';\nexport const TYPE_WORKSPACE = 'RemoteDevelopment::Workspace';\nexport const TYPE_COMPLIANCE_FRAMEWORK = 'ComplianceManagement::Framework';\n\nexport const QUERY_PARAM_START_CURSOR = 'start_cursor';\nexport const QUERY_PARAM_END_CURSOR = 'end_cursor';\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"UserAvailability\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availability\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":70}};\n doc.loc.source = {\"body\":\"fragment UserAvailability on User {\\n status {\\n availability\\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[\"UserAvailability\"] = oneQuery(doc, \"UserAvailability\");\n \n","import { STATUS_CLOSED, STATUS_OPEN, STATUS_REOPENED } from '~/issues/constants';\nimport { __, s__ } from '~/locale';\n\nexport const DISCUSSION_NOTE = 'DiscussionNote';\nexport const DIFF_NOTE = 'DiffNote';\nexport const DISCUSSION = 'discussion';\nexport const NOTE = 'note';\nexport const SYSTEM_NOTE = 'systemNote';\nexport const COMMENT = 'comment';\nexport const ISSUE_NOTEABLE_TYPE = 'Issue';\nexport const EPIC_NOTEABLE_TYPE = 'Epic';\nexport const MERGE_REQUEST_NOTEABLE_TYPE = 'MergeRequest';\nexport const SNIPPET_NOTEABLE_TYPE = 'Snippet';\nexport const DESIGN_NOTEABLE_TYPE = 'DesignManagement::Design';\nexport const COMMIT_NOTEABLE_TYPE = 'Commit';\nexport const INCIDENT_NOTEABLE_TYPE = 'INCIDENT'; // TODO: check if value can be converted to `Incident`\nexport const UNRESOLVE_NOTE_METHOD_NAME = 'delete';\nexport const RESOLVE_NOTE_METHOD_NAME = 'post';\nexport const DESCRIPTION_TYPE = 'changed the description';\nexport const DISCUSSION_FILTERS_DEFAULT_VALUE = 0;\nexport const COMMENTS_ONLY_FILTER_VALUE = 1;\nexport const HISTORY_ONLY_FILTER_VALUE = 2;\nexport const DISCUSSION_TAB_LABEL = 'show';\nexport const NOTE_UNDERSCORE = 'note_';\nexport const TIME_DIFFERENCE_VALUE = 10;\nexport const ASC = 'asc';\nexport const DESC = 'desc';\n\nexport const DISCUSSION_FETCH_TIMEOUT = 750;\n\nexport const FETCH_UPDATED_NOTES_DEBOUNCE_TIMEOUT = 750;\n\nexport const NOTEABLE_TYPE_MAPPING = {\n Issue: ISSUE_NOTEABLE_TYPE,\n MergeRequest: MERGE_REQUEST_NOTEABLE_TYPE,\n Epic: EPIC_NOTEABLE_TYPE,\n Incident: INCIDENT_NOTEABLE_TYPE,\n};\n\nexport const DISCUSSION_FILTER_TYPES = {\n ALL: 'all',\n COMMENTS: 'comments',\n HISTORY: 'history',\n};\n\nexport const toggleStateErrorMessage = {\n Epic: {\n [STATUS_CLOSED]: __('Something went wrong while reopening the epic. Please try again later.'),\n [STATUS_OPEN]: __('Something went wrong while closing the epic. Please try again later.'),\n [STATUS_REOPENED]: __('Something went wrong while closing the epic. Please try again later.'),\n },\n MergeRequest: {\n [STATUS_CLOSED]: __(\n 'Something went wrong while reopening the merge request. Please try again later.',\n ),\n [STATUS_OPEN]: __(\n 'Something went wrong while closing the merge request. Please try again later.',\n ),\n [STATUS_REOPENED]: __(\n 'Something went wrong while closing the merge request. Please try again later.',\n ),\n },\n};\n\nexport const MR_FILTER_OPTIONS = [\n {\n text: __('Approvals'),\n value: 'approval',\n systemNoteIcons: ['approval', 'unapproval', 'check', 'error'],\n },\n {\n text: __('Assignees & reviewers'),\n value: 'assignees_reviewers',\n noteText: [\n s__('IssuableEvents|requested review from'),\n s__('IssuableEvents|removed review request for'),\n s__('IssuableEvents|assigned to'),\n s__('IssuableEvents|unassigned'),\n ],\n },\n {\n text: __('Comments (from bots)'),\n value: 'bot_comments',\n bot: true,\n },\n {\n text: __('Comments (from users)'),\n value: 'comments',\n noteType: ['DiscussionNote', 'DiffNote'],\n individualNote: true,\n noteText: [s__('IssuableEvents|resolved all threads')],\n },\n {\n text: __('Commits & branches'),\n value: 'commit_branches',\n systemNoteIcons: ['commit', 'fork'],\n },\n {\n text: __('Edits'),\n value: 'edits',\n systemNoteIcons: ['pencil', 'todo-done'],\n },\n {\n text: __('Labels'),\n value: 'labels',\n systemNoteIcons: ['label'],\n },\n {\n text: __('Lock status'),\n value: 'lock_status',\n systemNoteIcons: ['lock', 'lock-open'],\n },\n {\n text: __('Mentions'),\n value: 'mentions',\n systemNoteIcons: ['comment-dots'],\n },\n {\n text: __('Merge request status'),\n value: 'status',\n systemNoteIcons: ['merge-request', 'issue-close', 'issues', 'merge-request-close', 'merge'],\n },\n {\n text: __('Tracking'),\n value: 'tracking',\n noteType: ['MilestoneNote'],\n systemNoteIcons: ['timer'],\n },\n];\nexport const MR_FILTER_TRACKING_OPENED = 'user_clicks_comment_filter_dropdown';\nexport const MR_FILTER_TRACKING_USER_COMMENTS = 'click_comment_filter_toggle_user_comments_in_mr';\nexport const MR_FILTER_TRACKING_BOT_COMMENTS = 'click_comment_filter_toggle_bot_comments_in_mr';\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',_vm._l((_vm.users),function(user,index){return _c('div',{key:user.id,staticClass:\"reviewer-grid gl-mr-2 gl-grid gl-items-center\",class:{\n 'gl-mb-3': index !== _vm.users.length - 1,\n },attrs:{\"data-testid\":\"reviewer\"}},[_c('reviewer-avatar-link',{staticClass:\"gl-mr-2 gl-break-anywhere\",attrs:{\"user\":user,\"root-path\":_vm.rootPath,\"issuable-type\":_vm.issuableType,\"data-css-area\":\"user\"}},[_c('div',{staticClass:\"gl-ml-3 gl-grid gl-items-center gl-leading-normal\"},[_vm._v(\"\\n \"+_vm._s(user.name)+\"\\n \")])]),_vm._v(\" \"),(user.mergeRequestInteraction.canUpdate && _vm.showRequestReviewButton(user))?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left\",modifiers:{\"left\":true}}],staticClass:\"gl-float-right gl-mr-2 !gl-text-subtle\",attrs:{\"title\":_vm.$options.i18n.reRequestReview,\"aria-label\":_vm.$options.i18n.reRequestReview,\"loading\":_vm.loadingStates[user.id] === _vm.$options.LOADING_STATE,\"size\":\"small\",\"icon\":\"redo\",\"variant\":\"link\",\"data-testid\":\"re-request-button\"},on:{\"click\":function($event){return _vm.reRequestReview(user.id)}}}):_vm._e(),_vm._v(\" \"),_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.top.viewport\",modifiers:{\"top\":true,\"viewport\":true}}],staticClass:\"gl-float-right gl-my-2 gl-ml-auto gl-shrink-0\",class:_vm.reviewStateIcon(user).class,attrs:{\"title\":_vm.reviewStateIcon(user).title,\"data-testid\":\"reviewer-state-icon-parent\"}},[_c('gl-icon',{class:_vm.reviewStateIcon(user).iconClass,attrs:{\"size\":_vm.reviewStateIcon(user).size || 16,\"name\":_vm.reviewStateIcon(user).name,\"aria-label\":_vm.reviewStateIcon(user).title,\"data-testid\":\"reviewer-state-icon\"}})],1),_vm._v(\" \"),(_vm.isEditable)?_c('span',{staticClass:\"gl-inline-flex gl-h-6 gl-w-6\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.top.viewport\",modifiers:{\"top\":true,\"viewport\":true}}],staticClass:\"gl-float-right gl-ml-2 !gl-text-subtle\",attrs:{\"title\":_vm.$options.i18n.removeReviewer,\"aria-label\":_vm.$options.i18n.removeReviewer,\"loading\":_vm.loadingStates[user.id] === _vm.$options.LOADING_STATE,\"size\":\"small\",\"icon\":\"close\",\"variant\":\"link\",\"data-testid\":\"remove-request-button\"},on:{\"click\":function($event){return _vm.removeReviewer(user.id)}}})],1):_vm._e()],1)}),0)\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!./reviewer_avatar.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!./reviewer_avatar.vue?vue&type=script&lang=js\"","<script>\n// NOTE! For the first iteration, we are simply copying the implementation of Assignees\n// It will soon be overhauled in Issue https://gitlab.com/gitlab-org/gitlab/-/issues/233736\nimport { GlAvatar, GlIcon } from '@gitlab/ui';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n components: {\n GlAvatar,\n GlIcon,\n },\n props: {\n user: {\n type: Object,\n required: true,\n },\n imgSize: {\n type: Number,\n required: true,\n },\n },\n computed: {\n reviewerAlt() {\n return sprintf(__(\"%{userName}'s avatar\"), { userName: this.user.name });\n },\n avatarUrl() {\n return this.user.avatarUrl || this.user.avatar_url || gon.default_avatar_url;\n },\n hasMergeIcon() {\n return !this.user.mergeRequestInteraction?.canMerge;\n },\n },\n};\n</script>\n\n<template>\n <span class=\"gl-relative\">\n <gl-avatar :label=\"user.name\" :src=\"avatarUrl\" :size=\"imgSize\" :alt=\"reviewerAlt\" />\n <gl-icon\n v-if=\"hasMergeIcon\"\n name=\"warning-solid\"\n aria-hidden=\"true\"\n class=\"merge-icon reviewer-merge-icon\"\n />\n </span>\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!./reviewer_avatar_link.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!./reviewer_avatar_link.vue?vue&type=script&lang=js\"","<script>\n// NOTE! For the first iteration, we are simply copying the implementation of Assignees\n// It will soon be overhauled in Issue https://gitlab.com/gitlab-org/gitlab/-/issues/233736\nimport { GlTooltipDirective, GlLink } from '@gitlab/ui';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport ReviewerAvatar from './reviewer_avatar.vue';\n\nexport default {\n components: {\n ReviewerAvatar,\n GlLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n user: {\n type: Object,\n required: true,\n },\n rootPath: {\n type: String,\n required: true,\n },\n issuableType: {\n type: String,\n default: TYPE_ISSUE,\n required: false,\n },\n },\n computed: {\n cannotMerge() {\n return (\n this.issuableType === TYPE_MERGE_REQUEST && !this.user.mergeRequestInteraction?.canMerge\n );\n },\n reviewerId() {\n return getIdFromGraphQLId(this.user.id);\n },\n reviewerUrl() {\n return this.user.webUrl;\n },\n },\n};\n</script>\n\n<template>\n <!-- must be `gl-inline-block` or parent flex-basis causes width issues -->\n <gl-link\n :href=\"reviewerUrl\"\n :data-user-id=\"reviewerId\"\n :data-username=\"user.username\"\n :data-cannot-merge=\"cannotMerge\"\n data-placement=\"left\"\n class=\"js-user-link gl-inline-block !gl-text-inherit hover:!gl-text-blue-800\"\n >\n <!-- use gl-flex so that slot can be appropriately styled -->\n <span class=\"gl-flex\">\n <reviewer-avatar :user=\"user\" :img-size=\"24\" :issuable-type=\"issuableType\" />\n <slot :user=\"user\"></slot>\n </span>\n </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./reviewer_avatar.vue?vue&type=template&id=6f9204a6\"\nimport script from \"./reviewer_avatar.vue?vue&type=script&lang=js\"\nexport * from \"./reviewer_avatar.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',{staticClass:\"gl-relative\"},[_c('gl-avatar',{attrs:{\"label\":_vm.user.name,\"src\":_vm.avatarUrl,\"size\":_vm.imgSize,\"alt\":_vm.reviewerAlt}}),_vm._v(\" \"),(_vm.hasMergeIcon)?_c('gl-icon',{staticClass:\"merge-icon reviewer-merge-icon\",attrs:{\"name\":\"warning-solid\",\"aria-hidden\":\"true\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./reviewer_avatar_link.vue?vue&type=template&id=9d273eae\"\nimport script from \"./reviewer_avatar_link.vue?vue&type=script&lang=js\"\nexport * from \"./reviewer_avatar_link.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-link',{staticClass:\"js-user-link gl-inline-block !gl-text-inherit hover:!gl-text-blue-800\",attrs:{\"href\":_vm.reviewerUrl,\"data-user-id\":_vm.reviewerId,\"data-username\":_vm.user.username,\"data-cannot-merge\":_vm.cannotMerge,\"data-placement\":\"left\"}},[_c('span',{staticClass:\"gl-flex\"},[_c('reviewer-avatar',{attrs:{\"user\":_vm.user,\"img-size\":24,\"issuable-type\":_vm.issuableType}}),_vm._v(\" \"),_vm._t(\"default\",null,{\"user\":_vm.user})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { __, sprintf, s__ } from '~/locale';\nimport ReviewerAvatarLink from './reviewer_avatar_link.vue';\n\nconst LOADING_STATE = 'loading';\nconst SUCCESS_STATE = 'success';\nconst JUST_APPROVED = 'approved';\n\nconst REVIEW_STATE_ICONS = {\n APPROVED: {\n name: 'check-circle',\n iconClass: 'gl-fill-icon-success',\n title: s__('MergeRequest|Reviewer approved changes'),\n },\n REQUESTED_CHANGES: {\n name: 'error',\n iconClass: 'gl-fill-icon-danger',\n title: s__('MergeRequest|Reviewer requested changes'),\n },\n REVIEWED: {\n name: 'comment-lines',\n iconClass: 'gl-fill-icon-info',\n title: s__('MergeRequest|Reviewer commented'),\n },\n UNREVIEWED: {\n name: 'dash-circle',\n iconClass: 'gl-fill-icon-default',\n title: s__('MergeRequest|Awaiting review'),\n },\n REVIEW_STARTED: {\n name: 'comment-dots',\n iconClass: 'gl-fill-icon-default',\n title: s__('MergeRequest|Reviewer started review'),\n },\n};\n\nexport default {\n i18n: {\n reRequestReview: __('Re-request review'),\n removeReviewer: s__('MergeRequest|Remove reviewer'),\n },\n components: {\n GlButton,\n GlIcon,\n ReviewerAvatarLink,\n },\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n props: {\n users: {\n type: Array,\n required: true,\n },\n rootPath: {\n type: String,\n required: true,\n },\n issuableType: {\n type: String,\n required: false,\n default: TYPE_ISSUE,\n },\n isEditable: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n data() {\n return {\n showLess: true,\n loadingStates: {},\n };\n },\n watch: {\n users: {\n handler(users, previousUsers) {\n this.loadingStates = users.reduce(\n (acc, user) => ({\n ...acc,\n [user.id]: acc[user.id] || null,\n }),\n this.loadingStates,\n );\n if (previousUsers) {\n users.forEach((user) => {\n const userPreviousState = previousUsers.find(({ id }) => id === user.id);\n if (\n userPreviousState &&\n user.mergeRequestInteraction.approved &&\n !userPreviousState.mergeRequestInteraction.approved\n ) {\n this.showApprovalAnimation(user.id);\n }\n });\n }\n },\n immediate: true,\n },\n },\n methods: {\n showApprovalAnimation(userId) {\n this.loadingStates[userId] = JUST_APPROVED;\n\n setTimeout(() => {\n this.loadingStates[userId] = null;\n }, 1500);\n },\n reviewedButNotApprovedTooltip(user) {\n return sprintf(s__('MergeRequest|Reviewed by @%{username} but not yet approved'), user);\n },\n toggleShowLess() {\n this.showLess = !this.showLess;\n },\n reRequestReview(userId) {\n this.loadingStates[userId] = LOADING_STATE;\n this.$emit('request-review', { userId, callback: this.requestReviewComplete });\n },\n removeReviewer(userId) {\n this.loadingStates[userId] = LOADING_STATE;\n this.$emit('remove-reviewer', {\n userId,\n done: () => this.requestRemovalComplete(userId),\n });\n },\n requestReviewComplete(userId, success) {\n if (success) {\n this.loadingStates[userId] = SUCCESS_STATE;\n\n setTimeout(() => {\n this.loadingStates[userId] = null;\n }, 1500);\n } else {\n this.loadingStates[userId] = null;\n }\n },\n requestRemovalComplete(userId) {\n delete this.loadingStates[userId];\n },\n reviewStateIcon(user) {\n if (user.mergeRequestInteraction.approved) {\n return {\n ...REVIEW_STATE_ICONS.APPROVED,\n class: [this.loadingStates[user.id] === JUST_APPROVED && 'merge-request-approved-icon'],\n };\n }\n return (\n REVIEW_STATE_ICONS[user.mergeRequestInteraction.reviewState] ||\n REVIEW_STATE_ICONS.UNREVIEWED\n );\n },\n showRequestReviewButton(user) {\n if (!user.mergeRequestInteraction.approved) {\n return !['UNREVIEWED'].includes(user.mergeRequestInteraction.reviewState);\n }\n\n return true;\n },\n },\n LOADING_STATE,\n SUCCESS_STATE,\n};\n</script>\n\n<template>\n <div>\n <div\n v-for=\"(user, index) in users\"\n :key=\"user.id\"\n :class=\"{\n 'gl-mb-3': index !== users.length - 1,\n }\"\n class=\"reviewer-grid gl-mr-2 gl-grid gl-items-center\"\n data-testid=\"reviewer\"\n >\n <reviewer-avatar-link\n :user=\"user\"\n :root-path=\"rootPath\"\n :issuable-type=\"issuableType\"\n class=\"gl-mr-2 gl-break-anywhere\"\n data-css-area=\"user\"\n >\n <div class=\"gl-ml-3 gl-grid gl-items-center gl-leading-normal\">\n {{ user.name }}\n </div>\n </reviewer-avatar-link>\n <gl-button\n v-if=\"user.mergeRequestInteraction.canUpdate && showRequestReviewButton(user)\"\n v-gl-tooltip.left\n :title=\"$options.i18n.reRequestReview\"\n :aria-label=\"$options.i18n.reRequestReview\"\n :loading=\"loadingStates[user.id] === $options.LOADING_STATE\"\n class=\"gl-float-right gl-mr-2 !gl-text-subtle\"\n size=\"small\"\n icon=\"redo\"\n variant=\"link\"\n data-testid=\"re-request-button\"\n @click=\"reRequestReview(user.id)\"\n />\n <span\n v-gl-tooltip.top.viewport\n :title=\"reviewStateIcon(user).title\"\n class=\"gl-float-right gl-my-2 gl-ml-auto gl-shrink-0\"\n :class=\"reviewStateIcon(user).class\"\n data-testid=\"reviewer-state-icon-parent\"\n >\n <gl-icon\n :size=\"reviewStateIcon(user).size || 16\"\n :name=\"reviewStateIcon(user).name\"\n :class=\"reviewStateIcon(user).iconClass\"\n :aria-label=\"reviewStateIcon(user).title\"\n data-testid=\"reviewer-state-icon\"\n />\n </span>\n <span v-if=\"isEditable\" class=\"gl-inline-flex gl-h-6 gl-w-6\">\n <gl-button\n v-gl-tooltip.top.viewport\n :title=\"$options.i18n.removeReviewer\"\n :aria-label=\"$options.i18n.removeReviewer\"\n :loading=\"loadingStates[user.id] === $options.LOADING_STATE\"\n class=\"gl-float-right gl-ml-2 !gl-text-subtle\"\n size=\"small\"\n icon=\"close\"\n variant=\"link\"\n data-testid=\"remove-request-button\"\n @click=\"removeReviewer(user.id)\"\n />\n </span>\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!./uncollapsed_reviewer_list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uncollapsed_reviewer_list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./uncollapsed_reviewer_list.vue?vue&type=template&id=093a03aa\"\nimport script from \"./uncollapsed_reviewer_list.vue?vue&type=script&lang=js\"\nexport * from \"./uncollapsed_reviewer_list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * An event hub with a Vue instance like API\n *\n * NOTE: This is a derivative work from [mitt][1] v1.2.0 which is licensed by\n * [MIT License][2] © [Jason Miller][3]\n *\n * [1]: https://github.com/developit/mitt\n * [2]: https://opensource.org/licenses/MIT\n * [3]: https://jasonformat.com/\n */\nclass EventHub {\n constructor() {\n this.$_all = new Map();\n }\n\n dispose() {\n this.$_all.clear();\n }\n\n /**\n * Register an event handler for the given type.\n *\n * @param {string|symbol} type Type of event to listen for\n * @param {Function} handler Function to call in response to given event\n */\n $on(type, handler) {\n const handlers = this.$_all.get(type);\n const added = handlers && handlers.push(handler);\n\n if (!added) {\n this.$_all.set(type, [handler]);\n }\n }\n\n /**\n * Remove an event handler or all handlers for the given type.\n *\n * @param {string|symbol} type Type of event to unregister `handler`\n * @param {Function} handler Handler function to remove\n */\n $off(type, handler) {\n const handlers = this.$_all.get(type) || [];\n\n const newHandlers = handler ? handlers.filter((x) => x !== handler) : [];\n\n if (newHandlers.length) {\n this.$_all.set(type, newHandlers);\n } else {\n this.$_all.delete(type);\n }\n }\n\n /**\n * Add an event listener to type but only trigger it once\n *\n * @param {string|symbol} type Type of event to listen for\n * @param {Function} handler Handler function to call in response to event\n */\n $once(type, handler) {\n const wrapHandler = (...args) => {\n this.$off(type, wrapHandler);\n handler(...args);\n };\n this.$on(type, wrapHandler);\n }\n\n /**\n * Invoke all handlers for the given type.\n *\n * @param {string|symbol} type The event type to invoke\n * @param {Any} [evt] Any value passed to each handler\n */\n $emit(type, ...args) {\n const handlers = this.$_all.get(type) || [];\n\n handlers.forEach((handler) => {\n handler(...args);\n });\n }\n}\n\n/**\n * Return a Vue like event hub\n *\n * - $on\n * - $off\n * - $once\n * - $emit\n *\n * We'd like to shy away from using a full fledged Vue instance from this in the future.\n */\nexport default () => {\n return new EventHub();\n};\n","/**\n * This triggers a re-fetch of the user counts\n *\n * It is separate from the user_counts_manager, so that\n * this function is side-effect free and can be used in\n * anywhere in the app without bloating bundle size\n */\nexport function fetchUserCounts() {\n document.dispatchEvent(new CustomEvent('userCounts:fetch'));\n}\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('reviewer-title',{attrs:{\"reviewers\":_vm.reviewers,\"number-of-reviewers\":_vm.reviewers.length,\"loading\":_vm.isLoading,\"editable\":_vm.canUpdate},on:{\"request-review\":_vm.requestReview,\"remove-reviewer\":_vm.removeReviewerById}}),_vm._v(\" \"),_c('approval-summary',{staticClass:\"gl-mb-2\",attrs:{\"short-text\":\"\"}},[_c('gl-button',{staticClass:\"gl-ml-2 !gl-text-sm\",attrs:{\"size\":\"small\",\"category\":\"tertiary\",\"variant\":\"confirm\"},on:{\"click\":function($event){return _vm.toggleDrawerOpen()}}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Assign'))+\"\\n \")])],1),_vm._v(\" \"),(!_vm.initialLoading)?_c('reviewers',{staticClass:\"gl-pt-2\",attrs:{\"root-path\":_vm.relativeUrlRoot,\"users\":_vm.reviewers,\"editable\":_vm.canUpdate,\"issuable-type\":_vm.issuableType},on:{\"request-review\":_vm.requestReview,\"assign-self\":_vm.reviewBySelf,\"remove-reviewer\":_vm.removeReviewerById}}):_vm._e(),_vm._v(\" \"),_c('mounting-portal',{attrs:{\"mount-to\":\"#js-reviewer-drawer-portal\"}},[_c('reviewer-drawer',{attrs:{\"open\":_vm.drawerOpen},on:{\"request-review\":_vm.requestReview,\"remove-reviewer\":_vm.removeReviewerById,\"close\":function($event){return _vm.toggleDrawerOpen(false)}}})],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!./reviewer_drawer.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!./reviewer_drawer.vue?vue&type=script&lang=js\"","<script>\nimport { GlDrawer } from '@gitlab/ui';\nimport { DRAWER_Z_INDEX } from '~/lib/utils/constants';\nimport { getContentWrapperHeight } from '~/lib/utils/dom_utils';\nimport getMergeRequestReviewers from '~/sidebar/queries/get_merge_request_reviewers.query.graphql';\n\nexport default {\n apollo: {\n reviewers: {\n query: getMergeRequestReviewers,\n variables() {\n return {\n fullPath: this.projectPath,\n iid: this.issuableIid,\n };\n },\n update: (data) => data.workspace?.issuable?.reviewers?.nodes || [],\n skip() {\n return !this.open;\n },\n },\n },\n components: {\n GlDrawer,\n ApprovalSummary: () =>\n import('ee_component/merge_requests/components/reviewers/approval_summary.vue'),\n ApprovalRulesWrapper: () =>\n import('ee_component/merge_requests/components/reviewers/approval_rules_wrapper.vue'),\n },\n inject: ['projectPath', 'issuableIid'],\n props: {\n open: {\n type: Boolean,\n required: true,\n },\n },\n data() {\n return {\n reviewers: [],\n };\n },\n computed: {\n getDrawerHeaderHeight() {\n if (!this.open) return '0';\n return getContentWrapperHeight();\n },\n loadingReviewers() {\n return this.$apollo.queries.reviewers.loading;\n },\n },\n DRAWER_Z_INDEX,\n};\n</script>\n\n<template>\n <gl-drawer\n :header-height=\"getDrawerHeaderHeight\"\n :z-index=\"$options.DRAWER_Z_INDEX\"\n :open=\"open\"\n @close=\"$emit('close')\"\n >\n <template #title>\n <h4 class=\"gl-my-0\">{{ __('Assign reviewers') }}</h4>\n </template>\n <template #header>\n <approval-summary class=\"gl-mt-3\" />\n </template>\n <approval-rules-wrapper\n :reviewers=\"reviewers\"\n @request-review=\"(data) => $emit('request-review', data)\"\n @remove-reviewer=\"(data) => $emit('remove-reviewer', data)\"\n />\n </gl-drawer>\n</template>\n","import { render, staticRenderFns } from \"./reviewer_drawer.vue?vue&type=template&id=2848a406\"\nimport script from \"./reviewer_drawer.vue?vue&type=script&lang=js\"\nexport * from \"./reviewer_drawer.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-drawer',{attrs:{\"header-height\":_vm.getDrawerHeaderHeight,\"z-index\":_vm.$options.DRAWER_Z_INDEX,\"open\":_vm.open},on:{\"close\":function($event){return _vm.$emit('close')}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('h4',{staticClass:\"gl-my-0\"},[_vm._v(_vm._s(_vm.__('Assign reviewers')))])]},proxy:true},{key:\"header\",fn:function(){return [_c('approval-summary',{staticClass:\"gl-mt-3\"})]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('approval-rules-wrapper',{attrs:{\"reviewers\":_vm.reviewers},on:{\"request-review\":(data) => _vm.$emit('request-review', data),\"remove-reviewer\":(data) => _vm.$emit('remove-reviewer', data)}})],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!./reviewer_title.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!./reviewer_title.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { n__, s__ } from '~/locale';\nimport ReviewerDropdown from '~/merge_requests/components/reviewers/reviewer_dropdown.vue';\n\nexport default {\n name: 'ReviewerTitle',\n components: {\n GlLoadingIcon,\n ReviewerDropdown,\n },\n directives: {\n Tooltip: GlTooltipDirective,\n },\n props: {\n loading: {\n type: Boolean,\n required: false,\n default: false,\n },\n numberOfReviewers: {\n type: Number,\n required: true,\n },\n editable: {\n type: Boolean,\n required: true,\n },\n reviewers: {\n type: Array,\n required: false,\n default: () => [],\n },\n },\n computed: {\n reviewerTitle() {\n const reviewers = this.numberOfReviewers;\n return n__('Reviewer', `%d Reviewers`, reviewers);\n },\n },\n i18n: {\n changeReviewer: s__('MergeRequest|Change reviewer'),\n },\n};\n</script>\n<template>\n <div\n class=\"hide-collapsed gl-flex gl-items-center gl-gap-2 gl-font-bold gl-leading-20 gl-text-default\"\n >\n {{ reviewerTitle }}\n <gl-loading-icon v-if=\"loading\" size=\"sm\" inline class=\"align-bottom\" />\n <template v-if=\"editable\">\n <reviewer-dropdown\n class=\"gl-ml-auto\"\n :selected-reviewers=\"reviewers\"\n :visible-reviewers=\"reviewers\"\n />\n </template>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./reviewer_title.vue?vue&type=template&id=652e150e\"\nimport script from \"./reviewer_title.vue?vue&type=script&lang=js\"\nexport * from \"./reviewer_title.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:\"hide-collapsed gl-flex gl-items-center gl-gap-2 gl-font-bold gl-leading-20 gl-text-default\"},[_vm._v(\"\\n \"+_vm._s(_vm.reviewerTitle)+\"\\n \"),(_vm.loading)?_c('gl-loading-icon',{staticClass:\"align-bottom\",attrs:{\"size\":\"sm\",\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.editable)?[_c('reviewer-dropdown',{staticClass:\"gl-ml-auto\",attrs:{\"selected-reviewers\":_vm.reviewers,\"visible-reviewers\":_vm.reviewers}})]:_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!./reviewers.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!./reviewers.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { GlButton } from '@gitlab/ui';\n// NOTE! For the first iteration, we are simply copying the implementation of Assignees\n// It will soon be overhauled in Issue https://gitlab.com/gitlab-org/gitlab/-/issues/233736\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport UncollapsedReviewerList from './uncollapsed_reviewer_list.vue';\n\nexport default {\n // name: 'Reviewers' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26#possible-false-positives\n // eslint-disable-next-line @gitlab/require-i18n-strings\n name: 'Reviewers',\n components: {\n GlButton,\n UncollapsedReviewerList,\n },\n props: {\n rootPath: {\n type: String,\n required: true,\n },\n users: {\n type: Array,\n required: true,\n },\n editable: {\n type: Boolean,\n required: true,\n },\n issuableType: {\n type: String,\n required: false,\n default: TYPE_ISSUE,\n },\n },\n computed: {\n hasNoUsers() {\n return !this.users.length;\n },\n sortedReviewers() {\n const canMergeUsers = this.users.filter((user) => user.mergeRequestInteraction?.canMerge);\n const canNotMergeUsers = this.users.filter((user) => !user.mergeRequestInteraction?.canMerge);\n\n return [...canMergeUsers, ...canNotMergeUsers];\n },\n },\n methods: {\n assignSelf() {\n this.$emit('assign-self');\n },\n requestReview(data) {\n this.$emit('request-review', data);\n },\n removeReviewer(data) {\n this.$emit('remove-reviewer', data);\n },\n },\n};\n</script>\n\n<template>\n <div>\n <div class=\"value hide-collapsed\">\n <span\n v-if=\"hasNoUsers\"\n class=\"no-value gl-flex gl-text-base gl-leading-normal !gl-text-subtle\"\n data-testid=\"no-value\"\n >\n {{ __('None') }}\n <template v-if=\"editable\">\n -\n <gl-button\n category=\"tertiary\"\n variant=\"link\"\n class=\"gl-ml-2\"\n data-testid=\"assign-yourself\"\n @click=\"assignSelf\"\n >\n <span class=\"gl-text-subtle hover:gl-text-blue-800\">{{ __('assign yourself') }}</span>\n </gl-button>\n </template>\n </span>\n\n <uncollapsed-reviewer-list\n v-else\n :users=\"sortedReviewers\"\n :root-path=\"rootPath\"\n :issuable-type=\"issuableType\"\n @request-review=\"requestReview\"\n @remove-reviewer=\"removeReviewer\"\n />\n </div>\n </div>\n</template>\n","import { render, staticRenderFns } from \"./reviewers.vue?vue&type=template&id=2b416e42\"\nimport script from \"./reviewers.vue?vue&type=script&lang=js\"\nexport * from \"./reviewers.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',[_c('div',{staticClass:\"value hide-collapsed\"},[(_vm.hasNoUsers)?_c('span',{staticClass:\"no-value gl-flex gl-text-base gl-leading-normal !gl-text-subtle\",attrs:{\"data-testid\":\"no-value\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('None'))+\"\\n \"),(_vm.editable)?[_vm._v(\"\\n -\\n \"),_c('gl-button',{staticClass:\"gl-ml-2\",attrs:{\"category\":\"tertiary\",\"variant\":\"link\",\"data-testid\":\"assign-yourself\"},on:{\"click\":_vm.assignSelf}},[_c('span',{staticClass:\"gl-text-subtle hover:gl-text-blue-800\"},[_vm._v(_vm._s(_vm.__('assign yourself')))])])]:_vm._e()],2):_c('uncollapsed-reviewer-list',{attrs:{\"users\":_vm.sortedReviewers,\"root-path\":_vm.rootPath,\"issuable-type\":_vm.issuableType},on:{\"request-review\":_vm.requestReview,\"remove-reviewer\":_vm.removeReviewer}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\n// NOTE! For the first iteration, we are simply copying the implementation of Assignees\n// It will soon be overhauled in Issue https://gitlab.com/gitlab-org/gitlab/-/issues/233736\nimport Vue from 'vue';\nimport { MountingPortal } from 'portal-vue';\nimport { GlButton } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { __ } from '~/locale';\nimport { isGid, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { fetchUserCounts } from '~/super_sidebar/user_counts_fetch';\nimport ReviewerDrawer from '~/merge_requests/components/reviewers/reviewer_drawer.vue';\nimport eventHub from '../../event_hub';\nimport getMergeRequestReviewersQuery from '../../queries/get_merge_request_reviewers.query.graphql';\nimport mergeRequestReviewersUpdatedSubscription from '../../queries/merge_request_reviewers.subscription.graphql';\nimport Store from '../../stores/sidebar_store';\nimport ReviewerTitle from './reviewer_title.vue';\nimport Reviewers from './reviewers.vue';\n\nexport const state = Vue.observable({\n issuable: {},\n loading: false,\n initialLoading: true,\n drawerOpen: false,\n});\n\nexport default {\n name: 'SidebarReviewers',\n components: {\n MountingPortal,\n GlButton,\n ReviewerTitle,\n Reviewers,\n ReviewerDrawer,\n ApprovalSummary: () =>\n import('ee_component/merge_requests/components/reviewers/approval_summary.vue'),\n },\n props: {\n mediator: {\n type: Object,\n required: true,\n },\n field: {\n type: String,\n required: true,\n },\n issuableType: {\n type: String,\n required: false,\n default: TYPE_ISSUE,\n },\n issuableIid: {\n type: String,\n required: true,\n },\n projectPath: {\n type: String,\n required: true,\n },\n },\n apollo: {\n // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n issuable: {\n query: getMergeRequestReviewersQuery,\n variables() {\n return {\n iid: this.issuableIid,\n fullPath: this.projectPath,\n };\n },\n update(data) {\n return data.workspace?.issuable;\n },\n result() {\n this.initialLoading = false;\n },\n error() {\n createAlert({ message: __('An error occurred while fetching reviewers.') });\n },\n subscribeToMore: {\n document() {\n return mergeRequestReviewersUpdatedSubscription;\n },\n variables() {\n return {\n issuableId: this.issuable?.id,\n };\n },\n skip() {\n return !this.issuable?.id;\n },\n updateQuery(\n _,\n {\n subscriptionData: {\n data: { mergeRequestReviewersUpdated },\n },\n },\n ) {\n if (mergeRequestReviewersUpdated) {\n this.store.setReviewersFromRealtime(\n mergeRequestReviewersUpdated.reviewers.nodes.map((r) => ({\n ...r,\n id: getIdFromGraphQLId(r.id),\n })),\n );\n }\n },\n },\n },\n },\n data() {\n return state;\n },\n computed: {\n relativeUrlRoot() {\n return gon.relative_url_root ?? '';\n },\n reviewers() {\n return this.issuable.reviewers?.nodes || [];\n },\n graphqlFetching() {\n return this.$apollo.queries.issuable.loading;\n },\n isLoading() {\n return this.loading || this.$apollo.queries.issuable.loading;\n },\n canUpdate() {\n return this.issuable.userPermissions?.adminMergeRequest || false;\n },\n },\n created() {\n this.store = new Store();\n\n this.removeReviewer = this.store.removeReviewer.bind(this.store);\n this.addReviewer = this.store.addReviewer.bind(this.store);\n this.removeAllReviewers = this.store.removeAllReviewers.bind(this.store);\n\n // Get events from deprecatedJQueryDropdown\n eventHub.$on('sidebar.removeReviewer', this.removeReviewer);\n eventHub.$on('sidebar.addReviewer', this.addReviewer);\n eventHub.$on('sidebar.removeAllReviewers', this.removeAllReviewers);\n eventHub.$on('sidebar.saveReviewers', this.saveReviewers);\n eventHub.$on('sidebar.toggleReviewerDrawer', this.toggleDrawerOpen);\n },\n beforeDestroy() {\n eventHub.$off('sidebar.removeReviewer', this.removeReviewer);\n eventHub.$off('sidebar.addReviewer', this.addReviewer);\n eventHub.$off('sidebar.removeAllReviewers', this.removeAllReviewers);\n eventHub.$off('sidebar.saveReviewers', this.saveReviewers);\n eventHub.$off('sidebar.toggleReviewerDrawer', this.toggleDrawerOpen);\n },\n methods: {\n reviewBySelf() {\n // Notify gl dropdown that we are now assigning to current user\n this.$el.parentElement.dispatchEvent(new Event('assignYourself'));\n\n this.mediator.addSelfReview();\n this.saveReviewers();\n },\n saveReviewers() {\n this.loading = true;\n\n this.mediator\n .saveReviewers(this.field)\n .then(() => {\n this.loading = false;\n fetchUserCounts();\n this.$apollo.queries.issuable.refetch();\n })\n .catch(() => {\n this.loading = false;\n return createAlert({\n message: __('Error occurred when saving reviewers'),\n });\n });\n },\n requestReview(data) {\n this.mediator.requestReview(data);\n },\n async removeReviewerById(event) {\n const userId = isGid(event.userId) ? getIdFromGraphQLId(event.userId) : event.userId;\n this.store.reviewers = this.store.reviewers.filter((user) => user.id !== userId);\n try {\n await this.saveReviewers();\n } catch (error) {\n createAlert(__('Unable to remove a reviewer at the moment, try again later'), { error });\n } finally {\n event.done();\n }\n },\n toggleDrawerOpen(drawerOpen = !this.drawerOpen) {\n this.drawerOpen = drawerOpen;\n },\n },\n};\n</script>\n\n<template>\n <div>\n <reviewer-title\n :reviewers=\"reviewers\"\n :number-of-reviewers=\"reviewers.length\"\n :loading=\"isLoading\"\n :editable=\"canUpdate\"\n @request-review=\"requestReview\"\n @remove-reviewer=\"removeReviewerById\"\n />\n <approval-summary short-text class=\"gl-mb-2\">\n <gl-button\n size=\"small\"\n category=\"tertiary\"\n variant=\"confirm\"\n class=\"gl-ml-2 !gl-text-sm\"\n @click=\"toggleDrawerOpen()\"\n >\n {{ __('Assign') }}\n </gl-button>\n </approval-summary>\n <reviewers\n v-if=\"!initialLoading\"\n :root-path=\"relativeUrlRoot\"\n :users=\"reviewers\"\n :editable=\"canUpdate\"\n :issuable-type=\"issuableType\"\n class=\"gl-pt-2\"\n @request-review=\"requestReview\"\n @assign-self=\"reviewBySelf\"\n @remove-reviewer=\"removeReviewerById\"\n />\n <mounting-portal mount-to=\"#js-reviewer-drawer-portal\">\n <reviewer-drawer\n :open=\"drawerOpen\"\n @request-review=\"requestReview\"\n @remove-reviewer=\"removeReviewerById\"\n @close=\"toggleDrawerOpen(false)\"\n />\n </mounting-portal>\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!./sidebar_reviewers.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!./sidebar_reviewers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sidebar_reviewers.vue?vue&type=template&id=660c3939\"\nimport script from \"./sidebar_reviewers.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_reviewers.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 { isArray } from 'lodash';\nimport Visibility from 'visibilityjs';\nimport { QUERY_PARAM_START_CURSOR, QUERY_PARAM_END_CURSOR } from './constants';\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method checks if the passed id follows that format\n *\n * @param {String|Number} id The id value\n * @returns {Boolean}\n */\nexport const isGid = (id) => {\n if (typeof id === 'string' && id.startsWith('gid://gitlab/')) {\n return true;\n }\n\n return false;\n};\n\nexport const parseGid = (gid) => {\n const [type, id] = `${gid}`.replace(/gid:\\/\\/gitlab\\//g, '').split('/');\n return { type, id };\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method extracts Id number\n * from the Id path\n *\n * @param {String} gid GraphQL global ID\n * @returns {Number}\n */\nexport const getIdFromGraphQLId = (gid = '') => {\n const rawId = isGid(gid) ? parseGid(gid).id : gid;\n const id = parseInt(rawId, 10);\n return Number.isInteger(id) ? id : null;\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method extracts Type string\n * from the Id path\n *\n * @param {String} gid GraphQL global ID\n * @returns {String}\n */\nexport const getTypeFromGraphQLId = (gid = '') => {\n if (!isGid(gid)) return null;\n\n const { type } = parseGid(gid);\n return type || null;\n};\n\nexport const mutationOperationMode = {\n append: 'APPEND',\n remove: 'REMOVE',\n replace: 'REPLACE',\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes a type and an id\n * and interpolates the 2 values into the expected GraphQL ID format.\n *\n * @param {String} type The entity type\n * @param {String|Number} id The id value\n * @returns {String}\n */\nexport const convertToGraphQLId = (type, id) => {\n if (typeof type !== 'string') {\n throw new TypeError(`type must be a string; got ${typeof type}`);\n }\n\n if (!['number', 'string'].includes(typeof id)) {\n throw new TypeError(`id must be a number or string; got ${typeof id}`);\n }\n\n if (isGid(id)) {\n return id;\n }\n\n return `gid://gitlab/${type}/${id}`;\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes a type and an\n * array of ids and tranforms the array values into the expected\n * GraphQL ID format.\n *\n * @param {String} type The entity type\n * @param {Array} ids An array of id values\n * @returns {Array}\n */\nexport const convertToGraphQLIds = (type, ids) => ids.map((id) => convertToGraphQLId(type, id));\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes an array of\n * GraphQL Ids and converts them to a number.\n *\n * @param {Array} ids An array of GraphQL IDs\n * @returns {Array}\n */\nexport const convertFromGraphQLIds = (ids) => {\n if (!isArray(ids)) {\n throw new TypeError(`ids must be an array; got ${typeof ids}`);\n }\n\n return ids.map((id) => getIdFromGraphQLId(id));\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes an array of nodes\n * and converts the `id` properties from a GraphQL Id to a number.\n *\n * @param {Array} nodes An array of nodes with an `id` property\n * @returns {Array}\n */\nexport const convertNodeIdsFromGraphQLIds = (nodes) => {\n if (!isArray(nodes)) {\n throw new TypeError(`nodes must be an array; got ${typeof nodes}`);\n }\n\n return nodes.map((node) => (node.id ? { ...node, id: getIdFromGraphQLId(node.id) } : node));\n};\n\n/**\n * This function takes a GraphQL query data as a required argument and\n * the field name to resolve as an optional argument\n * and returns resolved field's data or an empty array\n * @param {Object} queryData\n * @param {String} nodesField (in most cases it will be 'nodes')\n * @returns {Array}\n */\nexport const getNodesOrDefault = (queryData, nodesField = 'nodes') => {\n return queryData?.[nodesField] ?? [];\n};\n\nexport const toggleQueryPollingByVisibility = (queryRef, interval = 10000) => {\n const stopStartQuery = (query) => {\n if (!Visibility.hidden()) {\n query.startPolling(interval);\n } else {\n query.stopPolling();\n }\n };\n\n stopStartQuery(queryRef);\n Visibility.change(stopStartQuery.bind(null, queryRef));\n};\n\nexport const etagQueryHeaders = (featureCorrelation, etagResource = '') => {\n return {\n fetchOptions: {\n method: 'GET',\n },\n headers: {\n 'X-GITLAB-GRAPHQL-FEATURE-CORRELATION': featureCorrelation,\n 'X-GITLAB-GRAPHQL-RESOURCE-ETAG': etagResource,\n 'X-Requested-With': 'XMLHttpRequest',\n },\n };\n};\n\nexport const calculateGraphQLPaginationQueryParams = ({\n startCursor,\n endCursor,\n routeQuery: { start_cursor, end_cursor, ...routeQuery },\n}) => {\n if (startCursor) {\n return {\n ...routeQuery,\n [QUERY_PARAM_START_CURSOR]: startCursor,\n };\n }\n\n if (endCursor) {\n return {\n ...routeQuery,\n [QUERY_PARAM_END_CURSOR]: endCursor,\n };\n }\n\n return routeQuery;\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 { GlBadge } from '@gitlab/ui';\nimport $ from 'jquery';\nimport '~/lib/utils/jquery_at_who';\nimport { escape as lodashEscape, sortBy, template, escapeRegExp, memoize } from 'lodash';\nimport * as Emoji from '~/emoji';\nimport axios from '~/lib/utils/axios_utils';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { loadingIconForLegacyJS } from '~/loading_icon_for_legacy_js';\nimport { s__, __, sprintf } from '~/locale';\nimport { isUserBusy } from '~/set_status_modal/utils';\nimport SidebarMediator from '~/sidebar/sidebar_mediator';\nimport { state } from '~/sidebar/components/reviewers/sidebar_reviewers.vue';\nimport {\n ISSUABLE_EPIC,\n WORK_ITEMS_TYPE_MAP,\n WORK_ITEM_TYPE_ENUM_EPIC,\n} from '~/work_items/constants';\nimport AjaxCache from './lib/utils/ajax_cache';\nimport { spriteIcon } from './lib/utils/common_utils';\nimport { newDate } from './lib/utils/datetime_utility';\nimport { unicodeLetters } from './lib/utils/regexp';\nimport { renderVueComponentForLegacyJS } from './render_vue_component_for_legacy_js';\n\nconst USERS_ALIAS = 'users';\nconst ISSUES_ALIAS = 'issues';\nconst MILESTONES_ALIAS = 'milestones';\nconst MERGEREQUESTS_ALIAS = 'mergerequests';\nconst LABELS_ALIAS = 'labels';\nconst SNIPPETS_ALIAS = 'snippets';\nconst CONTACTS_ALIAS = 'contacts';\nconst WIKIS_ALIAS = 'wikis';\n\nconst CADENCE_REFERENCE_PREFIX = '[cadence:';\nconst ITERATION_REFERENCE_PREFIX = '*iteration:';\n\nexport const AT_WHO_ACTIVE_CLASS = 'at-who-active';\nexport const CONTACT_STATE_ACTIVE = 'active';\nexport const CONTACTS_ADD_COMMAND = '/add_contacts';\nexport const CONTACTS_REMOVE_COMMAND = '/remove_contacts';\n\nconst busyBadge = memoize(\n () =>\n renderVueComponentForLegacyJS(\n GlBadge,\n {\n class: 'gl-ml-2',\n props: {\n variant: 'warning',\n size: 'sm',\n },\n },\n s__('UserProfile|Busy'),\n ).outerHTML,\n);\n\n/**\n * Escapes user input before we pass it to at.js, which\n * renders it as HTML in the autocomplete dropdown.\n *\n * at.js allows you to reference data using `${}` syntax\n * (e.g. ${search}) which it replaces with the actual data\n * before rendering it in the autocomplete dropdown.\n * To prevent user input from executing this `${}` syntax,\n * we also need to escape the $ character.\n *\n * @param string user input\n * @return {string} escaped user input\n */\nexport function escape(string) {\n // To prevent double (or multiple) enconding attack\n // Decode the user input repeatedly prior to escaping the final decoded string.\n let encodedString = string;\n let decodedString = decodeURIComponent(encodedString);\n\n while (decodedString !== encodedString) {\n encodedString = decodeURIComponent(decodedString);\n decodedString = decodeURIComponent(encodedString);\n }\n\n return lodashEscape(decodedString.replace(/\\$/g, '$'));\n}\n\nexport function showAndHideHelper($input, alias = '') {\n $input.on(`hidden${alias ? '-' : ''}${alias}.atwho`, () => {\n $input.removeClass(AT_WHO_ACTIVE_CLASS);\n });\n $input.on(`shown${alias ? '-' : ''}${alias}.atwho`, () => {\n $input.addClass(AT_WHO_ACTIVE_CLASS);\n });\n}\n\n// This should be kept in sync with the backend filtering in\n// `User#gfm_autocomplete_search` and `Namespace#gfm_autocomplete_search`\nfunction createMemberSearchString(member) {\n return `${member.name.replace(/ /g, '')} ${member.username}`;\n}\n\nexport function membersBeforeSave(members) {\n return members.map((member) => {\n const GROUP_TYPE = 'Group';\n\n let title = '';\n if (member.username == null) {\n return member;\n }\n title = member.name;\n if (member.count && !member.mentionsDisabled) {\n title += ` (${member.count})`;\n }\n\n const autoCompleteAvatar = member.avatar_url || member.username.charAt(0).toUpperCase();\n\n const rectAvatarClass = member.type === GROUP_TYPE ? 'rect-avatar' : '';\n const imgAvatar = `<img src=\"${member.avatar_url}\" alt=\"${member.username}\" class=\"avatar ${rectAvatarClass} avatar-inline s24 gl-mr-2\"/>`;\n const txtAvatar = `<div class=\"avatar ${rectAvatarClass} avatar-inline s24 gl-mr-2\">${autoCompleteAvatar}</div>`;\n const avatarIcon = member.mentionsDisabled\n ? spriteIcon('notifications-off', 's16 vertical-align-middle gl-ml-2')\n : '';\n\n return {\n username: member.username,\n avatarTag: autoCompleteAvatar.length === 1 ? txtAvatar : imgAvatar,\n title,\n search: createMemberSearchString(member),\n icon: avatarIcon,\n availability: member?.availability,\n };\n });\n}\n\nexport const highlighter = (li, query) => {\n // override default behaviour to escape dot character\n // see https://github.com/ichord/At.js/pull/576\n if (!query) {\n return li;\n }\n const escapedQuery = escapeRegExp(query);\n const regexp = new RegExp(`>\\\\s*([^<]*?)(${escapedQuery})([^<]*)\\\\s*<`, 'ig');\n // eslint-disable-next-line max-params\n return li.replace(regexp, (str, $1, $2, $3) => `> ${$1}<strong>${$2}</strong>${$3} <`);\n};\n\n/**\n * Sets up subommands for quickaction for the given\n * input with the provided command and the subcommand descriptions.\n *\n * @param {Object} $input input element\n * @param {string} cmd command that triggers subcommand selection\n * @param {Record<string, { header: string, description: string }>} data object containing names of commands as keys with description and header as values\n *\n */\nexport const setupSubcommands = ($input, cmd, data) => {\n $input.filter('[data-supports-quick-actions=\"true\"]').atwho({\n // Always keep the trailing space otherwise the command won't display correctly\n at: `/${cmd} `,\n alias: cmd,\n data: Object.keys(data),\n maxLen: 100,\n displayTpl({ name }) {\n const { header, description } = data[name];\n\n return `<li><span class=\"name gl-font-bold\">${lodashEscape(header)}</span><small class=\"description\"><em>${lodashEscape(description)}</em></small></li>`;\n },\n });\n};\n\nexport const defaultAutocompleteConfig = {\n emojis: true,\n members: true,\n issues: true,\n mergeRequests: true,\n epics: true,\n iterations: true,\n milestones: true,\n labels: true,\n snippets: true,\n vulnerabilities: true,\n contacts: true,\n wikis: true,\n};\n\nclass GfmAutoComplete {\n constructor(dataSources = {}) {\n this.dataSources = dataSources;\n this.cachedData = {};\n this.isLoadingData = {};\n this.previousQuery = undefined;\n this.currentBackendFilterRequestController = null;\n }\n\n setup(input, enableMap = defaultAutocompleteConfig) {\n // Add GFM auto-completion to all input fields, that accept GFM input.\n this.input = input || $('.js-gfm-input');\n this.enableMap = enableMap;\n this.setupLifecycle();\n }\n\n setupLifecycle() {\n this.input.each((i, input) => {\n const $input = $(input);\n if (!$input.hasClass('js-gfm-input-initialized')) {\n // eslint-disable-next-line @gitlab/no-global-event-off\n $input.off('focus.setupAtWho').on('focus.setupAtWho', this.setupAtWho.bind(this, $input));\n $input.on('change.atwho', () => input.dispatchEvent(new Event('input')));\n // This triggers at.js again\n // Needed for quick actions with suffixes (ex: /label ~)\n $input.on('inserted-commands.atwho', $input.trigger.bind($input, 'keyup'));\n $input.on('clear-commands-cache.atwho', () => this.clearCache());\n $input.addClass('js-gfm-input-initialized');\n }\n });\n }\n\n setupAtWho($input) {\n if (this.enableMap.emojis) this.setupEmoji($input);\n if (this.enableMap.members) this.setupMembers($input);\n if (this.enableMap.issues) this.setupIssues($input);\n if (this.enableMap.milestones) this.setupMilestones($input);\n if (this.enableMap.mergeRequests) this.setupMergeRequests($input);\n if (this.enableMap.labels) this.setupLabels($input);\n if (this.enableMap.snippets) this.setupSnippets($input);\n if (this.enableMap.contacts) this.setupContacts($input);\n if (this.enableMap.wikis) this.setupWikis($input);\n\n $input.filter('[data-supports-quick-actions=\"true\"]').atwho({\n at: '/',\n alias: 'commands',\n searchKey: 'search',\n limit: 100,\n skipSpecialCharacterTest: true,\n skipMarkdownCharacterTest: true,\n data: GfmAutoComplete.defaultLoadingData,\n maxLen: 100,\n displayTpl(value) {\n const cssClasses = [];\n\n if (GfmAutoComplete.isLoading(value)) return GfmAutoComplete.Loading.template;\n // eslint-disable-next-line no-template-curly-in-string\n let tpl = '<li class=\"<%- className %>\"><span class=\"name\">/${name}</span>';\n if (value.aliases.length > 0) {\n tpl += ' <small class=\"aliases\">(or /<%- aliases.join(\", /\") %>)</small>';\n }\n if (value.params.length > 0) {\n tpl += ' <small class=\"params\"><%- params.join(\" \") %></small>';\n }\n if (value.warning && value.icon && value.icon === 'confidential') {\n tpl += `<small class=\"description gl-flex gl-items-center\">${spriteIcon(\n 'eye-slash',\n 's16 gl-mr-2',\n )}<em><%- warning %></em></small>`;\n } else if (value.warning) {\n tpl += '<small class=\"description\"><em><%- warning %></em></small>';\n } else if (value.description !== '') {\n tpl += '<small class=\"description\"><em><%- description %></em></small>';\n }\n tpl += '</li>';\n\n if (value.warning) {\n cssClasses.push('has-warning');\n }\n\n return template(tpl)({\n ...value,\n className: cssClasses.join(' '),\n });\n },\n insertTpl(value) {\n // eslint-disable-next-line no-template-curly-in-string\n let tpl = '/${name} ';\n let referencePrefix = null;\n if (value.params.length > 0) {\n const regexp = /^\\[[a-z]+:/;\n const match = regexp.exec(value.params);\n if (match) {\n [referencePrefix] = match;\n\n // EE-ONLY; iteration quick action should autocomplete iteration reference only\n if (referencePrefix === CADENCE_REFERENCE_PREFIX)\n referencePrefix = ITERATION_REFERENCE_PREFIX;\n\n tpl += '<%- referencePrefix %>';\n } else {\n [[referencePrefix]] = value.params;\n if (/^[@%~]/.test(referencePrefix)) {\n tpl += '<%- referencePrefix %>';\n } else if (/^[*]/.test(referencePrefix)) {\n // EE-ONLY\n referencePrefix = ITERATION_REFERENCE_PREFIX;\n tpl += '<%- referencePrefix %>';\n }\n }\n }\n return template(tpl, { interpolate: /<%=([\\s\\S]+?)%>/g })({ referencePrefix });\n },\n suffix: '',\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave(commands) {\n if (GfmAutoComplete.isLoading(commands)) return commands;\n return $.map(commands, (c) => {\n let search = c.name;\n if (c.aliases.length > 0) {\n search = `${search} ${c.aliases.join(' ')}`;\n }\n return {\n name: c.name,\n aliases: c.aliases,\n params: c.params,\n description: c.description,\n warning: c.warning,\n icon: c.icon,\n search,\n };\n });\n },\n matcher(flag, subtext) {\n const regexp = /(?:^|\\n)\\/([A-Za-z_]*)$/gi;\n const match = regexp.exec(subtext);\n if (match) {\n return match[1];\n }\n return null;\n },\n },\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n setSubmitReviewStates($input) {\n const REVIEW_STATES = {\n reviewed: {\n header: __('Comment'),\n description: __('Submit general feedback without explicit approval.'),\n },\n approve: {\n header: __('Approve'),\n description: __('Submit feedback and approve these changes.'),\n },\n requested_changes: {\n header: __('Request changes'),\n description: __('Submit feedback that should be addressed before merging.'),\n },\n };\n\n setupSubcommands($input, 'submit_review', REVIEW_STATES);\n }\n\n setupEmoji($input) {\n const fetchData = this.fetchData.bind(this);\n\n // Emoji\n $input.atwho({\n at: ':',\n displayTpl: GfmAutoComplete.Emoji.templateFunction,\n insertTpl: GfmAutoComplete.Emoji.insertTemplateFunction,\n skipSpecialCharacterTest: true,\n data: GfmAutoComplete.defaultLoadingData,\n maxLen: 100,\n callbacks: {\n ...this.getDefaultCallbacks(),\n matcher(flag, subtext) {\n const regexp = new RegExp(`(?:[^${unicodeLetters}0-9:]|\\n|^):([^ :][^:]*)?$`, 'gi');\n const match = regexp.exec(subtext);\n\n if (match && match.length) {\n // Since we have \"?\" on the group, it's possible it is undefined\n return match[1] || '';\n }\n\n return null;\n },\n filter(query, items) {\n if (GfmAutoComplete.isLoading(items)) {\n fetchData(this.$inputor, this.at);\n return items;\n }\n\n return GfmAutoComplete.Emoji.filter(query);\n },\n sorter(query, items) {\n this.setting.highlightFirst = this.setting.alwaysHighlightFirst || query.length > 0;\n if (GfmAutoComplete.isLoading(items)) {\n this.setting.highlightFirst = false;\n return items;\n }\n\n if (query.length === 0) {\n return items;\n }\n\n return GfmAutoComplete.Emoji.sorter(items);\n },\n },\n });\n showAndHideHelper($input);\n }\n\n setupMembers($input) {\n const instance = this;\n const fetchData = this.fetchData.bind(this);\n const MEMBER_COMMAND = {\n ASSIGN: '/assign',\n UNASSIGN: '/unassign',\n ASSIGN_REVIEWER: '/assign_reviewer',\n UNASSIGN_REVIEWER: '/unassign_reviewer',\n REASSIGN: '/reassign',\n CC: '/cc',\n REQUEST_REVIEW: '/request_review',\n };\n let assignees = [];\n let reviewers = [];\n let command = '';\n\n // Team Members\n $input.atwho({\n at: '@',\n alias: USERS_ALIAS,\n maxLen: 100,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n const { avatarTag, username, title, icon, availability } = value;\n if (username != null) {\n tmpl = GfmAutoComplete.Members.templateFunction({\n avatarTag,\n username,\n title,\n icon,\n availabilityStatus: availability && isUserBusy(availability) ? busyBadge() : '',\n });\n }\n return tmpl;\n },\n // eslint-disable-next-line no-template-curly-in-string\n insertTpl: '${atwho-at}${username}',\n limit: 10,\n delay: DEFAULT_DEBOUNCE_AND_THROTTLE_MS,\n searchKey: 'search',\n alwaysHighlightFirst: true,\n skipSpecialCharacterTest: true,\n data: GfmAutoComplete.defaultLoadingData,\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave: membersBeforeSave,\n matcher(flag, subtext) {\n const subtextNodes = subtext.split(/\\n+/g).pop().split(GfmAutoComplete.regexSubtext);\n\n // Check if @ is followed by '/assign', '/reassign', '/unassign' or '/cc' commands.\n command = subtextNodes.find((node) => {\n if (Object.values(MEMBER_COMMAND).includes(node)) {\n return node;\n }\n return null;\n });\n\n // Cache assignees & reviewers list for easier filtering later\n assignees =\n SidebarMediator.singleton?.store?.assignees?.map(createMemberSearchString) || [];\n reviewers = state.issuable?.reviewers?.nodes?.map(createMemberSearchString) || [];\n\n const match = GfmAutoComplete.defaultMatcher(flag, subtext, this.app.controllers);\n return match && match.length ? match[1] : null;\n },\n filter(query, data) {\n if (GfmAutoComplete.isLoading(data) || instance.previousQuery !== query) {\n instance.previousQuery = query;\n\n fetchData(this.$inputor, this.at, query);\n return data;\n }\n\n if (command === MEMBER_COMMAND.ASSIGN) {\n // Only include members which are not assigned to Issuable currently\n return data.filter((member) => !assignees.includes(member.search));\n }\n if (command === MEMBER_COMMAND.UNASSIGN) {\n // Only include members which are assigned to Issuable currently\n return data.filter((member) => assignees.includes(member.search));\n }\n if (command === MEMBER_COMMAND.ASSIGN_REVIEWER) {\n // Only include members which are not assigned as a reviewer to Issuable currently\n return data.filter((member) => !reviewers.includes(member.search));\n }\n if (command === MEMBER_COMMAND.UNASSIGN_REVIEWER) {\n // Only include members which are not assigned as a reviewer to Issuable currently\n return data.filter((member) => reviewers.includes(member.search));\n }\n\n return data;\n },\n sorter(query, items) {\n // Disable auto-selecting the loading icon\n this.setting.highlightFirst = this.setting.alwaysHighlightFirst;\n if (GfmAutoComplete.isLoading(items)) {\n this.setting.highlightFirst = false;\n return items;\n }\n\n if (!query) {\n return items;\n }\n\n return GfmAutoComplete.Members.sort(query, items);\n },\n },\n });\n showAndHideHelper($input, USERS_ALIAS);\n }\n\n setupIssues($input) {\n $input.atwho({\n at: '#',\n alias: ISSUES_ALIAS,\n searchKey: 'search',\n maxLen: 100,\n delay: DEFAULT_DEBOUNCE_AND_THROTTLE_MS,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.title != null) {\n tmpl = GfmAutoComplete.Issues.templateFunction(value);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n insertTpl: GfmAutoComplete.Issues.insertTemplateFunction,\n skipSpecialCharacterTest: true,\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave(issues) {\n return $.map(issues, (i) => {\n if (i.title == null) {\n return i;\n }\n return {\n id: i.iid,\n title: i.title,\n reference: i.reference,\n search: `${i.iid} ${i.title}`,\n iconName: i.icon_name,\n };\n });\n },\n },\n });\n showAndHideHelper($input, ISSUES_ALIAS);\n }\n\n setupMilestones($input) {\n $input.atwho({\n at: '%',\n alias: MILESTONES_ALIAS,\n searchKey: 'search',\n // eslint-disable-next-line no-template-curly-in-string\n insertTpl: '${atwho-at}${title}',\n maxLen: 100,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.title != null) {\n tmpl = GfmAutoComplete.Milestones.templateFunction(value.title, value.expired);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave(milestones) {\n const parsedMilestones = $.map(milestones, (m) => {\n if (m.title == null) {\n return m;\n }\n\n const dueDate = m.due_date ? newDate(m.due_date) : null;\n const expired = dueDate ? Date.now() > dueDate.getTime() : false;\n\n return {\n id: m.iid,\n title: m.title,\n search: m.title,\n expired,\n dueDate,\n };\n });\n\n // Sort milestones by due date when present.\n if (typeof parsedMilestones[0] === 'object') {\n return parsedMilestones.sort((mA, mB) => {\n // Move all expired milestones to the bottom.\n if (mA.expired) return 1;\n if (mB.expired) return -1;\n\n // Move milestones without due dates just above expired milestones.\n if (!mA.dueDate) return 1;\n if (!mB.dueDate) return -1;\n\n // Sort by due date in ascending order.\n return mA.dueDate - mB.dueDate;\n });\n }\n return parsedMilestones;\n },\n },\n });\n showAndHideHelper($input, MILESTONES_ALIAS);\n }\n\n setupMergeRequests($input) {\n $input.atwho({\n at: '!',\n alias: MERGEREQUESTS_ALIAS,\n searchKey: 'search',\n maxLen: 100,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.title != null) {\n tmpl = GfmAutoComplete.Issues.templateFunction(value);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n insertTpl: GfmAutoComplete.Issues.insertTemplateFunction,\n skipSpecialCharacterTest: true,\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave(merges) {\n return $.map(merges, (m) => {\n if (m.title == null) {\n return m;\n }\n return {\n id: m.iid,\n title: m.title,\n reference: m.reference,\n search: `${m.iid} ${m.title}`,\n };\n });\n },\n },\n });\n showAndHideHelper($input, MERGEREQUESTS_ALIAS);\n }\n\n setupLabels($input) {\n const instance = this;\n const fetchData = this.fetchData.bind(this);\n const LABEL_COMMAND = {\n LABEL: '/label',\n LABELS: '/labels',\n UNLABEL: '/unlabel',\n RELABEL: '/relabel',\n };\n let command = '';\n\n $input.atwho({\n at: '~',\n alias: LABELS_ALIAS,\n searchKey: 'search',\n data: GfmAutoComplete.defaultLoadingData,\n maxLen: 100,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Labels.templateFunction(value.color, value.title);\n if (GfmAutoComplete.isLoading(value)) {\n tmpl = GfmAutoComplete.Loading.template;\n }\n return tmpl;\n },\n // eslint-disable-next-line no-template-curly-in-string\n insertTpl: '${atwho-at}${title}',\n limit: 20,\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave(merges) {\n if (GfmAutoComplete.isLoading(merges)) return merges;\n return $.map(merges, (m) => ({\n title: m.title,\n color: m.color,\n search: m.title,\n set: m.set,\n }));\n },\n matcher(flag, subtext) {\n const subtextNodes = subtext.split(/\\n+/g).pop().split(GfmAutoComplete.regexSubtext);\n\n // Check if ~ is followed by '/label', '/labels', '/relabel' or '/unlabel' commands.\n command = subtextNodes.find((node) => {\n if (Object.values(LABEL_COMMAND).includes(node)) {\n return node;\n }\n return null;\n });\n\n // If any label matches the inserted text after the last `~`, suggest those labels,\n // even if any spaces or funky characters were typed.\n // This allows matching labels like \"Accepting merge requests\".\n const labels = instance.cachedData[flag];\n if (labels) {\n if (!subtext.includes(flag)) {\n // Do not match if there is no `~` before the cursor\n return null;\n }\n if (subtext.endsWith('~~')) {\n // Do not match if there are two consecutive `~` characters (strikethrough) before the cursor\n return null;\n }\n const lastCandidate = subtext.split(flag).pop();\n if (labels.find((label) => label.title.startsWith(lastCandidate))) {\n return lastCandidate;\n }\n }\n\n const match = GfmAutoComplete.defaultMatcher(flag, subtext, this.app.controllers);\n return match && match.length ? match[1] : null;\n },\n filter(query, data, searchKey) {\n if (GfmAutoComplete.isLoading(data)) {\n fetchData(this.$inputor, this.at);\n return data;\n }\n\n if (data === GfmAutoComplete.defaultLoadingData) {\n return $.fn.atwho.default.callbacks.filter(query, data, searchKey);\n }\n\n // The `LABEL_COMMAND.RELABEL` is intentionally skipped\n // because we want to return all the labels (unfiltered) for that command.\n if (command === LABEL_COMMAND.LABEL || command === LABEL_COMMAND.LABELS) {\n // Return labels with set: undefined.\n return data.filter((label) => !label.set);\n }\n if (command === LABEL_COMMAND.UNLABEL) {\n // Return labels with set: true.\n return data.filter((label) => label.set);\n }\n\n return data;\n },\n },\n });\n showAndHideHelper($input, LABELS_ALIAS);\n }\n\n setupSnippets($input) {\n $input.atwho({\n at: '$',\n alias: SNIPPETS_ALIAS,\n searchKey: 'search',\n maxLen: 100,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.title != null) {\n tmpl = GfmAutoComplete.Issues.templateFunction(value);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n // eslint-disable-next-line no-template-curly-in-string\n insertTpl: '${atwho-at}${id}',\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave(snippets) {\n return $.map(snippets, (m) => {\n if (m.title == null) {\n return m;\n }\n return {\n id: m.id,\n title: m.title,\n search: `${m.id} ${m.title}`,\n };\n });\n },\n },\n });\n showAndHideHelper($input, SNIPPETS_ALIAS);\n }\n\n setupWikis($input) {\n $input.atwho({\n at: '[[',\n suffix: ']]',\n alias: WIKIS_ALIAS,\n searchKey: 'title',\n data: GfmAutoComplete.defaultLoadingData,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.title != null) {\n tmpl = GfmAutoComplete.Wikis.templateFunction(value);\n }\n return tmpl;\n },\n // eslint-disable-next-line no-template-curly-in-string\n insertTpl: '${atwho-at}${title}|${slug}',\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeInsert(value) {\n const [title, slug] = value.substr(2).split('|');\n if (title.toLowerCase() === slug.toLowerCase()) {\n return `[[${slug}`;\n }\n return `[[${title}|${slug}`;\n },\n beforeSave(wikis) {\n return $.map(wikis, (m) => {\n if (m.title == null) {\n return m;\n }\n return {\n title: m.title,\n slug: m.slug,\n };\n });\n },\n },\n });\n showAndHideHelper($input, WIKIS_ALIAS);\n }\n\n setupContacts($input) {\n const fetchData = this.fetchData.bind(this);\n let command = '';\n\n $input.atwho({\n at: '[contact:',\n suffix: ']',\n alias: CONTACTS_ALIAS,\n searchKey: 'search',\n maxLen: 100,\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.email != null) {\n tmpl = GfmAutoComplete.Contacts.templateFunction(value);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n // eslint-disable-next-line no-template-curly-in-string\n insertTpl: '${atwho-at}${email}',\n callbacks: {\n ...this.getDefaultCallbacks(),\n beforeSave(contacts) {\n return $.map(contacts, (m) => {\n if (m.email == null) {\n return m;\n }\n return {\n id: m.id,\n email: m.email,\n firstName: m.first_name,\n lastName: m.last_name,\n search: `${m.email}`,\n state: m.state,\n set: m.set,\n };\n });\n },\n matcher(flag, subtext) {\n const subtextNodes = subtext.split(/\\n+/g).pop().split(GfmAutoComplete.regexSubtext);\n\n command = subtextNodes.find((node) => {\n if (node === CONTACTS_ADD_COMMAND || node === CONTACTS_REMOVE_COMMAND) {\n return node;\n }\n return null;\n });\n\n const match = GfmAutoComplete.defaultMatcher(flag, subtext, this.app.controllers);\n return match?.length ? match[1] : null;\n },\n filter(query, data, searchKey) {\n if (GfmAutoComplete.isLoading(data)) {\n fetchData(this.$inputor, this.at);\n return data;\n }\n\n if (data === GfmAutoComplete.defaultLoadingData) {\n return $.fn.atwho.default.callbacks.filter(query, data, searchKey);\n }\n\n if (command === CONTACTS_ADD_COMMAND) {\n // Return contacts that are active and not already on the issue\n return data.filter((contact) => contact.state === CONTACT_STATE_ACTIVE && !contact.set);\n }\n if (command === CONTACTS_REMOVE_COMMAND) {\n // Return contacts already on the issue\n return data.filter((contact) => contact.set);\n }\n\n return data;\n },\n },\n });\n showAndHideHelper($input, CONTACTS_ALIAS);\n }\n\n getDefaultCallbacks() {\n const self = this;\n\n return {\n sorter(query, items, searchKey) {\n this.setting.highlightFirst = this.setting.alwaysHighlightFirst || query.length > 0;\n if (GfmAutoComplete.isLoading(items)) {\n this.setting.highlightFirst = false;\n return items;\n }\n return $.fn.atwho.default.callbacks.sorter(query, items, searchKey);\n },\n filter(query, data, searchKey) {\n if (GfmAutoComplete.isTypeWithBackendFiltering(this.at)) {\n if (GfmAutoComplete.isLoading(data) || self.previousQuery !== query) {\n self.previousQuery = query;\n self.fetchData(this.$inputor, this.at, query);\n return data;\n }\n }\n\n if (GfmAutoComplete.isLoading(data)) {\n self.fetchData(this.$inputor, this.at);\n return data;\n }\n\n return $.fn.atwho.default.callbacks.filter(query, data, searchKey);\n },\n beforeInsert(value) {\n let withoutAt = value.substring(1);\n const at = value.charAt();\n\n if (value && !this.setting.skipSpecialCharacterTest) {\n const regex = at === '~' ? /\\W|^\\d+$/ : /\\W/;\n if (withoutAt && regex.test(withoutAt)) {\n withoutAt = `\"${withoutAt}\"`;\n }\n }\n\n // We can ignore this for quick actions because they are processed\n // before Markdown.\n if (!this.setting.skipMarkdownCharacterTest) {\n withoutAt = withoutAt\n .replace(/(~~|`|\\*)/g, '\\\\$1')\n .replace(/(\\b)(_+)/g, '$1\\\\$2') // only escape underscores at the start\n .replace(/(_+)(\\b)/g, '\\\\$1$2'); // or end of words\n }\n\n return `${at}${withoutAt}`;\n },\n matcher(flag, subtext) {\n const match = GfmAutoComplete.defaultMatcher(flag, subtext, this.app.controllers);\n\n if (match) {\n return match[1];\n }\n return null;\n },\n highlighter,\n };\n }\n\n fetchData($input, at, search) {\n if (this.isLoadingData[at] && !GfmAutoComplete.isTypeWithBackendFiltering(at)) return;\n\n this.isLoadingData[at] = true;\n const dataSource = this.dataSources[GfmAutoComplete.atTypeMap[at]];\n\n if (GfmAutoComplete.isTypeWithBackendFiltering(at)) {\n if (this.cachedData[at]?.[search]) {\n this.loadData($input, at, this.cachedData[at][search], { search });\n } else {\n if (this.currentBackendFilterRequestController) {\n this.currentBackendFilterRequestController.abort();\n }\n\n this.currentBackendFilterRequestController = new AbortController();\n\n axios\n .get(dataSource, {\n params: { search },\n signal: this.currentBackendFilterRequestController.signal,\n })\n .then(({ data }) => {\n this.loadData($input, at, data, { search });\n })\n .catch(() => {\n this.isLoadingData[at] = false;\n })\n .finally(() => {\n this.currentBackendFilterRequestController = null;\n });\n }\n } else if (this.cachedData[at]) {\n this.loadData($input, at, this.cachedData[at]);\n } else if (GfmAutoComplete.atTypeMap[at] === 'emojis') {\n this.loadEmojiData($input, at).catch(() => {});\n } else if (dataSource) {\n AjaxCache.retrieve(dataSource, true)\n .then((data) => {\n this.loadSubcommands($input, data);\n this.loadData($input, at, data);\n })\n .catch(() => {\n this.isLoadingData[at] = false;\n });\n } else {\n this.isLoadingData[at] = false;\n }\n }\n\n loadSubcommands($input, data) {\n if (data.some((c) => c.name === 'submit_review')) {\n this.setSubmitReviewStates($input);\n }\n }\n\n // eslint-disable-next-line max-params\n loadData($input, at, data, { search } = {}) {\n this.isLoadingData[at] = false;\n\n if (search !== undefined) {\n if (this.cachedData[at] === undefined) {\n this.cachedData[at] = {};\n }\n\n this.cachedData[at][search] = data;\n } else {\n this.cachedData[at] = data;\n }\n\n $input.atwho('load', at, data);\n // This trigger at.js again\n // otherwise we would be stuck with loading until the user types\n return $input.trigger('keyup');\n }\n\n async loadEmojiData($input, at) {\n await Emoji.initEmojiMap();\n\n this.loadData($input, at, ['loaded']);\n\n GfmAutoComplete.glEmojiTag = Emoji.glEmojiTag;\n }\n\n updateDataSources(newDataSources) {\n this.dataSources = { ...this.dataSources, ...newDataSources };\n this.clearCache();\n }\n\n clearCache() {\n this.cachedData = {};\n }\n\n destroy() {\n this.input.each((i, input) => {\n const $input = $(input);\n $input.atwho('destroy');\n });\n }\n\n static isLoading(data) {\n let dataToInspect = data;\n if (data && data.length > 0) {\n [dataToInspect] = data;\n }\n\n const loadingState = GfmAutoComplete.defaultLoadingData[0];\n return dataToInspect && (dataToInspect === loadingState || dataToInspect.name === loadingState);\n }\n\n static defaultMatcher(flag, subtext, controllers) {\n // The below is taken from At.js source\n // Tweaked to commands to start without a space only if char before is a non-word character\n // https://github.com/ichord/At.js\n const atSymbolsWithBar = Object.keys(controllers)\n .join('|')\n .replace(/[$]/, '\\\\$&')\n .replace(/([[\\]:])/g, '\\\\$1')\n .replace(/([*])/g, '\\\\$1');\n\n const atSymbolsWithoutBar = Object.keys(controllers).join('');\n const targetSubtext = subtext.split(GfmAutoComplete.regexSubtext).pop();\n const resultantFlag = flag.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n\n const accentAChar = decodeURI('%C3%80');\n const accentYChar = decodeURI('%C3%BF');\n\n // Holy regex, batman!\n const regexp = new RegExp(\n `^(?:\\\\B|[^a-zA-Z0-9_\\`${atSymbolsWithoutBar}]|\\\\s)${resultantFlag}(?!${atSymbolsWithBar})((?:[A-Za-z${accentAChar}-${accentYChar}0-9_'.+-:]|[^\\\\x00-\\\\x7a])*)$`,\n 'gi',\n );\n\n return regexp.exec(targetSubtext);\n }\n}\n\nGfmAutoComplete.regexSubtext = /\\s+/g;\n\nGfmAutoComplete.defaultLoadingData = ['loading'];\n\nGfmAutoComplete.atTypeMap = {\n ':': 'emojis',\n '@': 'members',\n '#': 'issues',\n '!': 'mergeRequests',\n '&': 'epics',\n '*iteration:': 'iterations',\n '~': 'labels',\n '%': 'milestones',\n '/': 'commands',\n '[vulnerability:': 'vulnerabilities',\n $: 'snippets',\n '[contact:': 'contacts',\n '[[': 'wikis',\n};\n\nGfmAutoComplete.typesWithBackendFiltering = ['vulnerabilities', 'members', 'issues'];\n\nGfmAutoComplete.isTypeWithBackendFiltering = (type) =>\n GfmAutoComplete.typesWithBackendFiltering.includes(GfmAutoComplete.atTypeMap[type]);\n\n// Emoji\nGfmAutoComplete.glEmojiTag = null;\nGfmAutoComplete.Emoji = {\n insertTemplateFunction(value) {\n return `:${value.emoji.name}:`;\n },\n templateFunction(item) {\n if (GfmAutoComplete.isLoading(item)) {\n return GfmAutoComplete.Loading.template;\n }\n\n const escapedFieldValue = escape(item.fieldValue);\n if (!GfmAutoComplete.glEmojiTag) {\n return `<li>${escapedFieldValue}</li>`;\n }\n\n return `<li>${GfmAutoComplete.glEmojiTag(item.emoji.name)} ${escapedFieldValue}</li>`;\n },\n filter(query) {\n if (query.length === 0) {\n return Emoji.getAllEmoji()\n .map((emoji) => ({\n emoji,\n fieldValue: emoji.name,\n }))\n .slice(0, 20);\n }\n\n return Emoji.searchEmoji(query);\n },\n sorter(items) {\n return items.sort(Emoji.sortEmoji);\n },\n};\n// Team Members\nGfmAutoComplete.Members = {\n templateFunction({ avatarTag, username, title, icon, availabilityStatus }) {\n return `<li>${avatarTag} ${username} <small>${escape(\n title,\n )}${availabilityStatus}</small> ${icon}</li>`;\n },\n nameOrUsernameStartsWith(member, query) {\n // `member.search` is a name:username string like `MargeSimpson msimpson`\n return member.search.split(' ').some((name) => name.toLowerCase().startsWith(query));\n },\n nameOrUsernameIncludes(member, query) {\n // `member.search` is a name:username string like `MargeSimpson msimpson`\n return member.search.toLowerCase().includes(query);\n },\n // This should be kept in sync with the backend sorting in\n // `User#gfm_autocomplete_search` and `Namespace#gfm_autocomplete_search`\n sort(query, members) {\n const lowercaseQuery = query.toLowerCase();\n const { nameOrUsernameStartsWith, nameOrUsernameIncludes } = GfmAutoComplete.Members;\n\n return sortBy(\n members.filter((member) => nameOrUsernameIncludes(member, lowercaseQuery)),\n (member) => (nameOrUsernameStartsWith(member, lowercaseQuery) ? -1 : 0),\n );\n },\n};\nGfmAutoComplete.Labels = {\n templateFunction(color, title) {\n return `<li><span class=\"dropdown-label-box\" style=\"background: ${escape(\n color,\n )}\"></span> ${escape(title)}</li>`;\n },\n};\n// Issues, MergeRequests and Snippets\nGfmAutoComplete.Issues = {\n insertTemplateFunction(value) {\n // eslint-disable-next-line no-template-curly-in-string\n return value.reference || '${atwho-at}${id}';\n },\n templateFunction({ id, title, reference, iconName }) {\n const mappedIconName =\n iconName === ISSUABLE_EPIC ? WORK_ITEMS_TYPE_MAP[WORK_ITEM_TYPE_ENUM_EPIC].icon : iconName;\n const icon = mappedIconName\n ? spriteIcon(mappedIconName, 'gl-fill-icon-subtle s16 gl-mr-2')\n : '';\n return `<li>${icon}<small>${escape(reference || id)}</small> ${escape(title)}</li>`;\n },\n};\n// Milestones\nGfmAutoComplete.Milestones = {\n templateFunction(title, expired) {\n if (expired) {\n return `<li>${sprintf(__('%{milestone} (expired)'), {\n milestone: escape(title),\n })}</li>`;\n }\n return `<li>${escape(title)}</li>`;\n },\n};\nGfmAutoComplete.Contacts = {\n templateFunction({ email, firstName, lastName }) {\n return `<li><small>${escape(firstName)} ${escape(lastName)}</small> ${escape(email)}</li>`;\n },\n};\nGfmAutoComplete.Wikis = {\n templateFunction({ title, slug }) {\n const icon = spriteIcon('document', 's16 vertical-align-middle gl-mr-2');\n const slugSpan =\n title.toLowerCase() !== slug.toLowerCase() ? ` <small>(${escape(slug)})</small>` : '';\n return `<li>${icon} ${escape(title)} ${slugSpan}</li>`;\n },\n};\n\nconst loadingSpinner = loadingIconForLegacyJS({\n inline: true,\n classes: ['gl-mr-2'],\n}).outerHTML;\n\nGfmAutoComplete.Loading = {\n template: `<li style=\"pointer-events: none;\">${loadingSpinner}Loading...</li>`,\n};\n\nexport default GfmAutoComplete;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isButtonTrigger)?_c('gl-button',_vm._b({attrs:{\"variant\":_vm.variant,\"category\":_vm.category,\"icon\":_vm.icon},on:{\"click\":_vm.openModal}},'gl-button',_vm.componentAttributes,false),[_vm._v(\"\\n \"+_vm._s(_vm.displayText)+\"\\n\")]):(_vm.isWithEmojiTrigger)?_c('gl-link',_vm._b({on:{\"click\":_vm.openModal}},'gl-link',_vm.componentAttributes,false),[_vm._v(\"\\n \"+_vm._s(_vm.displayText)+\"\\n \"),_c('gl-emoji',{staticClass:\"gl-mr-1 gl-align-baseline gl-text-size-reset\",attrs:{\"data-name\":_vm.icon}})],1):(_vm.isDropdownWithEmojiTrigger)?_c('gl-dropdown-item',_vm._b({on:{\"click\":_vm.openModal}},'gl-dropdown-item',_vm.componentAttributes,false),[_vm._v(\"\\n \"+_vm._s(_vm.displayText)+\"\\n \"),_c('gl-emoji',{staticClass:\"gl-mr-1 gl-align-baseline gl-text-size-reset\",attrs:{\"data-name\":_vm.icon}})],1):(_vm.isDisclosureTrigger)?_c('gl-disclosure-dropdown-item',_vm._b({attrs:{\"item\":_vm.item},on:{\"action\":_vm.handleDisclosureDropdownAction}},'gl-disclosure-dropdown-item',_vm.componentAttributes,false)):_c('gl-link',_vm._b({attrs:{\"data-is-link\":\"true\"},on:{\"click\":_vm.openModal}},'gl-link',_vm.componentAttributes,false),[_vm._v(\"\\n \"+_vm._s(_vm.displayText)+\"\\n\")])\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!./invite_members_trigger.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!./invite_members_trigger.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink, GlDropdownItem, GlDisclosureDropdownItem } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport eventHub from '../event_hub';\nimport {\n TRIGGER_ELEMENT_BUTTON,\n TRIGGER_ELEMENT_WITH_EMOJI,\n TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI,\n TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN,\n} from '../constants';\n\nexport default {\n components: { GlButton, GlLink, GlDropdownItem, GlDisclosureDropdownItem },\n props: {\n displayText: {\n type: String,\n required: false,\n default: s__('InviteMembers|Invite team members'),\n },\n icon: {\n type: String,\n required: false,\n default: '',\n },\n classes: {\n type: String,\n required: false,\n default: '',\n },\n variant: {\n type: String,\n required: false,\n default: undefined,\n },\n category: {\n type: String,\n required: false,\n default: undefined,\n },\n triggerSource: {\n type: String,\n required: true,\n },\n triggerElement: {\n type: String,\n required: false,\n default: 'button',\n },\n },\n computed: {\n componentAttributes() {\n return {\n class: this.classes,\n 'data-testid': 'invite-members-button',\n };\n },\n item() {\n return { text: this.displayText };\n },\n isButtonTrigger() {\n return this.triggerElement === TRIGGER_ELEMENT_BUTTON;\n },\n isWithEmojiTrigger() {\n return this.triggerElement === TRIGGER_ELEMENT_WITH_EMOJI;\n },\n isDropdownWithEmojiTrigger() {\n return this.triggerElement === TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI;\n },\n isDisclosureTrigger() {\n return this.triggerElement === TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN;\n },\n },\n methods: {\n openModal() {\n eventHub.$emit('openModal', { source: this.triggerSource });\n },\n handleDisclosureDropdownAction() {\n this.openModal();\n this.$emit('modal-opened');\n },\n },\n};\n</script>\n\n<template>\n <gl-button\n v-if=\"isButtonTrigger\"\n v-bind=\"componentAttributes\"\n :variant=\"variant\"\n :category=\"category\"\n :icon=\"icon\"\n @click=\"openModal\"\n >\n {{ displayText }}\n </gl-button>\n <gl-link v-else-if=\"isWithEmojiTrigger\" v-bind=\"componentAttributes\" @click=\"openModal\">\n {{ displayText }}\n <gl-emoji class=\"gl-mr-1 gl-align-baseline gl-text-size-reset\" :data-name=\"icon\" />\n </gl-link>\n <gl-dropdown-item\n v-else-if=\"isDropdownWithEmojiTrigger\"\n v-bind=\"componentAttributes\"\n @click=\"openModal\"\n >\n {{ displayText }}\n <gl-emoji class=\"gl-mr-1 gl-align-baseline gl-text-size-reset\" :data-name=\"icon\" />\n </gl-dropdown-item>\n <gl-disclosure-dropdown-item\n v-else-if=\"isDisclosureTrigger\"\n v-bind=\"componentAttributes\"\n :item=\"item\"\n @action=\"handleDisclosureDropdownAction\"\n />\n <gl-link v-else v-bind=\"componentAttributes\" data-is-link=\"true\" @click=\"openModal\">\n {{ displayText }}\n </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./invite_members_trigger.vue?vue&type=template&id=cb0ec660\"\nimport script from \"./invite_members_trigger.vue?vue&type=script&lang=js\"\nexport * from \"./invite_members_trigger.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 createEventHub from '~/helpers/event_hub_factory';\n\nconst eventHub = createEventHub();\n\n// TODO: remove eventHub hack after code splitting refactor\nwindow.emitSidebarEvent = (...args) => eventHub.$emit(...args);\n\nexport default eventHub;\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestRequestRereview\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"userId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UserID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestReviewerRereview\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"userId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"userId\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":207}};\n doc.loc.source = {\"body\":\"mutation mergeRequestRequestRereview($projectPath: ID!, $iid: String!, $userId: UserID!) {\\n mergeRequestReviewerRereview(input: { projectPath: $projectPath, iid: $iid, userId: $userId }) {\\n errors\\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[\"mergeRequestRequestRereview\"] = oneQuery(doc, \"mergeRequestRequestRereview\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"}},\"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\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":80}};\n doc.loc.source = {\"body\":\"fragment User on User {\\n id\\n avatarUrl\\n name\\n username\\n webUrl\\n webPath\\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[\"User\"] = oneQuery(doc, \"User\");\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","import { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport const PROJECT_SELECT_LABEL_ID = 'project-select';\nexport const SEARCH_DELAY = 200;\nexport const VALID_TOKEN_BACKGROUND = 'gl-bg-green-100';\nexport const WARNING_TOKEN_BACKGROUND = 'gl-bg-orange-100';\nexport const INVALID_TOKEN_BACKGROUND = 'gl-bg-red-100';\nexport const TOAST_MESSAGE_LOCALSTORAGE_KEY = 'members_invited_successfully';\nexport const MEMBERS_WITH_QUEUED_STATUS_LOCALSTORAGE_KEY = 'members_queued_successfully';\n\nexport const GROUP_FILTERS = {\n ALL: 'all',\n DESCENDANT_GROUPS: 'descendant_groups',\n};\n\nexport const USERS_FILTER_ALL = 'all';\nexport const USERS_FILTER_SAML_PROVIDER_ID = 'saml_provider_id';\nexport const TRIGGER_ELEMENT_BUTTON = 'button';\nexport const TOP_NAV_INVITE_MEMBERS_COMPONENT = 'invite_members';\nexport const TRIGGER_ELEMENT_WITH_EMOJI = 'text-emoji';\nexport const TRIGGER_ELEMENT_DROPDOWN_WITH_EMOJI = 'dropdown-text-emoji';\nexport const TRIGGER_ELEMENT_DISCLOSURE_DROPDOWN = 'dropdown-text';\nexport const INVITE_MEMBER_MODAL_TRACKING_CATEGORY = 'invite_members_modal';\nexport const IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_CATEGORY = 'invite_project_members_modal';\nexport const IMPORT_PROJECT_MEMBERS_MODAL_TRACKING_LABEL = 'project-members-page';\nexport const MEMBERS_MODAL_DEFAULT_TITLE = s__('InviteMembersModal|Invite members');\nexport const MEMBERS_MODAL_CELEBRATE_TITLE = s__(\n 'InviteMembersModal|GitLab is better with colleagues!',\n);\nexport const MEMBERS_MODAL_CELEBRATE_INTRO = s__(\n 'InviteMembersModal|How about inviting a colleague or two to join you?',\n);\nexport const MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT = s__(\n \"InviteMembersModal|You're inviting members to the %{strongStart}%{name}%{strongEnd} group.\",\n);\n\nexport const MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT = s__(\n \"InviteMembersModal|You're inviting members to the %{strongStart}%{name}%{strongEnd} project.\",\n);\nexport const MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT = s__(\n \"InviteMembersModal|Congratulations on creating your project, you're almost there!\",\n);\nexport const MEMBERS_SEARCH_FIELD = s__('InviteMembersModal|Username, name or email address');\nexport const MEMBERS_PLACEHOLDER = s__(\n 'InviteMembersModal|Select from GitLab usernames or enter email addresses',\n);\n\nexport const GROUP_MODAL_DEFAULT_TITLE = s__('InviteMembersModal|Invite a group');\nexport const GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT = s__(\n \"InviteMembersModal|You're inviting a group to the %{strongStart}%{name}%{strongEnd} group.\",\n);\nexport const GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT = s__(\n \"InviteMembersModal|You're inviting a group to the %{strongStart}%{name}%{strongEnd} project.\",\n);\n\nexport const GROUP_MODAL_TO_GROUP_ALERT_BODY = s__(\n 'InviteMembersModal|Inviting a group %{linkStart}adds its members to your group%{linkEnd}, including members who join after the invite. This might put your group over the free %{count} user limit.',\n);\nexport const GROUP_MODAL_TO_GROUP_ALERT_LINK = helpPagePath(\n 'user/project/members/sharing_projects_groups',\n {\n anchor: 'invite-a-group-to-a-group',\n },\n);\nexport const GROUP_MODAL_TO_PROJECT_ALERT_BODY = s__(\n 'InviteMembersModal|Inviting a group %{linkStart}adds its members to your project%{linkEnd}, including members who join after the invite. This might put your group over the free %{count} user limit.',\n);\nexport const GROUP_MODAL_TO_PROJECT_ALERT_LINK = helpPagePath(\n 'user/project/members/sharing_projects_groups',\n {\n anchor: 'invite-a-group-to-a-project',\n },\n);\n\nexport const GROUP_SEARCH_FIELD = s__('InviteMembersModal|Select a group to invite');\nexport const GROUP_PLACEHOLDER = s__('InviteMembersModal|Search for a group to invite');\n\nexport const ACCESS_LEVEL = s__('InviteMembersModal|Select maximum role');\nexport const ACCESS_EXPIRE_DATE = s__('InviteMembersModal|Access expiration date (optional)');\nexport const TOAST_MESSAGE_SUCCESSFUL = s__('InviteMembersModal|Members were successfully added.');\nexport const QUEUED_MESSAGE_SUCCESSFUL = s__(\n 'InviteMembersModal|Some invitations have been queued for administrator approval.',\n);\nexport const INVALID_FEEDBACK_MESSAGE_DEFAULT = s__('InviteMembersModal|Something went wrong');\nexport const READ_MORE_TEXT = s__(\n `InviteMembersModal|%{linkStart}Read more%{linkEnd} about role permissions. You can change this later. Invited members are limited to this role or their current group role, whichever is lower.`,\n);\nexport const READ_MORE_ACCESS_EXPIRATION_TEXT = s__(\n `InviteMembersModal|%{linkStart}Read more%{linkEnd} about access expiration`,\n);\nexport const INVITE_BUTTON_TEXT = s__('InviteMembersModal|Invite');\nexport const INVITE_BUTTON_TEXT_DISABLED = s__('InviteMembersModal|Manage members');\nexport const CANCEL_BUTTON_TEXT = s__('InviteMembersModal|Cancel');\nexport const HEADER_CLOSE_LABEL = s__('InviteMembersModal|Close invite team members');\nexport const MEMBER_ERROR_LIST_TEXT = s__(\n 'InviteMembersModal|Review the invite errors and try again:',\n);\nexport const COLLAPSED_ERRORS = s__('InviteMembersModal|Show more (%{count})');\nexport const EXPANDED_ERRORS = s__('InviteMembersModal|Show less');\nexport const EMPTY_INVITES_ALERT_TEXT = s__('InviteMembersModal|Please add members to invite');\n\nexport const MEMBER_MODAL_LABELS = {\n modal: {\n default: {\n title: MEMBERS_MODAL_DEFAULT_TITLE,\n },\n celebrate: {\n title: MEMBERS_MODAL_CELEBRATE_TITLE,\n intro: MEMBERS_MODAL_CELEBRATE_INTRO,\n },\n },\n toGroup: {\n default: {\n introText: MEMBERS_TO_GROUP_DEFAULT_INTRO_TEXT,\n },\n },\n toProject: {\n default: {\n introText: MEMBERS_TO_PROJECT_DEFAULT_INTRO_TEXT,\n },\n celebrate: {\n introText: MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT,\n },\n },\n searchField: MEMBERS_SEARCH_FIELD,\n placeHolder: MEMBERS_PLACEHOLDER,\n toastMessageSuccessful: TOAST_MESSAGE_SUCCESSFUL,\n memberErrorListText: MEMBER_ERROR_LIST_TEXT,\n collapsedErrors: COLLAPSED_ERRORS,\n expandedErrors: EXPANDED_ERRORS,\n emptyInvitesAlertText: EMPTY_INVITES_ALERT_TEXT,\n};\n\nexport const GROUP_MODAL_LABELS = {\n title: GROUP_MODAL_DEFAULT_TITLE,\n toGroup: {\n introText: GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT,\n notificationText: GROUP_MODAL_TO_GROUP_ALERT_BODY,\n notificationLink: GROUP_MODAL_TO_GROUP_ALERT_LINK,\n },\n toProject: {\n introText: GROUP_MODAL_TO_PROJECT_DEFAULT_INTRO_TEXT,\n notificationText: GROUP_MODAL_TO_PROJECT_ALERT_BODY,\n notificationLink: GROUP_MODAL_TO_PROJECT_ALERT_LINK,\n },\n searchField: GROUP_SEARCH_FIELD,\n placeHolder: GROUP_PLACEHOLDER,\n toastMessageSuccessful: TOAST_MESSAGE_SUCCESSFUL,\n};\n\nexport const ON_SHOW_TRACK_LABEL = 'over_limit_modal_viewed';\nexport const ON_CELEBRATION_TRACK_LABEL = 'invite_celebration_modal';\n\nexport const WARNING_ALERT_TITLE = s__(\n 'InviteMembersModal|You only have space for %{count} more %{members} in %{name}',\n);\nexport const DANGER_ALERT_TITLE = s__(\n \"InviteMembersModal|You've reached your %{count} %{members} limit for %{name}\",\n);\n\nexport const REACHED_LIMIT_VARIANT = 'reached';\nexport const CLOSE_TO_LIMIT_VARIANT = 'close';\n\nexport const REACHED_LIMIT_MESSAGE = s__(\n 'InviteMembersModal|To invite new users to this top-level group, you must remove existing users. You can still add existing users from the top-level group, including any subgroups and projects.',\n);\n\nexport const REACHED_LIMIT_UPGRADE_SUGGESTION_MESSAGE = REACHED_LIMIT_MESSAGE.concat(\n s__(\n 'InviteMembersModal| To get more members, the owner of this top-level group can %{trialLinkStart}start a trial%{trialLinkEnd} or %{upgradeLinkStart}upgrade%{upgradeLinkEnd} to a paid tier.',\n ),\n);\n\nexport const CLOSE_TO_LIMIT_MESSAGE = s__(\n 'InviteMembersModal|To get more members an owner of the group can %{trialLinkStart}start a trial%{trialLinkEnd} or %{upgradeLinkStart}upgrade%{upgradeLinkEnd} to a paid tier.',\n);\nexport const BLOCKED_SEAT_OVERAGES_BODY = s__(\n 'InviteMembersModal|You must purchase more seats for your subscription before this amount of users can be added.',\n);\nexport const BLOCKED_SEAT_OVERAGES_CTA = s__('InviteMembersModal|Purchase more seats');\nexport const BLOCKED_SEAT_OVERAGES_CTA_DOCS = s__('InviteMembersModal|Learn how to add seats');\nexport const BLOCKED_SEAT_OVERAGES_ERROR_REASON = 'seat_limit_exceeded_error';\n","import { parseBoolean } from '~/lib/utils/common_utils';\n\nexport default class SidebarStore {\n constructor(options) {\n if (!SidebarStore.singleton) {\n this.initSingleton(options);\n }\n\n // eslint-disable-next-line no-constructor-return\n return SidebarStore.singleton;\n }\n\n initSingleton(options) {\n const { currentUser, rootPath, editable, timeTrackingLimitToHours } = options;\n this.currentUser = currentUser;\n this.rootPath = rootPath;\n this.editable = parseBoolean(editable);\n this.timeEstimate = 0;\n this.totalTimeSpent = 0;\n this.humanTimeEstimate = '';\n this.humanTimeSpent = '';\n this.timeTrackingLimitToHours = timeTrackingLimitToHours;\n this.assignees = [];\n this.reviewers = [];\n this.isFetching = {\n assignees: true,\n reviewers: true,\n };\n this.isLoading = {};\n this.autocompleteProjects = [];\n this.moveToProjectId = 0;\n this.isLockDialogOpen = false;\n this.participants = [];\n this.projectEmailsEnabled = true;\n this.subscribeDisabledDescription = '';\n this.subscribed = null;\n this.changing = false;\n this.issuableType = options.issuableType;\n\n SidebarStore.singleton = this;\n }\n\n setAssigneeData({ assignees }) {\n this.isFetching.assignees = false;\n if (assignees) {\n this.assignees = assignees;\n }\n }\n\n setReviewerData({ reviewers }) {\n this.isFetching.reviewers = false;\n if (reviewers) {\n this.reviewers = reviewers;\n }\n }\n\n resetChanging() {\n this.changing = false;\n }\n\n setTimeTrackingData(data) {\n this.timeEstimate = data.time_estimate;\n this.totalTimeSpent = data.total_time_spent;\n this.humanTimeEstimate = data.human_time_estimate;\n this.humanTotalTimeSpent = data.human_total_time_spent;\n }\n\n setFetchingState(key, value) {\n this.isFetching[key] = value;\n }\n\n setLoadingState(key, value) {\n this.isLoading[key] = value;\n }\n\n addAssignee(assignee) {\n if (!this.findAssignee(assignee)) {\n this.changing = true;\n this.assignees.push(assignee);\n }\n }\n\n addReviewer(reviewer) {\n if (!this.findReviewer(reviewer)) {\n this.reviewers.push(reviewer);\n }\n }\n\n updateAssignee(id, stateKey) {\n const assignee = this.findAssignee({ id });\n\n if (assignee) {\n assignee[stateKey] = !assignee[stateKey];\n }\n }\n\n updateReviewer(id, stateKey) {\n const reviewer = this.findReviewer({ id });\n\n if (reviewer) {\n reviewer[stateKey] = !reviewer[stateKey];\n }\n }\n\n overwrite(key, newData) {\n this[key] = newData;\n }\n\n findAssignee(findAssignee) {\n return this.assignees.find(({ id }) => id === findAssignee.id);\n }\n\n findReviewer(findReviewer) {\n return this.reviewers.find(({ id }) => id === findReviewer.id);\n }\n\n removeAssignee(assignee) {\n if (assignee) {\n this.changing = true;\n this.assignees = this.assignees.filter(({ id }) => id !== assignee.id);\n }\n }\n\n removeReviewer(reviewer) {\n if (reviewer) {\n this.reviewers = this.reviewers.filter(({ id }) => id !== reviewer.id);\n }\n }\n\n removeAllAssignees() {\n this.changing = true;\n this.assignees = [];\n }\n\n removeAllReviewers() {\n this.reviewers = [];\n }\n\n setAssigneesFromRealtime(data) {\n this.assignees = data;\n }\n\n setReviewersFromRealtime(data) {\n this.reviewers = data;\n }\n\n setAutocompleteProjects(projects) {\n this.autocompleteProjects = projects;\n }\n\n setSubscribedState(subscribed) {\n this.subscribed = subscribed;\n }\n\n setMoveToProjectId(moveToProjectId) {\n this.moveToProjectId = moveToProjectId;\n }\n}\n","/**\n * Regexp utility for the convenience of working with regular expressions.\n */\n\n// Inspired by https://github.com/mishoo/UglifyJS/blob/2bc1d02363db3798d5df41fb5059a19edca9b7eb/lib/parse-js.js#L203\n// Unicode 6.1\nexport const unicodeLetters =\n '\\\\u0041-\\\\u005A\\\\u0061-\\\\u007A\\\\u00AA\\\\u00B5\\\\u00BA\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0\\\\u08A2-\\\\u08AC\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977\\\\u0979-\\\\u097F\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C33\\\\u0C35-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F0\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191C\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA697\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA793\\\\uA7A0-\\\\uA7AA\\\\uA7F8-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA80-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC';\n\nexport const semverRegex =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\nexport const noSpacesRegex = /^\\S+$/;\n\n/**\n * Checks if a string contains potential regular expression elements.\n *\n * @param {string} str - The string to check for potential regex elements.\n * @returns {boolean} - Returns true if the string contains regex elements, otherwise false.\n */\n\nexport const containsPotentialRegex = (str) => {\n const regexPattern = /[*+?^${}()|[\\]\\\\]/;\n return regexPattern.test(str);\n};\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"projectAutocompleteUsersSearchWithMRPermissions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"users\"},\"name\":{\"kind\":\"Name\",\"value\":\"autocompleteUsers\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"UserAvailability\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestInteraction\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestId\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":477}};\n doc.loc.source = {\"body\":\"#import \\\"../fragments/user.fragment.graphql\\\"\\n#import \\\"~/graphql_shared/fragments/user_availability.fragment.graphql\\\"\\n\\nquery projectAutocompleteUsersSearchWithMRPermissions(\\n $search: String!\\n $fullPath: ID!\\n $mergeRequestId: MergeRequestID!\\n) {\\n workspace: project(fullPath: $fullPath) {\\n id\\n users: autocompleteUsers(search: $search) {\\n ...User\\n ...UserAvailability\\n mergeRequestInteraction(id: $mergeRequestId) {\\n canMerge\\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(\"../fragments/user.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user_availability.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[\"projectAutocompleteUsersSearchWithMRPermissions\"] = oneQuery(doc, \"projectAutocompleteUsersSearchWithMRPermissions\");\n \n","import $ from 'jquery';\nimport GfmAutoComplete from 'ee_else_ce/gfm_auto_complete';\nimport { parseBoolean } from '~/lib/utils/common_utils';\n\nexport default function initGFMInput($els) {\n $els.each((i, el) => {\n const gfm = new GfmAutoComplete(gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources);\n const enableGFM = parseBoolean(el.dataset.supportsAutocomplete);\n\n gfm.setup($(el), {\n emojis: true,\n members: enableGFM,\n issues: enableGFM,\n iterations: enableGFM,\n milestones: enableGFM,\n mergeRequests: enableGFM,\n labels: enableGFM,\n vulnerabilities: enableGFM,\n });\n });\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.userPermissions.adminMergeRequest)?_c('update-reviewers',{attrs:{\"selected-reviewers\":_vm.currentSelectedReviewers},scopedSlots:_vm._u([{key:\"default\",fn:function({ loading, updateReviewers }){return [_c('gl-collapsible-listbox',{staticClass:\"reviewers-dropdown\",attrs:{\"header-text\":_vm.$options.i18n.selectReviewer,\"reset-button-label\":_vm.$options.i18n.unassign,\"searchable\":\"\",\"multiple\":\"\",\"placement\":\"bottom-end\",\"is-check-centered\":\"\",\"items\":_vm.mappedUsers,\"loading\":loading,\"searching\":_vm.searching},on:{\"search\":_vm.debouncedFetchAutocompleteUsers,\"shown\":_vm.shownDropdown,\"hidden\":updateReviewers,\"reset\":_vm.removeAllReviewers},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('gl-button',{staticClass:\"js-sidebar-dropdown-toggle *:!gl-text-default\",attrs:{\"size\":\"small\",\"category\":\"tertiary\",\"loading\":loading,\"data-track-action\":\"click_edit_button\",\"data-track-label\":\"right_sidebar\",\"data-track-property\":\"reviewer\",\"data-testid\":\"reviewers-edit-button\"}},[_vm._v(\"\\n \"+_vm._s(_vm.__('Edit'))+\"\\n \")])]},proxy:true},{key:\"list-item\",fn:function({ item }){return [_c('span',{staticClass:\"gl-flex gl-items-center\"},[_c('div',{staticClass:\"gl-relative gl-mr-3\"},[_c('gl-avatar',{attrs:{\"size\":32,\"src\":item.avatarUrl,\"entity-name\":item.value}}),_vm._v(\" \"),(item.mergeRequestInteraction && !item.mergeRequestInteraction.canMerge)?_c('gl-icon',{staticClass:\"reviewer-merge-icon\",attrs:{\"name\":\"warning-solid\",\"aria-hidden\":\"true\"}}):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"gl-flex gl-flex-col\"},[_c('span',{staticClass:\"gl-whitespace-nowrap gl-font-bold\"},[_vm._v(_vm._s(item.text))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(\" \"+_vm._s(item.secondaryText))])])])]}},(_vm.directlyInviteMembers)?{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-flex-col gl-border-t-1 gl-border-t-dropdown !gl-p-2 !gl-pt-0 gl-border-t-solid\"},[_c('invite-members-trigger',{staticClass:\"!gl-mt-2 !gl-justify-start\",attrs:{\"trigger-element\":\"button\",\"display-text\":_vm.__('Invite members'),\"trigger-source\":\"merge_request_reviewers_dropdown\",\"category\":\"tertiary\",\"block\":\"\"}})],1)]},proxy:true}:null],null,true),model:{value:(_vm.currentSelectedReviewers),callback:function ($$v) {_vm.currentSelectedReviewers=$$v},expression:\"currentSelectedReviewers\"}})]}}],null,false,1187136036)}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./update_reviewers.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!./update_reviewers.vue?vue&type=script&lang=js\"","<script>\nimport setReviewersMutation from './queries/set_reviewers.mutation.graphql';\n\nexport default {\n inject: ['projectPath', 'issuableIid'],\n props: {\n selectedReviewers: {\n type: Array,\n required: true,\n },\n },\n data() {\n return {\n loading: false,\n };\n },\n methods: {\n async updateReviewers() {\n this.loading = true;\n\n await this.$apollo.mutate({\n mutation: setReviewersMutation,\n variables: {\n reviewerUsernames: this.selectedReviewers,\n projectPath: this.projectPath,\n iid: this.issuableIid,\n },\n });\n\n this.loading = false;\n },\n },\n render() {\n return this.$scopedSlots.default({\n loading: this.loading,\n updateReviewers: this.updateReviewers,\n });\n },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./update_reviewers.vue?vue&type=script&lang=js\"\nexport * from \"./update_reviewers.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!./reviewer_dropdown.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!./reviewer_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { debounce } from 'lodash';\nimport { GlCollapsibleListbox, GlButton, GlAvatar, GlIcon } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport userAutocompleteWithMRPermissionsQuery from '~/graphql_shared/queries/project_autocomplete_users_with_mr_permissions.query.graphql';\nimport InviteMembersTrigger from '~/invite_members/components/invite_members_trigger.vue';\nimport UpdateReviewers from './update_reviewers.vue';\nimport userPermissionsQuery from './queries/user_permissions.query.graphql';\n\nexport default {\n apollo: {\n userPermissions: {\n query: userPermissionsQuery,\n variables() {\n return {\n fullPath: this.projectPath,\n iid: this.issuableIid,\n };\n },\n update: (data) => data.project?.mergeRequest?.userPermissions || {},\n },\n },\n components: {\n GlCollapsibleListbox,\n GlButton,\n GlAvatar,\n GlIcon,\n UpdateReviewers,\n InviteMembersTrigger,\n },\n inject: ['projectPath', 'issuableId', 'issuableIid', 'directlyInviteMembers'],\n props: {\n users: {\n type: Array,\n required: false,\n default: () => [],\n },\n selectedReviewers: {\n type: Array,\n required: false,\n default: () => [],\n },\n visibleReviewers: {\n type: Array,\n required: false,\n default: () => [],\n },\n },\n data() {\n return {\n search: '',\n searching: false,\n fetchedUsers: [],\n currentSelectedReviewers: this.selectedReviewers.map((r) => r.username),\n userPermissions: {},\n };\n },\n computed: {\n mappedUsers() {\n const items = [];\n let users;\n\n if (this.selectedReviewersToShow.length && !this.search) {\n items.push({\n text: __('Reviewers'),\n options: this.selectedReviewersToShow.map((user) => this.mapUser(user)),\n });\n }\n\n if (this.fetchedUsers.length) {\n users = this.fetchedUsers;\n } else {\n users = this.users;\n }\n\n items.push({\n textSrOnly: true,\n text: __('Users'),\n options: users\n .filter((u) =>\n this.search ? true : !this.selectedReviewers.find(({ id }) => u.id === id),\n )\n .map((user) => this.mapUser(user)),\n });\n\n return items;\n },\n selectedReviewersToShow() {\n return this.selectedReviewers.filter((user) =>\n this.visibleReviewers.map((gqlUser) => gqlUser.id).includes(user.id),\n );\n },\n },\n watch: {\n selectedReviewers(newVal) {\n this.currentSelectedReviewers = newVal.map((r) => r.username);\n },\n },\n created() {\n this.debouncedFetchAutocompleteUsers = debounce(\n (search) => this.fetchAutocompleteUsers(search),\n DEFAULT_DEBOUNCE_AND_THROTTLE_MS,\n );\n },\n methods: {\n mapUser(user) {\n return {\n value: user.username,\n text: user.name,\n secondaryText: `@${user.username}`,\n ...user,\n };\n },\n shownDropdown() {\n if (!this.users.length && !this.fetchedUsers.length) {\n this.fetchAutocompleteUsers();\n }\n },\n async fetchAutocompleteUsers(search = '') {\n this.search = search;\n this.searching = true;\n\n const {\n data: {\n workspace: { users = [] },\n },\n } = await this.$apollo.query({\n query: userAutocompleteWithMRPermissionsQuery,\n variables: {\n search,\n fullPath: this.projectPath,\n mergeRequestId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.issuableId),\n },\n });\n\n this.fetchedUsers = users;\n this.searching = false;\n },\n removeAllReviewers() {\n this.currentSelectedReviewers = [];\n },\n },\n i18n: {\n selectReviewer: __('Select reviewer'),\n unassign: __('Unassign'),\n },\n};\n</script>\n\n<template>\n <update-reviewers\n v-if=\"userPermissions.adminMergeRequest\"\n :selected-reviewers=\"currentSelectedReviewers\"\n >\n <template #default=\"{ loading, updateReviewers }\">\n <gl-collapsible-listbox\n v-model=\"currentSelectedReviewers\"\n :header-text=\"$options.i18n.selectReviewer\"\n :reset-button-label=\"$options.i18n.unassign\"\n searchable\n multiple\n placement=\"bottom-end\"\n is-check-centered\n class=\"reviewers-dropdown\"\n :items=\"mappedUsers\"\n :loading=\"loading\"\n :searching=\"searching\"\n @search=\"debouncedFetchAutocompleteUsers\"\n @shown=\"shownDropdown\"\n @hidden=\"updateReviewers\"\n @reset=\"removeAllReviewers\"\n >\n <template #toggle>\n <gl-button\n class=\"js-sidebar-dropdown-toggle *:!gl-text-default\"\n size=\"small\"\n category=\"tertiary\"\n :loading=\"loading\"\n data-track-action=\"click_edit_button\"\n data-track-label=\"right_sidebar\"\n data-track-property=\"reviewer\"\n data-testid=\"reviewers-edit-button\"\n >\n {{ __('Edit') }}\n </gl-button>\n </template>\n <template #list-item=\"{ item }\">\n <span class=\"gl-flex gl-items-center\">\n <div class=\"gl-relative gl-mr-3\">\n <gl-avatar :size=\"32\" :src=\"item.avatarUrl\" :entity-name=\"item.value\" />\n <gl-icon\n v-if=\"item.mergeRequestInteraction && !item.mergeRequestInteraction.canMerge\"\n name=\"warning-solid\"\n aria-hidden=\"true\"\n class=\"reviewer-merge-icon\"\n />\n </div>\n <span class=\"gl-flex gl-flex-col\">\n <span class=\"gl-whitespace-nowrap gl-font-bold\">{{ item.text }}</span>\n <span class=\"gl-text-subtle\"> {{ item.secondaryText }}</span>\n </span>\n </span>\n </template>\n\n <template v-if=\"directlyInviteMembers\" #footer>\n <div\n class=\"gl-flex gl-flex-col gl-border-t-1 gl-border-t-dropdown !gl-p-2 !gl-pt-0 gl-border-t-solid\"\n >\n <invite-members-trigger\n trigger-element=\"button\"\n :display-text=\"__('Invite members')\"\n trigger-source=\"merge_request_reviewers_dropdown\"\n category=\"tertiary\"\n block\n class=\"!gl-mt-2 !gl-justify-start\"\n />\n </div>\n </template>\n </gl-collapsible-listbox>\n </template>\n </update-reviewers>\n</template>\n","import { render, staticRenderFns } from \"./reviewer_dropdown.vue?vue&type=template&id=0401e65a\"\nimport script from \"./reviewer_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./reviewer_dropdown.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 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","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"addReviewerPermissions\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequest\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"adminMergeRequest\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":211}};\n doc.loc.source = {\"body\":\"query addReviewerPermissions($fullPath: ID!, $iid: String!) {\\n project(fullPath: $fullPath) {\\n id\\n mergeRequest(iid: $iid) {\\n id\\n userPermissions {\\n adminMergeRequest\\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[\"addReviewerPermissions\"] = oneQuery(doc, \"addReviewerPermissions\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"setReviewers\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsernames\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestSetReviewers\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsernames\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewerUsernames\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":232}};\n doc.loc.source = {\"body\":\"mutation setReviewers($projectPath: ID!, $iid: String!, $reviewerUsernames: [String!]!) {\\n mergeRequestSetReviewers(\\n input: { projectPath: $projectPath, iid: $iid, reviewerUsernames: $reviewerUsernames }\\n ) {\\n errors\\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[\"setReviewers\"] = oneQuery(doc, \"setReviewers\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestReviewersUpdated\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestReviewersUpdated\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableId\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequest\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"UserAvailability\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestInteraction\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canUpdate\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reviewState\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ReviewersApplicableApprovalRules\"},\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":681}};\n doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/user.fragment.graphql\\\"\\n#import \\\"~/graphql_shared/fragments/user_availability.fragment.graphql\\\"\\n#import \\\"ee_else_ce/sidebar/queries/reviewer_applicable_approval_rules.fragment.graphql\\\"\\n\\nsubscription mergeRequestReviewersUpdated($issuableId: IssuableID!) {\\n mergeRequestReviewersUpdated(issuableId: $issuableId) {\\n ... on MergeRequest {\\n id\\n reviewers {\\n nodes {\\n ...User\\n ...UserAvailability\\n mergeRequestInteraction {\\n canMerge\\n canUpdate\\n approved\\n reviewState\\n\\n ...ReviewersApplicableApprovalRules\\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/user.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user_availability.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"ee_else_ce/sidebar/queries/reviewer_applicable_approval_rules.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[\"mergeRequestReviewersUpdated\"] = oneQuery(doc, \"mergeRequestReviewersUpdated\");\n \n","import 'jquery';\nimport 'jquery.caret'; // required by at.js\nimport '@gitlab/at.js';\n","import { GlToast } from '@gitlab/ui';\nimport Vue from 'vue';\n\nVue.use(GlToast);\nconst instance = new Vue();\n\nexport default function showGlobalToast(...args) {\n return instance.$toast.show(...args);\n}\n","import $ from 'jquery';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport '~/lib/utils/jquery_at_who';\nimport GfmAutoComplete, { showAndHideHelper, escape, setupSubcommands } from '~/gfm_auto_complete';\nimport { s__ } from '~/locale';\nimport { MERGE_REQUEST_NOTEABLE_TYPE } from '~/notes/constants';\n\n/**\n * This is added to keep the export parity with the CE counterpart.\n *\n * Some modules import `defaultAutocompleteConfig` or `membersBeforeSave`\n * which will be undefined if not exported from here in EE.\n */\nexport {\n escape,\n defaultAutocompleteConfig,\n membersBeforeSave,\n highlighter,\n CONTACT_STATE_ACTIVE,\n CONTACTS_ADD_COMMAND,\n CONTACTS_REMOVE_COMMAND,\n} from '~/gfm_auto_complete';\n\nconst EPICS_ALIAS = 'epics';\nconst ITERATIONS_ALIAS = 'iterations';\nconst VULNERABILITIES_ALIAS = 'vulnerabilities';\n\nexport const Q_ISSUE_SUB_COMMANDS = {\n dev: {\n header: s__('AmazonQ|dev'),\n description: s__('AmazonQ|Create a merge request to incorporate Amazon Q suggestions (Beta)'),\n },\n transform: {\n header: s__('AmazonQ|transform'),\n description: s__('AmazonQ|Upgrade Java Maven application to Java 17 (Beta)'),\n },\n};\n\nexport const Q_MERGE_REQUEST_SUB_COMMANDS = {\n dev: {\n header: s__('AmazonQ|dev'),\n description: s__('AmazonQ|Apply changes to this merge request based on the comments (Beta)'),\n },\n fix: {\n header: s__('AmazonQ|fix'),\n description: s__('AmazonQ|Create fixes for review findings (Beta)'),\n },\n review: {\n header: s__('AmazonQ|review'),\n description: s__('AmazonQ|Review merge request for code quality and security issues (Beta)'),\n },\n};\n\nexport const Q_MERGE_REQUEST_CAN_SUGGEST_SUB_COMMANDS = {\n test: {\n header: s__('AmazonQ|test'),\n description: s__(\n 'AmazonQ|Create unit tests for selected lines of code in Java or Python files (Beta)',\n ),\n },\n};\n\nconst getQSubCommands = ($input) => {\n if ($input.data('noteableType') === MERGE_REQUEST_NOTEABLE_TYPE) {\n const canSuggest = $input.data('canSuggest');\n\n return {\n ...Q_MERGE_REQUEST_SUB_COMMANDS,\n ...(canSuggest ? Q_MERGE_REQUEST_CAN_SUGGEST_SUB_COMMANDS : {}),\n };\n }\n\n return Q_ISSUE_SUB_COMMANDS;\n};\n\nGfmAutoComplete.Iterations = {\n templateFunction({ id, title }) {\n return `<li><small>*iteration:${id}</small> ${escape(title)}</li>`;\n },\n};\n\nclass GfmAutoCompleteEE extends GfmAutoComplete {\n setupAtWho($input) {\n if (this.enableMap.epics) {\n this.setupAutoCompleteEpics($input, this.getDefaultCallbacks());\n }\n\n if (this.enableMap.iterations) {\n this.setupAutoCompleteIterations($input, this.getDefaultCallbacks());\n }\n\n if (this.enableMap.vulnerabilities) {\n this.setupAutoCompleteVulnerabilities($input, this.getDefaultCallbacks());\n }\n\n super.setupAtWho($input);\n }\n\n loadSubcommands($input, data) {\n if (data.some((c) => c.name === 'q')) {\n setupSubcommands($input, 'q', getQSubCommands($input));\n }\n\n super.loadSubcommands($input, data);\n }\n\n // eslint-disable-next-line class-methods-use-this\n setupAutoCompleteEpics = ($input, defaultCallbacks) => {\n $input.atwho({\n at: '&',\n alias: EPICS_ALIAS,\n searchKey: 'search',\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.title != null) {\n tmpl = GfmAutoComplete.Issues.templateFunction(value);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n insertTpl: GfmAutoComplete.Issues.insertTemplateFunction,\n skipSpecialCharacterTest: true,\n callbacks: {\n ...defaultCallbacks,\n beforeSave(merges) {\n return $.map(merges, (m) => {\n if (m.title == null) {\n return m;\n }\n return {\n id: m.iid,\n reference: m.reference,\n title: m.title,\n search: `${m.iid} ${m.title}`,\n };\n });\n },\n },\n });\n showAndHideHelper($input, EPICS_ALIAS);\n };\n\n // eslint-disable-next-line class-methods-use-this\n setupAutoCompleteIterations = ($input, defaultCallbacks) => {\n $input.atwho({\n at: '*iteration:',\n alias: ITERATIONS_ALIAS,\n searchKey: 'search',\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.id != null) {\n tmpl = GfmAutoComplete.Iterations.templateFunction(value);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n // eslint-disable-next-line no-template-curly-in-string\n insertTpl: '${atwho-at}${id}',\n skipSpecialCharacterTest: true,\n callbacks: {\n ...defaultCallbacks,\n beforeSave(merges) {\n return $.map(merges, (m) => {\n if (m.id == null) {\n return m;\n }\n\n return {\n id: m.id,\n title: m.title,\n search: `${m.id} ${m.title}`,\n };\n });\n },\n },\n });\n showAndHideHelper($input, ITERATIONS_ALIAS);\n };\n\n // eslint-disable-next-line class-methods-use-this\n setupAutoCompleteVulnerabilities = ($input, defaultCallbacks) => {\n $input.atwho({\n at: '[vulnerability:',\n suffix: ']',\n alias: VULNERABILITIES_ALIAS,\n delay: DEFAULT_DEBOUNCE_AND_THROTTLE_MS,\n searchKey: 'search',\n displayTpl(value) {\n let tmpl = GfmAutoComplete.Loading.template;\n if (value.title != null) {\n tmpl = GfmAutoComplete.Issues.templateFunction(value);\n }\n return tmpl;\n },\n data: GfmAutoComplete.defaultLoadingData,\n insertTpl: GfmAutoComplete.Issues.insertTemplateFunction,\n skipSpecialCharacterTest: true,\n callbacks: {\n ...defaultCallbacks,\n beforeSave(merges) {\n return merges.map((m) => {\n if (m.title == null) {\n return m;\n }\n return {\n id: m.id,\n title: m.title,\n reference: m.reference,\n search: `${m.id} ${m.title}`,\n };\n });\n },\n },\n });\n showAndHideHelper($input, VULNERABILITIES_ALIAS);\n };\n}\n\nexport default GfmAutoCompleteEE;\n","import { TYPENAME_USER } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport createGqClient, { fetchPolicies } from '~/lib/graphql';\nimport axios from '~/lib/utils/axios_utils';\nimport reviewerRereviewMutation from '../queries/reviewer_rereview.mutation.graphql';\n\nexport const gqClient = createGqClient(\n {},\n {\n fetchPolicy: fetchPolicies.NO_CACHE,\n },\n);\n\nexport default class SidebarService {\n constructor(endpointMap) {\n if (!SidebarService.singleton) {\n this.endpoint = endpointMap.endpoint;\n this.moveIssueEndpoint = endpointMap.moveIssueEndpoint;\n this.projectsAutocompleteEndpoint = endpointMap.projectsAutocompleteEndpoint;\n this.fullPath = endpointMap.fullPath;\n this.iid = endpointMap.iid;\n this.issuableType = endpointMap.issuableType;\n\n SidebarService.singleton = this;\n }\n\n // eslint-disable-next-line no-constructor-return\n return SidebarService.singleton;\n }\n\n get() {\n return axios.get(this.endpoint);\n }\n\n update(key, data) {\n return axios.put(this.endpoint, { [key]: data });\n }\n\n getProjectsAutocomplete(searchTerm) {\n return axios.get(this.projectsAutocompleteEndpoint, {\n params: {\n search: searchTerm,\n },\n });\n }\n\n moveIssue(moveToProjectId) {\n return axios.post(this.moveIssueEndpoint, {\n move_to_project_id: moveToProjectId,\n });\n }\n\n requestReview(userId) {\n return gqClient.mutate({\n mutation: reviewerRereviewMutation,\n variables: {\n userId: convertToGraphQLId(TYPENAME_USER, `${userId}`),\n projectPath: this.fullPath,\n iid: this.iid.toString(),\n },\n });\n }\n}\n","import { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport Service from './services/sidebar_service';\nimport Store from './stores/sidebar_store';\n\nexport default class SidebarMediator {\n constructor(options) {\n if (!SidebarMediator.singleton) {\n this.initSingleton(options);\n }\n\n // eslint-disable-next-line no-constructor-return\n return SidebarMediator.singleton;\n }\n\n initSingleton(options) {\n this.store = new Store(options);\n this.service = new Service({\n endpoint: options.endpoint,\n moveIssueEndpoint: options.moveIssueEndpoint,\n projectsAutocompleteEndpoint: options.projectsAutocompleteEndpoint,\n fullPath: options.fullPath,\n iid: options.iid,\n issuableType: options.issuableType,\n });\n SidebarMediator.singleton = this;\n }\n\n assignYourself() {\n this.store.addAssignee(this.store.currentUser);\n }\n addSelfReview() {\n this.store.addReviewer(this.store.currentUser);\n }\n\n async saveAssignees(field) {\n const selected = this.store.assignees.map((u) => u.id);\n\n // If there are no ids, that means we have to unassign (which is id = 0)\n // And it only accepts an array, hence [0]\n const assignees = selected.length === 0 ? [0] : selected;\n const data = { assignee_ids: assignees };\n\n try {\n const res = await this.service.update(field, data);\n\n this.store.overwrite('assignees', res.data.assignees);\n\n if (res.data.reviewers) {\n this.store.overwrite('reviewers', res.data.reviewers);\n }\n\n return Promise.resolve(res);\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n async saveReviewers(field) {\n const selectedReviewers = this.store.reviewers;\n const selectedIds = selectedReviewers.map((u) => u.id);\n const suggestedSelectedIds = selectedReviewers.filter((u) => u.suggested).map((u) => u.id);\n\n // If there are no ids, that means we have to unassign (which is id = 0)\n // And it only accepts an array, hence [0]\n const reviewers = selectedIds.length === 0 ? [0] : selectedIds;\n const data = { reviewer_ids: reviewers, suggested_reviewer_ids: suggestedSelectedIds };\n\n try {\n const res = await this.service.update(field, data);\n\n this.store.overwrite('reviewers', res.data.reviewers);\n this.store.overwrite('assignees', res.data.assignees);\n\n return Promise.resolve(res);\n } catch (e) {\n return Promise.reject();\n }\n }\n\n requestReview({ userId, callback }) {\n return this.service\n .requestReview(userId)\n .then(() => {\n this.store.updateReviewer(userId, 'reviewed');\n toast(__('Requested review'));\n callback(userId, true);\n })\n .catch(() => callback(userId, false));\n }\n\n setMoveToProjectId(projectId) {\n this.store.setMoveToProjectId(projectId);\n }\n\n fetch() {\n return this.service\n .get()\n .then(({ data }) => {\n this.processFetchedData(data);\n })\n .catch(() =>\n createAlert({\n message: __('Error occurred when fetching sidebar data'),\n }),\n );\n }\n\n processFetchedData(data) {\n this.store.setAssigneeData(data);\n this.store.setReviewerData(data);\n this.store.setTimeTrackingData(data);\n }\n\n fetchAutocompleteProjects(searchTerm) {\n return this.service.getProjectsAutocomplete(searchTerm).then(({ data }) => {\n this.store.setAutocompleteProjects(data);\n return this.store.autocompleteProjects;\n });\n }\n\n moveIssue() {\n return this.service.moveIssue(this.store.moveToProjectId).then(({ data }) => {\n if (window.location.pathname !== data.web_url) {\n visitUrl(data.web_url);\n }\n });\n }\n}\n"],"sourceRoot":""}