{"version":3,"sources":["webpack:////build/source/node_modules/lodash/invert.js","webpack:////build/source/node_modules/braces/lib/utils.js","webpack:///./batch_comments/utils.js","webpack:////build/source/node_modules/lodash/_baseIntersection.js","webpack:////build/source/node_modules/pikaday/pikaday.js","webpack:///./vue_shared/components/user_avatar/user_avatar_image.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_image.vue?5b71","webpack:///vue_shared/components/user_avatar/user_avatar_image.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_image.vue?7c05","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/number_utils.js","webpack:////build/source/node_modules/lodash/_baseClone.js","webpack:///./awards_handler.js","webpack:///./emoji/awards_app/store/mutation_types.js","webpack:///./emoji/awards_app/store/actions.js","webpack:///./emoji/awards_app/store/mutations.js","webpack:///./emoji/awards_app/store/index.js","webpack:///./emoji/awards_app/index.js","webpack:///./diffs/store/utils.js","webpack:///./notes/components/toggle_replies_widget.vue","webpack:///./notes/components/toggle_replies_widget.vue?559e","webpack:///notes/components/toggle_replies_widget.vue","webpack:///./notes/components/toggle_replies_widget.vue?39c2","webpack:////build/source/node_modules/picomatch/lib/picomatch.js","webpack:////build/source/node_modules/lodash/_stringSize.js","webpack:///./performance/constants.js","webpack:////build/source/node_modules/lodash/snakeCase.js","webpack:///./diffs/components/commit_item.vue","webpack:///./diffs/components/commit_item.vue?111d","webpack:///diffs/components/commit_item.vue","webpack:///./diffs/components/commit_item.vue?d9da","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/button_group/button_group.js","webpack:///./merge_request_tabs.js","webpack:///./merge_request.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js","webpack:////build/source/node_modules/lodash/isSet.js","webpack:///./notes/graphql/promote_timeline_event.mutation.graphql","webpack:////build/source/node_modules/lodash/clamp.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/update_issue_weight.mutation.graphql","webpack:///./sidebar/queries/get_issue_crm_contacts.query.graphql","webpack:////build/source/node_modules/to-regex-range/node_modules/is-number/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/ee/app/assets/javascripts/iterations/utils.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutate_vulnerability_state.js","webpack:///./batch_comments/constants.js","webpack:////build/source/node_modules/util/util.js","webpack:///./sidebar/queries/issue_crm_contacts.subscription.graphql","webpack:///./diffs/components/diff_row_utils.js","webpack:///./projects/commit/event_hub.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/form/form_radio_group/form_radio_group.js","webpack:///./lib/utils/webpack.js","webpack:////build/source/node_modules/lodash/isNil.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tfoot.js","webpack:///./vue_shared/mixins/timeago.js","webpack:///./ci/reports/constants.js","webpack:///./graphql_shared/fragments/page_info.fragment.graphql","webpack:////build/source/node_modules/lodash/_unicodeSize.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/work_item_parents.query.graphql","webpack:////build/source/node_modules/jquery.caret/dist/jquery.caret.js","webpack:////build/source/ee/app/assets/javascripts/graphql_shared/fragments/vulnerability_detail.fragment.graphql","webpack:///./merge_requests/queries/title.subscription.graphql","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_epic.query.graphql","webpack:///./sidebar/queries/update_status.mutation.graphql","webpack:///./abuse_reports/components/constants.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_iteration.query.graphql","webpack:////build/source/node_modules/highlight.js/lib/core.js","webpack:///./sidebar/components/participants/participants.vue","webpack:///./sidebar/components/participants/participants.vue?54f4","webpack:///sidebar/components/participants/participants.vue","webpack:///./sidebar/components/participants/participants.vue?b8fb","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:////build/source/node_modules/braces/lib/parse.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/health_status/health_status_dropdown.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/health_status/health_status_dropdown.vue?e58e","webpack:///../../../ee/app/assets/javascripts/sidebar/components/health_status/health_status_dropdown.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/health_status/health_status_dropdown.vue?7f9a","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js","webpack:///./lib/logger/index.js","webpack:///./ide/commit_icon.js","webpack:///./ci/reports/sast/constants.js","webpack:///./ci/reports/utils.js","webpack:////build/source/node_modules/lodash/_initCloneByTag.js","webpack:////build/source/node_modules/@gitlab/svgs/src/file_icon_map.js","webpack:///vue_shared/components/diff_stats_dropdown.vue","webpack:///./vue_shared/components/diff_stats_dropdown.vue?cc39","webpack:///./vue_shared/components/diff_stats_dropdown.vue?add1","webpack:///./vue_shared/components/diff_stats_dropdown.vue?9b09","webpack:///./vue_shared/components/diff_stats_dropdown.vue","webpack:///./init_diff_stats_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js","webpack:///./issuable/issuable_bulk_update_sidebar.js","webpack:///./issuable/issuable_context.js","webpack:///./issuable/index.js","webpack:///./vue_shared/components/file_icon.vue","webpack:///./vue_shared/components/file_icon.vue?6a90","webpack:///vue_shared/components/file_icon.vue","webpack:///./vue_shared/components/file_icon.vue?7152","webpack:////build/source/node_modules/scrollparent/scrollparent.js","webpack:////build/source/node_modules/lodash/_baseIsSet.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/plugins/mark_multiple_lines.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue?b462","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue?081a","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_file_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue?e808","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue?7001","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/code_flow_steps_section.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue?cb5f","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/vulnerability_code_flow.vue?2835","webpack:///./vue_shared/components/changed_file_icon.vue?1897","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer_item.vue?0dd9","webpack:///../../../ee/app/assets/javascripts/diffs/components/shared/findings_drawer_item.vue","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer_item.vue?4c8f","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer_item.vue","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer_details.vue?8c66","webpack:///../../../ee/app/assets/javascripts/diffs/components/shared/findings_drawer_details.vue","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer_details.vue?d222","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer_details.vue","webpack:///../../../ee/app/assets/javascripts/diffs/components/shared/findings_drawer.vue","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer.vue?386b","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer.vue?34a9","webpack:////build/source/ee/app/assets/javascripts/diffs/components/shared/findings_drawer.vue","webpack:///./diffs/utils/performance.js","webpack:///./diffs/components/collapsed_files_warning.vue?2ca8","webpack:///diffs/components/collapsed_files_warning.vue","webpack:///./diffs/components/collapsed_files_warning.vue?95e7","webpack:///./diffs/components/collapsed_files_warning.vue","webpack:///./diffs/components/commit_widget.vue?284a","webpack:///diffs/components/commit_widget.vue","webpack:///./diffs/components/commit_widget.vue?462c","webpack:///./diffs/components/commit_widget.vue","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_sidebar_icon.js","webpack:///./diffs/components/compare_dropdown_layout.vue?80ae","webpack:///diffs/components/compare_dropdown_layout.vue","webpack:///./diffs/components/compare_versions.vue?95ba","webpack:///diffs/components/compare_versions.vue","webpack:///./diffs/components/compare_dropdown_layout.vue?9735","webpack:///./diffs/components/compare_dropdown_layout.vue","webpack:///./diffs/components/compare_versions.vue?4dfe","webpack:///./diffs/components/compare_versions.vue","webpack:////build/source/ee/app/assets/javascripts/diffs/components/inline_findings_utils.js","webpack:///./batch_comments/components/diff_file_drafts.vue","webpack:///./diffs/mixins/image_diff.js","webpack:///./batch_comments/components/diff_file_drafts.vue?a7db","webpack:///batch_comments/components/diff_file_drafts.vue","webpack:///./batch_comments/components/diff_file_drafts.vue?eed8","webpack:///./diffs/mixins/draft_comments.js","webpack:///./vue_shared/components/diff_viewer/viewers/no_preview.vue?9b61","webpack:///./vue_shared/components/diff_viewer/viewers/no_preview.vue","webpack:///./vue_shared/components/diff_viewer/viewers/not_diffable.vue?23cc","webpack:///./vue_shared/components/diff_viewer/viewers/not_diffable.vue","webpack:///./diffs/components/diff_discussions.vue?254b","webpack:///diffs/components/diff_discussions.vue","webpack:///./diffs/components/diff_discussions.vue?0ce7","webpack:///./diffs/components/diff_discussions.vue","webpack:///./diffs/components/diff_comment_cell.vue","webpack:///./diffs/components/diff_discussion_reply.vue?4bd2","webpack:///diffs/components/diff_discussion_reply.vue","webpack:///./diffs/components/diff_discussion_reply.vue?91c0","webpack:///./diffs/components/diff_discussion_reply.vue","webpack:///./notes/components/multiline_comment_form.vue?256e","webpack:///notes/components/multiline_comment_form.vue","webpack:///./notes/components/multiline_comment_form.vue?a45a","webpack:///./notes/components/multiline_comment_form.vue","webpack:///./diffs/components/diff_line_note_form.vue?d8ad","webpack:///diffs/components/diff_line_note_form.vue","webpack:///./diffs/components/diff_comment_cell.vue?b351","webpack:///diffs/components/diff_comment_cell.vue","webpack:///./diffs/components/diff_line_note_form.vue?d98f","webpack:///./diffs/components/diff_line_note_form.vue","webpack:///./diffs/components/diff_comment_cell.vue?8c46","webpack:///diffs/components/diff_expansion_cell.vue","webpack:///./diffs/components/diff_expansion_cell.vue?26bb","webpack:///./diffs/components/diff_expansion_cell.vue?93d0","webpack:///./diffs/components/diff_expansion_cell.vue","webpack:///./lib/utils/vue3compat/compat_functional_mixin.js","webpack:///./diffs/components/diff_gutter_avatars.vue","webpack:///./diffs/components/diff_gutter_avatars.vue?0cd0","webpack:///diffs/components/diff_gutter_avatars.vue","webpack:///./diffs/components/diff_row.vue?ea9a","webpack:///diffs/components/diff_row.vue","webpack:///./diffs/components/diff_gutter_avatars.vue?22ee","webpack:///./diffs/utils/interoperability.js","webpack:///./diffs/components/diff_view.vue?bd95","webpack:///diffs/components/diff_view.vue","webpack:///./diffs/components/diff_row.vue?90ef","webpack:///./diffs/components/diff_row.vue","webpack:///./diffs/utils/diff_line.js","webpack:///./diffs/components/diff_view.vue?ff55","webpack:///./diffs/components/diff_view.vue","webpack:///./diffs/components/diff_content.vue?9a43","webpack:///diffs/components/diff_content.vue","webpack:////build/source/ee/app/assets/javascripts/diffs/components/diff_row_utils.js","webpack:///./diffs/components/diff_content.vue?5b91","webpack:///./diffs/components/diff_content.vue","webpack:///./diffs/components/diff_file_discussion_expansion.vue?e25c","webpack:///diffs/components/diff_file_discussion_expansion.vue","webpack:///./diffs/components/diff_file_discussion_expansion.vue?3d97","webpack:///./diffs/components/diff_file_discussion_expansion.vue","webpack:///./diffs/components/diff_file.vue?3a5f","webpack:///diffs/components/diff_file.vue","webpack:///./helpers/diffs_helper.js","webpack:///./diffs/components/diff_file.vue?a9cb","webpack:///./diffs/components/diff_file.vue","webpack:///diffs/components/hidden_files_warning.vue","webpack:///./diffs/components/hidden_files_warning.vue?aef7","webpack:///./diffs/components/hidden_files_warning.vue?9910","webpack:///./diffs/components/hidden_files_warning.vue","webpack:///./diffs/components/no_changes.vue?1372","webpack:///diffs/components/no_changes.vue","webpack:///./diffs/components/no_changes.vue?3ba2","webpack:///./diffs/components/no_changes.vue","webpack:///./diffs/components/virtual_scroller_scroll_sync.js","webpack:///./diffs/components/file_row_stats.vue?76b2","webpack:///diffs/components/file_row_stats.vue","webpack:///./diffs/components/file_row_stats.vue?cc54","webpack:///./diffs/components/file_row_stats.vue?8e98","webpack:///./diffs/components/file_row_stats.vue","webpack:///./diffs/components/diff_file_row.vue?318e","webpack:///diffs/components/diff_file_row.vue","webpack:///./diffs/components/diff_file_row.vue?4a8d","webpack:///./diffs/components/diff_file_row.vue","webpack:///diffs/components/tree_list_height.vue","webpack:///./diffs/components/tree_list_height.vue?bfc7","webpack:///./diffs/components/tree_list_height.vue?9dda","webpack:///./diffs/components/tree_list_height.vue","webpack:///diffs/components/tree_list.vue","webpack:///./diffs/components/tree_list.vue?98bf","webpack:///./diffs/components/tree_list.vue?c95c","webpack:///./diffs/components/diffs_file_tree.vue?ba25","webpack:///diffs/components/diffs_file_tree.vue","webpack:///./diffs/components/tree_list.vue?24e1","webpack:///./diffs/components/tree_list.vue","webpack:///./diffs/components/diffs_file_tree.vue?d355","webpack:///./diffs/components/diffs_file_tree.vue","webpack:///diffs/components/diff_app_controls.vue","webpack:///./diffs/components/diff_app_controls.vue?f379","webpack:///./diffs/components/diff_app_controls.vue?7f4b","webpack:///./diffs/components/diff_app_controls.vue","webpack:///diffs/components/app.vue","webpack:///./diffs/components/app.vue?9d84","webpack:///./diffs/utils/sort_findings_by_file.js","webpack:///./diffs/components/app.vue?a9b8","webpack:///./diffs/components/app.vue","webpack:///./diffs/index.js","webpack:////build/source/node_modules/picomatch/lib/utils.js","webpack:///./vue_shared/components/user_access_role_badge.vue","webpack:///./vue_shared/components/user_access_role_badge.vue?59b5","webpack:///vue_shared/components/user_access_role_badge.vue","webpack:///./vue_shared/components/user_access_role_badge.vue?6d9e","webpack:///./vue_shared/components/modal_copy_button.vue","webpack:///./vue_shared/components/modal_copy_button.vue?eab4","webpack:///vue_shared/components/modal_copy_button.vue","webpack:///./vue_shared/components/modal_copy_button.vue?ef3f","webpack:////build/source/node_modules/lodash/chunk.js","webpack:///./vue_shared/components/imported_badge.vue","webpack:///vue_shared/components/imported_badge.vue","webpack:///./vue_shared/components/imported_badge.vue?8b64","webpack:///./vue_shared/components/imported_badge.vue?c532","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js","webpack:///./ide/constants.js","webpack:////build/source/node_modules/picomatch/lib/constants.js","webpack:////build/source/node_modules/vue-resize/dist/vue-resize.css","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:////build/source/node_modules/lodash/groupBy.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue?fc2e","webpack:///../../../ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue?c30a","webpack:////build/source/ee/app/assets/javascripts/sidebar/constants.js","webpack:///./sidebar/queries/update_issuable_severity.mutation.graphql","webpack:///./batch_comments/mixins/resolved_status.js","webpack:///./vue_shared/components/content_viewer/viewers/download_viewer.vue","webpack:///./vue_shared/components/content_viewer/viewers/download_viewer.vue?d7cb","webpack:///vue_shared/components/content_viewer/viewers/download_viewer.vue","webpack:///./vue_shared/components/content_viewer/viewers/download_viewer.vue?858c","webpack:///./vue_shared/components/file_row.vue?b741","webpack:///./vue_shared/components/local_storage_sync.vue?a4c7","webpack:///vue_shared/components/local_storage_sync.vue","webpack:///./vue_shared/components/local_storage_sync.vue","webpack:///./issues/list/eventhub.js","webpack:///./files_comment_button.js","webpack:///./commit/image_file.js","webpack:///./image_diff/helpers/badge_helper.js","webpack:///./image_diff/helpers/comment_indicator_helper.js","webpack:///./image_diff/image_badge.js","webpack:///./image_diff/helpers/index.js","webpack:///./image_diff/helpers/dom_helper.js","webpack:///./image_diff/helpers/utils_helper.js","webpack:///./image_diff/image_diff.js","webpack:///./lib/utils/image_utility.js","webpack:///./image_diff/view_types.js","webpack:///./image_diff/replaced_image_diff.js","webpack:///./image_diff/helpers/init_image_diff.js","webpack:///./single_file_diff.js","webpack:///./diff.js","webpack:////build/source/node_modules/lodash/_createCompounder.js","webpack:///./issuable/components/issuable_by_email.vue","webpack:///./issuable/components/issuable_by_email.vue?0ec9","webpack:///issuable/components/issuable_by_email.vue","webpack:///./issuable/components/issuable_by_email.vue?603b","webpack:///./issuable/issuable_bulk_update_actions.js","webpack:///./sidebar/components/lock/issuable_lock_form.vue","webpack:///./sidebar/components/lock/issuable_lock_form.vue?518e","webpack:///sidebar/components/lock/issuable_lock_form.vue","webpack:///./sidebar/components/lock/issuable_lock_form.vue?3012","webpack:///./blob/components/blob_header_filepath.vue","webpack:///./blob/components/blob_header_filepath.vue?9ed2","webpack:///blob/components/blob_header_filepath.vue","webpack:///./blob/components/blob_header_filepath.vue?eaa2","webpack:///./diffs/components/image_diff_overlay.vue","webpack:////build/source/ee/app/assets/javascripts/diffs/mixins/image_diff.js","webpack:///diffs/components/image_diff_overlay.vue","webpack:///./diffs/components/image_diff_overlay.vue?2f3e","webpack:///./diffs/components/image_diff_overlay.vue?3a14","webpack:///./vue_shared/security_reports/constants.js","webpack:///./vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?3039","webpack:///vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?f6d8","webpack:////build/source/node_modules/braces/index.js","webpack:///./projects/commit/constants.js","webpack:///./notes/mixins/resolvable.js","webpack:////build/source/node_modules/lodash/_arrayIncludesWith.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/mixins/model.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/form/form_select/form_select.js","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/config.js","webpack:///./sidebar/sidebar_bundle.js","webpack:///./diffs/utils/diff_file.js","webpack:///./related_issues/constants.js","webpack:///./pages/projects/merge_requests/queries/get_state.query.graphql","webpack:////build/source/node_modules/lodash/flattenDeep.js","webpack:////build/source/node_modules/lodash/difference.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_notifications_icon.js","webpack:///./import/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/datetime_utility.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_todo_icon.js","webpack:///./sidebar/queries/update_issue_lock.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/related_items_tree/components/issue_health_status.vue","webpack:////build/source/ee/app/assets/javascripts/related_items_tree/components/issue_health_status.vue?6a70","webpack:///../../../ee/app/assets/javascripts/related_items_tree/components/issue_health_status.vue","webpack:////build/source/ee/app/assets/javascripts/related_items_tree/components/issue_health_status.vue?ce73","webpack:////build/source/node_modules/lodash/_deburrLetter.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_epic.mutation.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/avatars_inline/avatars_inline.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/group_iterations.query.graphql","webpack:///./graphql_shared/subscriptions/merge_request_prepared.subscription.graphql","webpack:///../images/no_avatar.png","webpack:////build/source/node_modules/lodash/union.js","webpack:///./notes/mixins/issuable_state.js","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/index.js","webpack:///./notes/mixins/diff_line_note_form.js","webpack:////build/source/node_modules/lodash/words.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/progress_bar/progress_bar.js","webpack:///./notes/event_hub.js","webpack:///./vue_shared/components/content_viewer/viewers/image_viewer.vue","webpack:///vue_shared/components/content_viewer/viewers/image_viewer.vue","webpack:///./vue_shared/components/content_viewer/viewers/image_viewer.vue?b6bc","webpack:///./vue_shared/components/content_viewer/viewers/image_viewer.vue?3b92","webpack:////build/source/node_modules/vue-resize/dist/vue-resize.esm.js","webpack:////build/source/node_modules/lodash/_asciiWords.js","webpack:///./vue_shared/components/markdown/markdown_editor.vue","webpack:///vue_shared/components/markdown/markdown_editor.vue","webpack:///./vue_shared/components/markdown/markdown_editor.vue?d0a9","webpack:///./vue_shared/components/markdown/markdown_editor.vue?00ed","webpack:////build/source/node_modules/vue-observe-visibility/dist/vue-observe-visibility.esm.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/dismiss_finding.mutation.graphql","webpack:///./vue_shared/components/user_select/user_select.vue","webpack:///./vue_shared/components/user_select/user_select.vue?8112","webpack:///vue_shared/components/user_select/user_select.vue","webpack:///./vue_shared/components/user_select/user_select.vue?7ada","webpack:///./notes/components/discussion_counter.vue","webpack:///./notes/components/discussion_counter.vue?533f","webpack:///notes/components/discussion_counter.vue","webpack:///./notes/components/discussion_counter.vue?17d8","webpack:///./mr_notes/init.js","webpack:///./batch_comments/index.js","webpack:///./mr_notes/init_count.js","webpack:///./mr_notes/discussion_counter.js","webpack:////build/source/ee/app/assets/javascripts/mr_notes/index.js","webpack:///./mr_notes/init_mr_notes.js","webpack:///./merge_requests/components/sticky_header.vue?738b","webpack:///merge_requests/components/sticky_header.vue","webpack:///./merge_requests/components/sticky_header.vue?76a0","webpack:///./merge_requests/components/sticky_header.vue","webpack:///./code_review/signals.js","webpack:///vue_shared/components/mr_more_dropdown.vue","webpack:///./vue_shared/components/mr_more_dropdown.vue?a7d4","webpack:///./vue_shared/components/mr_more_dropdown.vue?1a05","webpack:///./vue_shared/components/mr_more_dropdown.vue","webpack:///./surveys/merge_request_experience/index.js","webpack:///./pages/projects/merge_requests/page.js","webpack:///./pages/projects/merge_requests/init_merge_request_show.js","webpack:///./mr_more_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.js","webpack:///./smart_interval.js","webpack:///./diffs/i18n.js","webpack:////build/source/node_modules/lodash/_baseAssign.js","webpack:///./sidebar/queries/update_merge_request_lock.mutation.graphql","webpack:///./sidebar/components/todo_toggle/sidebar_todo_widget.vue","webpack:///sidebar/components/todo_toggle/sidebar_todo_widget.vue","webpack:///./sidebar/components/todo_toggle/sidebar_todo_widget.vue?60df","webpack:///./sidebar/components/todo_toggle/sidebar_todo_widget.vue?a263","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/dropdown/dropdown_text.js","webpack:///./vue_shared/issuable/list/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js","webpack:///./vue_shared/components/diff_stats_dropdown.vue?c602","webpack:///./projects/commit/init_revert_commit_modal.js","webpack:///./sidebar/queries/move_issue.mutation.graphql","webpack:///./issuable/components/status_badge.vue","webpack:///issuable/components/status_badge.vue","webpack:///./issuable/components/status_badge.vue?ad5e","webpack:///./issuable/components/status_badge.vue?6071","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/directives/modal/modal.js","webpack:////build/source/node_modules/modern-screenshot/dist/index.js","webpack:///./commit/pipelines/utils.js","webpack:///./highlight_js/index.js","webpack:////build/source/node_modules/lodash/delay.js","webpack:///./vue_shared/components/file_row.vue","webpack:///./vue_shared/components/file_row_header.vue?7bb2","webpack:///vue_shared/components/file_row_header.vue","webpack:///./vue_shared/components/file_row.vue?a94f","webpack:///vue_shared/components/file_row.vue","webpack:///./vue_shared/components/file_row_header.vue?f994","webpack:///./vue_shared/components/file_row_header.vue","webpack:///./vue_shared/components/file_row.vue?9655","webpack:///./vue_shared/components/file_row.vue?dfa6","webpack:///./notes/components/note_actions/reply_button.vue","webpack:///./notes/components/note_actions/reply_button.vue?fa85","webpack:///notes/components/note_actions/reply_button.vue","webpack:///./notes/components/note_actions/reply_button.vue?ca2e","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/form/form_radio/form_radio.js","webpack:////build/source/node_modules/fill-range/index.js","webpack:///./notes/stores/utils.js","webpack:///./notes/stores/actions.js","webpack:///./notes/stores/mutation_types.js","webpack:///./notes/stores/collapse_utils.js","webpack:///./notes/stores/getters.js","webpack:///./notes/stores/mutations.js","webpack:///./notes/stores/state.js","webpack:///./notes/stores/modules/index.js","webpack:///./vue_shared/components/code_block.vue","webpack:///./vue_shared/components/code_block.vue?32d9","webpack:///vue_shared/components/code_block.vue","webpack:///./vue_shared/components/code_block.vue?9c6a","webpack:///./vue_shared/components/notes/timeline_entry_item.vue","webpack:///./vue_shared/components/notes/timeline_entry_item.vue?95e9","webpack:////build/source/node_modules/lodash/clone.js","webpack:////build/source/node_modules/@gitlab/at.js/dist/js/jquery.atwho.js","webpack:///./projects/commit/components/form_modal.vue","webpack:///./projects/commit/components/branches_dropdown.vue?413e","webpack:///projects/commit/components/branches_dropdown.vue","webpack:///./projects/commit/components/branches_dropdown.vue?1b52","webpack:///./projects/commit/components/branches_dropdown.vue","webpack:///./projects/commit/components/projects_dropdown.vue?332e","webpack:///projects/commit/components/projects_dropdown.vue","webpack:///./projects/commit/components/form_modal.vue?e926","webpack:///projects/commit/components/form_modal.vue","webpack:///./projects/commit/components/projects_dropdown.vue?ce14","webpack:///./projects/commit/components/projects_dropdown.vue","webpack:///./projects/commit/components/form_modal.vue?de4c","webpack:///./notes/components/note_form.vue","webpack:///./notes/components/note_form.vue?e4f3","webpack:///notes/components/note_form.vue","webpack:///./notes/components/note_form.vue?ef8a","webpack:///./sidebar/components/sidebar_dropdown.vue","webpack:///./sidebar/components/sidebar_dropdown.vue?3b8c","webpack:///sidebar/components/sidebar_dropdown.vue","webpack:///./sidebar/components/sidebar_dropdown.vue?709d","webpack:///./lib/utils/grammar.js","webpack:///./vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue?f8e4","webpack:///vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue","webpack:///./vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue?3469","webpack:///./vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue","webpack:///./pages/projects/merge_requests/init_checkout_modal.js","webpack:///./projects/tree/components/commit_pipeline_status.vue","webpack:///./projects/tree/services/commit_pipeline_service.js","webpack:///projects/tree/components/commit_pipeline_status.vue","webpack:///./projects/tree/components/commit_pipeline_status.vue?be78","webpack:///./projects/tree/components/commit_pipeline_status.vue?08ff","webpack:///./batch_comments/components/draft_note.vue","webpack:///./batch_comments/components/draft_note.vue?4e5e","webpack:///batch_comments/components/draft_note.vue","webpack:///./batch_comments/components/draft_note.vue?c989","webpack:////build/source/node_modules/lodash/_baseInverter.js","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/RecycleScroller.vue?8dfd","webpack:////build/source/node_modules/lodash/_createSet.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/revert_finding_to_detected.mutation.graphql","webpack:///./vue_shared/mixins/gl_abilities_mixin.js","webpack:///./sidebar/components/severity/severity.vue","webpack:///./sidebar/components/severity/severity.vue?64b6","webpack:///sidebar/components/severity/severity.vue","webpack:///./sidebar/components/severity/severity.vue?f682","webpack:///./lib/utils/http_status.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/health_status/sidebar_health_status_widget.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/health_status/sidebar_health_status_widget.vue?47be","webpack:///../../../ee/app/assets/javascripts/sidebar/components/health_status/sidebar_health_status_widget.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/health_status/sidebar_health_status_widget.vue?5d31","webpack:///./notes/i18n.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js","webpack:////build/source/node_modules/lodash/_castArrayLikeObject.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js","webpack:///./lib/utils/number_utils.js","webpack:////build/source/node_modules/lodash/truncate.js","webpack:///./notes/utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/thead.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js","webpack:///./vue_merge_request_widget/event_hub.js","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/common.js","webpack:///./diffs/event_hub.js","webpack:///./diffs/components/file_row_stats.vue?4aac","webpack:////build/source/node_modules/vue-virtual-scroll-list/dist/index.js","webpack:///./behaviors/shortcuts/shortcuts_issuable.js","webpack:///./notes/components/note_header.vue","webpack:///./notes/components/note_header.vue?4b13","webpack:///notes/components/note_header.vue","webpack:///./notes/components/note_header.vue?0c8b","webpack:///./vue_shared/components/source_viewer/constants.js","webpack:////build/source/node_modules/lodash/_baseDifference.js","webpack:///./blob/blob_fork_suggestion.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/utils/stable-sort.js","webpack:///./sourcegraph/index.js","webpack:///./notes/components/comment_field_layout.vue","webpack:///vue_shared/components/notes/noteable_warning.vue","webpack:///./vue_shared/components/notes/noteable_warning.vue?e124","webpack:///./vue_shared/components/notes/noteable_warning.vue?2f53","webpack:///./vue_shared/components/notes/noteable_warning.vue","webpack:///./notes/components/email_participants_warning.vue?a204","webpack:///notes/components/email_participants_warning.vue","webpack:///./notes/components/email_participants_warning.vue?3a17","webpack:///./notes/components/email_participants_warning.vue","webpack:///notes/components/comment_field_layout.vue","webpack:///./notes/components/comment_field_layout.vue?fbea","webpack:///./notes/components/comment_field_layout.vue?36e9","webpack:///./vue_shared/components/confidentiality_badge.vue","webpack:///./vue_shared/components/confidentiality_badge.vue?d1d1","webpack:///vue_shared/components/confidentiality_badge.vue","webpack:///./vue_shared/components/confidentiality_badge.vue?05af","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/issue_health_status.query.graphql","webpack:////build/source/node_modules/braces/lib/expand.js","webpack:///./diffs/components/tree_list.vue?7672","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/constants.js","webpack:////build/source/node_modules/lodash/differenceWith.js","webpack:////build/source/node_modules/braces/lib/constants.js","webpack:///./abuse_reports/components/abuse_category_selector.vue","webpack:///./abuse_reports/components/abuse_category_selector.vue?5b67","webpack:///abuse_reports/components/abuse_category_selector.vue","webpack:///./abuse_reports/components/abuse_category_selector.vue?54dd","webpack:////build/source/node_modules/lodash/_cloneSymbol.js","webpack:///./vue_shared/components/design_management/design_note_pin.vue","webpack:///./vue_shared/components/design_management/design_note_pin.vue?0aca","webpack:///vue_shared/components/design_management/design_note_pin.vue","webpack:///./vue_shared/components/design_management/design_note_pin.vue?84f7","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_update_parent.mutation.graphql","webpack:////build/source/node_modules/lodash/findLastIndex.js","webpack:///./merge_requests/components/merge_request_header.vue","webpack:///merge_requests/components/merge_request_header.vue","webpack:///./merge_requests/components/merge_request_header.vue?cc29","webpack:///./merge_requests/components/merge_request_header.vue?5fc4","webpack:////build/source/node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/iteration/sidebar_iteration_widget.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/iteration/sidebar_iteration_widget.vue?ac44","webpack:///../../../ee/app/assets/javascripts/sidebar/components/iteration/sidebar_iteration_widget.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/iteration/sidebar_iteration_widget.vue?a955","webpack:////build/source/ee/app/assets/javascripts/diffs/components/graphql/get_mr_codequality_and_security_reports.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_smile_icon.js","webpack:////build/source/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/td.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/utils/constants.js","webpack:///./diffs/components/diff_file_header.vue","webpack:///./diffs/components/diff_file_header.vue?59cd","webpack:///diffs/components/diff_file_header.vue","webpack:///./diffs/components/diff_file_header.vue?0186","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js","webpack:///./issuable/components/csv_import_export_buttons.vue","webpack:///./issuable/components/csv_export_modal.vue?ca45","webpack:///issuable/components/csv_export_modal.vue","webpack:///./issuable/components/csv_export_modal.vue?09d3","webpack:///./issuable/components/csv_export_modal.vue","webpack:///./issuable/components/csv_import_modal.vue?9736","webpack:///issuable/components/csv_import_modal.vue","webpack:///./issuable/components/csv_import_modal.vue?0e79","webpack:///./issuable/components/csv_import_modal.vue","webpack:///./issuable/components/csv_import_export_buttons.vue?2b71","webpack:///issuable/components/csv_import_export_buttons.vue","webpack:///./issuable/components/csv_import_export_buttons.vue?01a0","webpack:////build/source/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js","webpack:////build/source/node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./batch_comments/stores/modules/batch_comments/mutation_types.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/th.js","webpack:///./zen_mode.js","webpack:////build/source/node_modules/lodash/uniqBy.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/epic_ancestors.query.graphql","webpack:////build/source/node_modules/picomatch/lib/parse.js","webpack:///./vue_shared/components/user_avatar/user_avatar_link.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_link.vue?c50c","webpack:///vue_shared/components/user_avatar/user_avatar_link.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_link.vue?d6b5","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/cve_id_request/cve_id_request.vue?0155","webpack:///../../../ee/app/assets/javascripts/sidebar/components/cve_id_request/cve_id_request.vue","webpack:///./helpers/cve_id_request_helper.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/cve_id_request/cve_id_request.vue?445d","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/cve_id_request/cve_id_request.vue","webpack:///../../../ee/app/assets/javascripts/sidebar/components/iteration/iteration_dropdown.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/iteration/iteration_dropdown.vue?842a","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/iteration/iteration_dropdown.vue?961f","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/iteration/iteration_dropdown.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_help_state.vue?24d6","webpack:///../../../ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_help_state.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_help_state.vue?4e19","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_help_state.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_collapsed_state.vue?75e8","webpack:///../../../ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_collapsed_state.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_collapsed_state.vue?7010","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policy_collapsed_state.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policies_empty_state.vue?5abf","webpack:///../../../ee/app/assets/javascripts/sidebar/components/incidents/escalation_policies_empty_state.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policies_empty_state.vue?6ad6","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_policies_empty_state.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/sidebar_escalation_policy.vue?2279","webpack:///../../../ee/app/assets/javascripts/sidebar/components/incidents/sidebar_escalation_policy.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/sidebar_escalation_policy.vue?ecfc","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/sidebar_escalation_policy.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/mount_sidebar.js","webpack:///./notes/components/noteable_note.vue","webpack:///./notes/components/note_actions/timeline_event_button.vue?039f","webpack:///notes/components/note_actions/timeline_event_button.vue","webpack:///./notes/components/note_actions/timeline_event_button.vue?e00b","webpack:///./notes/components/note_actions/timeline_event_button.vue","webpack:///./notes/components/note_actions.vue?0a41","webpack:///notes/components/note_actions.vue","webpack:///./notes/components/note_actions.vue?f82a","webpack:///./notes/components/note_actions.vue","webpack:///./notes/components/note_attachment.vue?9e90","webpack:///notes/components/note_attachment.vue","webpack:///./notes/components/note_attachment.vue?3be3","webpack:///./notes/components/note_attachment.vue","webpack:///./notes/components/note_awards_list.vue?bce5","webpack:///notes/components/note_awards_list.vue","webpack:///./notes/components/note_awards_list.vue?39f2","webpack:///./notes/components/note_awards_list.vue","webpack:///./notes/components/note_body.vue?efe9","webpack:///notes/components/note_body.vue","webpack:///./notes/components/note_body.vue?522c","webpack:///./notes/components/note_body.vue","webpack:///./notes/components/noteable_note.vue?af54","webpack:///notes/components/noteable_note.vue","webpack:///./notes/components/noteable_note.vue?8bfa","webpack:///./vue_shared/directives/autofocusonshow.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/collapse/collapse.js","webpack:////build/source/node_modules/lodash/_initCloneArray.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/dropdown/dropdown_section_header.js","webpack:////build/source/node_modules/util/support/isBufferBrowser.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_resolve.mutation.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tbody.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js","webpack:////build/source/node_modules/immer/dist/immer.esm.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/issue_weight.query.graphql","webpack:///notes/components/discussion_notes_replies_wrapper.vue","webpack:///./notes/components/discussion_notes_replies_wrapper.vue?2484","webpack:///./lib/utils/vue3compat/normalize_children.js","webpack:///./notes/components/discussion_notes_replies_wrapper.vue","webpack:///./notes/components/note_signed_out_widget.vue","webpack:///./notes/components/note_signed_out_widget.vue?5189","webpack:///notes/components/note_signed_out_widget.vue","webpack:///./notes/components/note_signed_out_widget.vue?69f8","webpack:///./issuable/constants.js","webpack:///./notes/mixins/noteable.js","webpack:////build/source/ee/app/assets/javascripts/iterations/components/iteration_title.vue","webpack:////build/source/ee/app/assets/javascripts/iterations/components/iteration_title.vue?94c9","webpack:///../../../ee/app/assets/javascripts/iterations/components/iteration_title.vue","webpack:////build/source/ee/app/assets/javascripts/iterations/components/iteration_title.vue?b170","webpack:///./notes/components/note_edited_text.vue","webpack:///./notes/components/note_edited_text.vue?42f6","webpack:///notes/components/note_edited_text.vue","webpack:///./notes/components/note_edited_text.vue?7674","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_search_input.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox.js","webpack:////build/source/node_modules/lodash/uniq.js","webpack:////build/source/node_modules/lodash/_baseUniq.js","webpack:////build/source/node_modules/lodash/isMap.js","webpack:///./sidebar/components/confidential/sidebar_confidentiality_widget.vue","webpack:///./sidebar/components/confidential/sidebar_confidentiality_content.vue?05e7","webpack:///sidebar/components/confidential/sidebar_confidentiality_content.vue","webpack:///./sidebar/components/confidential/sidebar_confidentiality_content.vue?a60c","webpack:///./sidebar/components/confidential/sidebar_confidentiality_content.vue","webpack:///./sidebar/components/confidential/sidebar_confidentiality_form.vue?78e9","webpack:///sidebar/components/confidential/sidebar_confidentiality_form.vue","webpack:///./sidebar/components/confidential/sidebar_confidentiality_form.vue?f31e","webpack:///./sidebar/components/confidential/sidebar_confidentiality_form.vue","webpack:///sidebar/components/confidential/sidebar_confidentiality_widget.vue","webpack:///./sidebar/components/confidential/sidebar_confidentiality_widget.vue?249e","webpack:///./sidebar/components/confidential/sidebar_confidentiality_widget.vue?c4ed","webpack:////build/source/node_modules/@gitlab/ui/dist/components/regions/empty_state/empty_state.js","webpack:///./pages/projects/merge_requests/queries/diff_generated.subscription.graphql","webpack:///./sidebar/components/move/issuable_move_dropdown.vue","webpack:///./sidebar/components/move/issuable_move_dropdown.vue?7f83","webpack:///sidebar/components/move/issuable_move_dropdown.vue","webpack:///./sidebar/components/move/issuable_move_dropdown.vue?ce92","webpack:////build/source/node_modules/lodash/_createInverter.js","webpack:////build/source/ee/app/assets/javascripts/vulnerabilities/constants.js","webpack:///./projects/commit/store/mutation_types.js","webpack:///./projects/commit/store/actions.js","webpack:///./projects/commit/store/getters.js","webpack:///./projects/commit/store/mutations.js","webpack:///./projects/commit/store/index.js","webpack:///./projects/commit/store/state.js","webpack:///./vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue","webpack:///vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue","webpack:///./vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue?bc46","webpack:///./vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue?b534","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/intersection_observer/intersection_observer.js","webpack:///./notes/components/discussion_resolve_button.vue","webpack:///./notes/components/discussion_resolve_button.vue?c7be","webpack:///notes/components/discussion_resolve_button.vue","webpack:///./notes/components/discussion_resolve_button.vue?b5ab","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/constants.js","webpack:///./vue_shared/components/panel_resizer.vue","webpack:///./vue_shared/components/panel_resizer.vue?a7f2","webpack:///vue_shared/components/panel_resizer.vue","webpack:///./vue_shared/components/panel_resizer.vue?90ab","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js","webpack:///./notes/components/noteable_discussion.vue","webpack:///./notes/components/diff_discussion_header.vue?00cb","webpack:///notes/components/diff_discussion_header.vue","webpack:///./notes/components/diff_discussion_header.vue?71f7","webpack:///./notes/components/diff_discussion_header.vue","webpack:///notes/components/diff_with_note.vue","webpack:///./notes/components/diff_with_note.vue?2cbc","webpack:///./notes/components/diff_with_note.vue?969c","webpack:///./notes/components/diff_with_note.vue","webpack:///./notes/components/discussion_resolve_with_issue_button.vue?aa9d","webpack:///notes/components/discussion_resolve_with_issue_button.vue","webpack:///./notes/components/discussion_resolve_with_issue_button.vue?814e","webpack:///./notes/components/discussion_resolve_with_issue_button.vue","webpack:///./notes/components/discussion_actions.vue?78e2","webpack:///notes/components/discussion_actions.vue","webpack:///./notes/components/discussion_actions.vue?9023","webpack:///./notes/components/discussion_actions.vue","webpack:///./notes/components/discussion_notes.vue?d80d","webpack:///notes/components/discussion_notes.vue","webpack:///./notes/components/discussion_notes.vue?e01a","webpack:///./notes/components/discussion_notes.vue","webpack:///./notes/components/noteable_discussion.vue?70dc","webpack:///notes/components/noteable_discussion.vue","webpack:///./notes/components/noteable_discussion.vue?719c","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/issuable_epic.subscription.graphql","webpack:////build/source/node_modules/lodash/last.js","webpack:////build/source/node_modules/lodash/_copySymbols.js","webpack:///./projects/commit/init_cherry_pick_commit_modal.js","webpack:////build/source/ee/app/assets/javascripts/issues/list/queries/get_issues_counts.query.graphql","webpack:///./labels/create_label_dropdown.js","webpack:///./labels/labels_select.js","webpack:///./notes/mixins/discussion_navigation.js","webpack:///./vue_shared/components/notes/system_note.vue","webpack:////build/source/ee/app/assets/javascripts/notes/mixins/description_version_history.js","webpack:///vue_shared/components/notes/system_note.vue","webpack:///./vue_shared/components/notes/system_note.vue?a7df","webpack:///./vue_shared/components/notes/system_note.vue?dbb7","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/DynamicScroller.vue","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/DynamicScroller.vue?417b","webpack:///../../../vendor/assets/javascripts/vue-virtual-scroller/src/components/DynamicScroller.vue","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/DynamicScroller.vue?b787","webpack:///./notes/components/discussion_reply_placeholder.vue","webpack:///./notes/components/discussion_reply_placeholder.vue?cbcc","webpack:///notes/components/discussion_reply_placeholder.vue","webpack:///./notes/components/discussion_reply_placeholder.vue?656a","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/iteration.fragment.graphql","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_dismiss.mutation.graphql","webpack:///./lib/utils/poll.js","webpack:///./sidebar/components/copy/copyable_field.vue","webpack:///./sidebar/components/copy/copyable_field.vue?079c","webpack:///sidebar/components/copy/copyable_field.vue","webpack:///./sidebar/components/copy/copyable_field.vue?df3a","webpack:///./sidebar/components/todo_toggle/todo_button.vue","webpack:///./sidebar/components/todo_toggle/todo_button.vue?b16f","webpack:///sidebar/components/todo_toggle/todo_button.vue","webpack:///./sidebar/components/todo_toggle/todo_button.vue?7910","webpack:///./diffs/utils/file_reviews.js","webpack:///./right_sidebar.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/code_flow/utils/utils.js","webpack:///./sidebar/components/participants/sidebar_participants_widget.vue","webpack:///./sidebar/components/participants/sidebar_participants.vue?8f90","webpack:///sidebar/components/participants/sidebar_participants.vue","webpack:///./sidebar/components/participants/sidebar_participants.vue?ffee","webpack:///./sidebar/components/participants/sidebar_participants.vue","webpack:///./sidebar/components/participants/sidebar_participants_widget.vue?676a","webpack:///sidebar/components/participants/sidebar_participants_widget.vue","webpack:///./sidebar/components/participants/sidebar_participants_widget.vue?f368","webpack:///./vue_shared/components/ci_icon/ci_icon.vue","webpack:///./vue_shared/components/ci_icon/ci_icon.vue?b66d","webpack:///vue_shared/components/ci_icon/ci_icon.vue","webpack:///./vue_shared/components/ci_icon/ci_icon.vue?9e67","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_type/search_box_by_type.js","webpack:///./sidebar/components/severity/sidebar_severity_widget.vue","webpack:///./sidebar/components/severity/sidebar_severity_widget.vue?6d30","webpack:///sidebar/components/severity/sidebar_severity_widget.vue","webpack:///./sidebar/components/severity/sidebar_severity_widget.vue?a42c","webpack:////build/source/app/graphql/queries/repository/blob_info.query.graphql","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_escalation_policies.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/toggle/toggle.js","webpack:///./diffs/utils/queue_events.js","webpack:////build/source/node_modules/lodash/map.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/label/label.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/mixins/has-listener.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/helpers/bv-collapse.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/collapse.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_parent.query.graphql","webpack:///./content_editor/services/highlight_js_language_loader.js","webpack:///./diffs/components/diff_stats.vue","webpack:///./diffs/components/diff_stats.vue?9cf2","webpack:///diffs/components/diff_stats.vue","webpack:///./diffs/components/diff_stats.vue?a622","webpack:///./vue_shared/components/source_viewer/workers/highlight_utils.js","webpack:///./sidebar/components/assignees/sidebar_assignees_widget.vue","webpack:///./sidebar/components/assignees/assignees_realtime.vue?4bc8","webpack:///sidebar/components/assignees/assignees_realtime.vue","webpack:///./sidebar/components/assignees/assignees_realtime.vue","webpack:///./sidebar/components/assignees/issuable_assignees.vue?6926","webpack:///sidebar/components/assignees/issuable_assignees.vue","webpack:///./sidebar/components/assignees/issuable_assignees.vue?cb0e","webpack:///./sidebar/components/assignees/issuable_assignees.vue","webpack:///./sidebar/components/assignees/sidebar_invite_members.vue?a559","webpack:///sidebar/components/assignees/sidebar_invite_members.vue","webpack:///./sidebar/components/assignees/sidebar_invite_members.vue?0e62","webpack:///./sidebar/components/assignees/sidebar_invite_members.vue","webpack:///sidebar/components/assignees/sidebar_assignees_widget.vue","webpack:///./sidebar/components/assignees/sidebar_assignees_widget.vue?e4e9","webpack:///./sidebar/components/assignees/sidebar_assignees_widget.vue?c10d","webpack:///./performance/utils.js","webpack:////build/source/node_modules/lodash/isRegExp.js","webpack:////build/source/node_modules/lodash/_hasUnicodeWord.js","webpack:////build/source/node_modules/micromatch/index.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue","webpack:///../../../ee/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue?d7a9","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/sidebar_dropdown_widget.vue?8fb0","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/avatar_link/avatar_link.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tr.js","webpack:///./graphql_shared/queries/merge_request.query.graphql","webpack:///./diffs/components/settings_dropdown.vue","webpack:///./diffs/components/settings_dropdown.vue?53e8","webpack:///diffs/components/settings_dropdown.vue","webpack:///./diffs/components/settings_dropdown.vue?d71b","webpack:////build/source/node_modules/lodash/_asciiSize.js","webpack:////build/source/node_modules/lodash/_copySymbolsIn.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_revert_to_detected.mutation.graphql","webpack:////build/source/node_modules/lodash/_baseWhile.js","webpack:///./sidebar/components/date/sidebar_date_widget.vue","webpack:///./sidebar/components/date/sidebar_formatted_date.vue?8561","webpack:///sidebar/components/date/sidebar_formatted_date.vue","webpack:///./sidebar/components/date/sidebar_formatted_date.vue?4339","webpack:///./sidebar/components/date/sidebar_formatted_date.vue","webpack:///./sidebar/components/date/sidebar_inherit_date.vue?c544","webpack:///sidebar/components/date/sidebar_inherit_date.vue","webpack:///./sidebar/components/date/sidebar_inherit_date.vue?f165","webpack:///./sidebar/components/date/sidebar_inherit_date.vue","webpack:///sidebar/components/date/sidebar_date_widget.vue","webpack:///./sidebar/components/date/sidebar_date_widget.vue?c7e5","webpack:///./sidebar/components/date/sidebar_date_widget.vue?dc1e","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/work_item_parent.subscription.graphql","webpack:///./ci/reports/codequality_report/constants.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/mutations/vulnerability_confirm.mutation.graphql","webpack:///./ide/stores/utils.js","webpack:////build/source/node_modules/lodash/_cloneDataView.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/nav/nav.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tabs/tabs.js","webpack:///./sidebar/utils.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/issue_escalation_policy.query.graphql","webpack:///./issuable/components/locked_badge.vue","webpack:///./issuable/components/locked_badge.vue?7fc0","webpack:///issuable/components/locked_badge.vue","webpack:///./issuable/components/locked_badge.vue?3234","webpack:///./sidebar/components/assignees/collapsed_assignee.vue?875d","webpack:///sidebar/components/assignees/collapsed_assignee.vue","webpack:///./sidebar/components/assignees/collapsed_assignee.vue?649a","webpack:///./sidebar/components/assignees/collapsed_assignee.vue","webpack:///sidebar/components/assignees/collapsed_assignee_list.vue","webpack:///./sidebar/components/assignees/collapsed_assignee_list.vue?8f5b","webpack:///./sidebar/components/assignees/collapsed_assignee_list.vue?8f8f","webpack:///./sidebar/components/assignees/collapsed_assignee_list.vue","webpack:///./sidebar/components/copy/copy_email_to_clipboard.vue?a2cc","webpack:///sidebar/components/copy/copy_email_to_clipboard.vue","webpack:///./sidebar/components/copy/copy_email_to_clipboard.vue?9f25","webpack:///./sidebar/components/copy/copy_email_to_clipboard.vue","webpack:///sidebar/components/incidents/escalation_status.vue","webpack:///./sidebar/components/incidents/escalation_status.vue?5e0f","webpack:///./sidebar/components/incidents/escalation_status.vue?9b66","webpack:///./sidebar/components/incidents/escalation_status.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_status.vue?df5d","webpack:///../../../ee/app/assets/javascripts/sidebar/components/incidents/escalation_status.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_status.vue?6e63","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/incidents/escalation_status.vue","webpack:///./sidebar/components/incidents/sidebar_escalation_status.vue?bd8f","webpack:///sidebar/components/incidents/sidebar_escalation_status.vue","webpack:///./sidebar/components/incidents/sidebar_escalation_status.vue?e7fe","webpack:///./sidebar/components/incidents/sidebar_escalation_status.vue","webpack:///sidebar/components/milestone/milestone_dropdown.vue","webpack:///./sidebar/components/milestone/milestone_dropdown.vue?1044","webpack:///./sidebar/components/milestone/milestone_dropdown.vue?0894","webpack:///./sidebar/components/milestone/milestone_dropdown.vue","webpack:///./sidebar/components/move/move_issues_button.vue?9526","webpack:///sidebar/components/move/move_issues_button.vue","webpack:///./sidebar/components/move/move_issues_button.vue?bb2a","webpack:///./sidebar/components/move/move_issues_button.vue","webpack:///./sidebar/components/copy/sidebar_reference_widget.vue?2390","webpack:///sidebar/components/copy/sidebar_reference_widget.vue","webpack:///./sidebar/components/copy/sidebar_reference_widget.vue?439a","webpack:///./sidebar/components/copy/sidebar_reference_widget.vue","webpack:///./sidebar/components/reviewers/sidebar_reviewers_inputs.vue?1448","webpack:///sidebar/components/reviewers/sidebar_reviewers_inputs.vue","webpack:///./sidebar/components/reviewers/sidebar_reviewers_inputs.vue?8ee8","webpack:///./sidebar/components/reviewers/sidebar_reviewers_inputs.vue","webpack:///./sidebar/components/status/status_dropdown.vue?a6d1","webpack:///sidebar/components/status/status_dropdown.vue","webpack:///./sidebar/components/status/status_dropdown.vue?6e3e","webpack:///./sidebar/components/status/status_dropdown.vue","webpack:///./sidebar/components/subscriptions/subscriptions_dropdown.vue?7133","webpack:///sidebar/components/subscriptions/subscriptions_dropdown.vue","webpack:///./sidebar/components/subscriptions/subscriptions_dropdown.vue?2ddf","webpack:///./sidebar/components/subscriptions/subscriptions_dropdown.vue","webpack:///./sidebar/components/time_tracking/sidebar_time_tracking.vue?7e16","webpack:///sidebar/components/time_tracking/sidebar_time_tracking.vue","webpack:///./sidebar/components/time_tracking/sidebar_time_tracking.vue?11f8","webpack:///./sidebar/components/time_tracking/sidebar_time_tracking.vue","webpack:///./sidebar/components/crm_contacts/crm_contacts.vue?a876","webpack:///sidebar/components/crm_contacts/crm_contacts.vue","webpack:///./sidebar/components/crm_contacts/crm_contacts.vue?bc8c","webpack:///./sidebar/components/crm_contacts/crm_contacts.vue","webpack:///./sidebar/components/move/move_issue_button.vue","webpack:///./sidebar/components/move/move_issue_button.vue?2755","webpack:///sidebar/components/move/move_issue_button.vue","webpack:///./sidebar/components/move/move_issue_button.vue?5de6","webpack:///./sidebar/components/confidential/confidentiality_dropdown.vue?8ff8","webpack:///sidebar/components/confidential/confidentiality_dropdown.vue","webpack:///./sidebar/components/confidential/confidentiality_dropdown.vue?391b","webpack:///./sidebar/components/confidential/confidentiality_dropdown.vue","webpack:///./sidebar/mount_sidebar.js","webpack:///./sidebar/track_invite_members.js","webpack:////build/source/node_modules/lodash/_baseIsRegExp.js","webpack:///./notes/components/discussion_locked_widget.vue","webpack:///./notes/components/discussion_locked_widget.vue?d8e1","webpack:///notes/components/discussion_locked_widget.vue","webpack:///./notes/components/discussion_locked_widget.vue?c4cb","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/pagination/pagination.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/constants.js","webpack:////build/source/node_modules/lodash/_baseAssignIn.js","webpack:////build/source/node_modules/lodash/_unicodeWords.js","webpack:///./users_select/constants.js","webpack:///./vue_shared/components/changed_file_icon.vue","webpack:///./vue_shared/components/changed_file_icon.vue?bf30","webpack:///vue_shared/components/changed_file_icon.vue","webpack:///./vue_shared/components/changed_file_icon.vue?e25a","webpack:///./vue_shared/components/changed_file_icon.vue?ee0b","webpack:////build/source/node_modules/lodash/deburr.js","webpack:////build/source/node_modules/lodash/takeRightWhile.js","webpack:////build/source/node_modules/picomatch/lib/scan.js","webpack:////build/source/node_modules/lodash/intersection.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tab/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/constants.js","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/RecycleScroller.vue","webpack:////build/source/node_modules/vue-resize/dist/vue-resize.css?d8ac","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/utils.js","webpack:///../../../vendor/assets/javascripts/vue-virtual-scroller/src/components/RecycleScroller.vue","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/RecycleScroller.vue?9085","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/RecycleScroller.vue?08d6","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/RecycleScroller.vue?a88d","webpack:////build/source/node_modules/to-regex-range/index.js","webpack:///./vue_shared/components/notes/placeholder_note.vue","webpack:///./vue_shared/components/notes/placeholder_note.vue?d8fc","webpack:///vue_shared/components/notes/placeholder_note.vue","webpack:///./vue_shared/components/notes/placeholder_note.vue?cb3a","webpack:///../../../vendor/assets/javascripts/vue-virtual-scroller/src/components/DynamicScrollerItem.vue","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/DynamicScrollerItem.vue?c501","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/components/DynamicScrollerItem.vue","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js","webpack:///./sidebar/components/sidebar_dropdown_widget.vue","webpack:///./sidebar/components/sidebar_dropdown_widget.vue?f2e5","webpack:///sidebar/components/sidebar_dropdown_widget.vue","webpack:///./sidebar/components/sidebar_dropdown_widget.vue?c2a7","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_iteration.mutation.graphql","webpack:///./vue_shared/mixins/modal_keyboard_navigation_mixin.js","webpack:////build/source/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:///./sidebar/components/time_tracking/time_tracker.vue","webpack:///./sidebar/components/time_tracking/collapsed_state.vue?494b","webpack:///sidebar/components/time_tracking/collapsed_state.vue","webpack:///./sidebar/components/time_tracking/collapsed_state.vue?b7dc","webpack:///./sidebar/components/time_tracking/collapsed_state.vue","webpack:///./sidebar/components/time_tracking/comparison_pane.vue?b1ae","webpack:///sidebar/components/time_tracking/comparison_pane.vue","webpack:///./sidebar/components/time_tracking/comparison_pane.vue?0cd7","webpack:///./sidebar/components/time_tracking/comparison_pane.vue","webpack:///sidebar/components/time_tracking/spent_only_pane.vue","webpack:///./sidebar/components/time_tracking/spent_only_pane.vue?e3e5","webpack:///./sidebar/components/time_tracking/spent_only_pane.vue?7fb1","webpack:///./sidebar/components/time_tracking/spent_only_pane.vue","webpack:///./sidebar/components/time_tracking/time_tracker.vue?3a0a","webpack:///sidebar/components/time_tracking/time_tracker.vue","webpack:///./sidebar/components/time_tracking/time_tracker.vue?94b5","webpack:///./vue_shared/components/source_viewer/plugins/wrap_child_nodes.js","webpack:///./vue_shared/components/source_viewer/plugins/wrap_bidi_chars.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/dependency_linker_util.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/package_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/gemspec_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/godeps_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/gemfile_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/podspec_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/composer_json_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/utils/go_sum_linker.js","webpack:///./vue_shared/components/source_viewer/plugins/link_dependencies.js","webpack:///./vue_shared/components/source_viewer/plugins/wrap_lines.js","webpack:///./highlight_js/plugins/index.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/issue_escalation_policy.mutation.graphql","webpack:///./sidebar/components/subscriptions/sidebar_subscriptions_widget.vue","webpack:///sidebar/components/subscriptions/sidebar_subscriptions_widget.vue","webpack:///./sidebar/components/subscriptions/sidebar_subscriptions_widget.vue?b3ae","webpack:///./sidebar/components/subscriptions/sidebar_subscriptions_widget.vue?af29","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/group_epics.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/dropdown/dropdown_form.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/datepicker/datepicker.js","webpack:////build/source/node_modules/lodash/_castSlice.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/epic.fragment.graphql","webpack:////build/source/node_modules/lodash/_baseIsMap.js","webpack:////build/source/node_modules/lodash/kebabCase.js","webpack:///./projects/report_abuse/components/report_abuse_dropdown_item.vue?fd8f","webpack:///projects/report_abuse/components/report_abuse_dropdown_item.vue","webpack:///./projects/report_abuse/components/report_abuse_dropdown_item.vue?83c5","webpack:///./projects/report_abuse/components/report_abuse_dropdown_item.vue","webpack:///./projects/report_abuse/index.js","webpack:////build/source/node_modules/picomatch/index.js","webpack:////build/source/node_modules/braces/lib/compile.js","webpack:///./batch_comments/services/drafts_service.js","webpack:///./batch_comments/stores/modules/batch_comments/actions.js","webpack:///./batch_comments/stores/modules/batch_comments/getters.js","webpack:///./batch_comments/stores/modules/batch_comments/mutations.js","webpack:///./diffs/utils/suggestions.js","webpack:///./diffs/store/getters_versions_dropdowns.js","webpack:///./diffs/store/getters.js","webpack:///./diffs/store/mutations.js","webpack:///./diffs/utils/tree_worker_utils.js","webpack:///./diffs/store/actions.js","webpack:///./diffs/store/mutation_types.js","webpack:///./diffs/store/modules/diff_state.js","webpack:///./mr_notes/stores/mutation_types.js","webpack:///./mr_notes/stores/actions.js","webpack:///./mr_notes/stores/getters.js","webpack:///./mr_notes/stores/mutations.js","webpack:///./mr_notes/stores/drawer/mutation_types.js","webpack:///./mr_notes/stores/drawer/actions.js","webpack:///./mr_notes/stores/drawer/getters.js","webpack:///./mr_notes/stores/drawer/mutations.js","webpack:///./mr_notes/stores/index.js","webpack:///./mr_notes/stores/modules/index.js","webpack:///./diffs/store/modules/index.js","webpack:///./batch_comments/stores/modules/batch_comments/index.js","webpack:///./batch_comments/stores/modules/batch_comments/state.js","webpack:///./mr_notes/stores/drawer/index.js","webpack:///./vue_shared/components/diff_viewer/diff_viewer.vue","webpack:///./vue_shared/components/diff_viewer/constants.js","webpack:///vue_shared/components/diff_viewer/viewers/download_diff_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/download_diff_viewer.vue?5ec3","webpack:///./vue_shared/components/diff_viewer/viewers/download_diff_viewer.vue?2c71","webpack:///./vue_shared/components/diff_viewer/viewers/download_diff_viewer.vue","webpack:///./vue_shared/components/lib/utils/dom_utils.js","webpack:///vue_shared/components/diff_viewer/viewers/image_diff/onion_skin_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/onion_skin_viewer.vue?3f50","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/onion_skin_viewer.vue?3783","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/onion_skin_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/swipe_viewer.vue?cf76","webpack:///vue_shared/components/diff_viewer/viewers/image_diff/swipe_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/swipe_viewer.vue?ea67","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/swipe_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue?6924","webpack:///vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue?b1ff","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue?4672","webpack:///vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue?578e","webpack:///./vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue","webpack:///./vue_shared/components/diff_viewer/viewers/mode_changed.vue?2136","webpack:///vue_shared/components/diff_viewer/viewers/mode_changed.vue","webpack:///./vue_shared/components/diff_viewer/viewers/mode_changed.vue?dc05","webpack:///./vue_shared/components/diff_viewer/viewers/mode_changed.vue","webpack:///vue_shared/components/diff_viewer/viewers/renamed.vue","webpack:///./vue_shared/components/diff_viewer/viewers/renamed.vue?21bd","webpack:///./vue_shared/components/diff_viewer/utils.js","webpack:///./vue_shared/components/diff_viewer/viewers/renamed.vue?3d25","webpack:///./vue_shared/components/diff_viewer/viewers/renamed.vue","webpack:///./vue_shared/components/diff_viewer/diff_viewer.vue?e812","webpack:///vue_shared/components/diff_viewer/diff_viewer.vue","webpack:///./vue_shared/components/diff_viewer/diff_viewer.vue?3c42","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/table-lite.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/table_lite/table_lite.js","webpack:////build/source/node_modules/braces/lib/stringify.js","webpack:///./users_select/utils.js","webpack:///./users_select/index.js","webpack:///./sidebar/queries/issue_crm_contacts.fragment.graphql","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/weight/sidebar_weight_widget.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/weight/sidebar_weight_widget.vue?ef44","webpack:///../../../ee/app/assets/javascripts/sidebar/components/weight/sidebar_weight_widget.vue","webpack:////build/source/ee/app/assets/javascripts/sidebar/components/weight/sidebar_weight_widget.vue?1f0e","webpack:///./notes/components/multiline_comment_utils.js","webpack:///./pages/projects/merge_requests/diffs/index.js","webpack:////build/source/ee/app/assets/javascripts/security_dashboard/graphql/fragments/last_state_transition.fragment.graphql","webpack:///./issuable/components/hidden_badge.vue","webpack:///./issuable/components/hidden_badge.vue?d89a","webpack:///issuable/components/hidden_badge.vue","webpack:///./issuable/components/hidden_badge.vue?8c0c","webpack:////build/source/vendor/assets/javascripts/vue-virtual-scroller/src/mixins/IdState.js","webpack:////build/source/node_modules/lodash/_cloneRegExp.js","webpack:////build/source/ee/app/assets/javascripts/graphql_shared/subscriptions/issuable_weight.subscription.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js","webpack:///./vue_shared/components/notes/placeholder_system_note.vue","webpack:///./vue_shared/components/notes/placeholder_system_note.vue?2f47","webpack:///vue_shared/components/notes/placeholder_system_note.vue","webpack:///./vue_shared/components/notes/placeholder_system_note.vue?e5c8","webpack:////build/source/node_modules/lodash/_baseSlice.js"],"names":["constant","createInverter","identity","nativeObjectToString","Object","prototype","toString","invert","result","value","key","call","module","exports","isInteger","num","Number","trim","find","node","type","nodes","exceedsLimit","min","max","step","limit","escapeNode","block","n","escaped","encloseBrace","commas","ranges","invalid","isInvalidBrace","dollar","open","close","isOpenOrClose","reduce","acc","push","flatten","args","flat","arr","i","length","ele","Array","isArray","undefined","getDraftReplyFormData","data","endpoint","notesData","draftsPath","getDraftFormData","params","getFormData","parallelLineKey","line","side","line_code","showDraftOnSide","otherSide","thisCode","otherCode","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","nativeMin","Math","arrays","iteratee","comparator","includes","othLength","othIndex","caches","maxLength","Infinity","array","index","seen","outer","computed","cache","root","factory","moment","e","hasMoment","hasEventListeners","window","addEventListener","document","sto","setTimeout","addEvent","el","callback","capture","attachEvent","removeEvent","removeEventListener","detachEvent","hasClass","cn","className","indexOf","addClass","removeClass","str","replace","obj","test","isDate","isNaN","getTime","isWeekend","date","day","getDay","isLeapYear","year","getDaysInMonth","month","setToStartOfDay","setHours","compareDates","a","b","extend","to","from","overwrite","prop","hasProp","nodeName","Date","slice","fireEvent","eventName","ev","createEvent","initEvent","dispatchEvent","createEventObject","adjustCalendar","calendar","ceil","abs","floor","defaults","field","bound","ariaLabel","position","reposition","format","parse","defaultDate","setDefaultDate","firstDay","formatStrict","minDate","maxDate","yearRange","showWeekNumber","pickWholeWeek","minYear","maxYear","minMonth","maxMonth","startRange","endRange","isRTL","yearSuffix","showMonthAfterYear","showDaysInNextAndPreviousMonths","enableSelectionDaysInNextAndPreviousMonths","numberOfMonths","mainCalendar","container","blurFieldOnSelect","i18n","previousMonth","nextMonth","months","weekdays","weekdaysShort","theme","events","onSelect","onOpen","onClose","onDraw","keyboardInput","renderDayName","opts","abbr","renderDay","ariaSelected","isEmpty","isDisabled","isToday","isSelected","hasEvent","isInRange","isStartRange","isEndRange","join","renderRow","days","isRowSelected","reverse","renderTitle","instance","c","refYear","randId","j","monthHtml","yearHtml","_o","isMinYear","isMaxYear","html","prev","next","Pikaday","options","self","this","config","_onMouseDown","_v","target","event","srcElement","parentNode","prevMonth","setDate","getAttribute","hide","blur","_c","preventDefault","returnValue","_onChange","gotoMonth","gotoYear","_onKeyChange","isVisible","keyCode","adjustDate","_onInputChange","firedBy","isValid","toDate","show","_onInputFocus","_onInputClick","_onInputBlur","pEl","activeElement","_b","_onClick","onchange","setAttribute","trigger","createElement","appendChild","body","insertBefore","nextSibling","defDate","gotoDate","disableWeekends","disableDayFn","nom","parseInt","setMinDate","setMaxDate","fallback","getFullYear","_d","toDateString","getMoment","setMoment","preventOnSelect","isMoment","getDate","draw","newCalendar","calendars","firstVisibleDate","lastVisibleDate","visibleDate","setMonth","getMonth","adjustCalendars","sign","newDay","difference","valueOf","gotoToday","setStartRange","setEndRange","force","_y","_m","random","substr","render","innerHTML","focus","adjustPosition","width","height","viewportWidth","viewportHeight","scrollTop","left","top","clientRect","leftAligned","bottomAligned","style","offsetWidth","offsetHeight","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","pageYOffset","getBoundingClientRect","pageXOffset","bottom","offsetLeft","offsetTop","offsetParent","now","before","row","yearOfPreviousMonth","yearOfNextMonth","daysInPreviousMonth","cells","after","d","m","y","onejan","isWeekSelected","r","dayNumber","monthNumber","yearNumber","dayConfig","unshift","weekNum","renderHead","rows","renderTable","v","destroy","removeChild","name","components","GlTooltip","GlAvatar","props","lazy","Boolean","required","default","imgSrc","String","defaultAvatarUrl","cssClasses","imgAlt","__","size","tooltipText","tooltipPlacement","pseudo","sanitizedSource","baseSrc","maximumSize","_isObject","values","resultantSrcAttribute","placeholderImage","component","_vm","_self","ref","staticClass","class","backgroundImage","attrs","$scopedSlots","$refs","userAvatar","_t","_s","_e","addition","sum","_len","arguments","numbers","_key","average","modulo","divisor","engineeringNotation","precision","invalidValues","NaN","allYourBase","0","3","6","9","12","15","18","21","24","exponentialNotation","toExponential","power","split","map","scaledPower","scaledMantissa","toFixed","_","fractionalDigits","formatNumberToLocale","locales","Intl","NumberFormat","toFloat","defaultValue","float","parseFloat","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isBuffer","isMap","isObject","isSet","keys","keysIn","cloneableTags","baseClone","bitmask","customizer","object","stack","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","get","set","forEach","subValue","add","transitionEndEventString","FROM_SENTENCE_REGEX","categoryLabelMap","activity","people","nature","food","travel","objects","symbols","flags","AwardsHandler","constructor","emoji","eventListeners","toggleButtonSelector","menuClass","bindEvents","_this","$parentEl","targetContainerEl","$","registerEventListener","requestAnimationFrame","createEmojiMenu","stopPropagation","showEmojiMenu","currentTarget","closest","is","hideMenuElement","emojiButtonSelector","$target","$glEmojiElement","$spriteIconElement","emojiName","addAward","getVotesBlock","getAwardUrl","method","element","$addBtn","_this2","$menu","positionMenu","showMenuElement","$createdMenu","isCreatingEmojiMenu","categoryMap","getEmojiCategoryMap","categoryNameKey","emojisInCategory","firstCategory","renderCategory","frequentlyUsedEmojis","getFrequentlyUsedEmojis","frequentlyUsedCatgegory","frequentEmojis","emojiMenuMarkup","insertAdjacentHTML","addRemainingEmojiMenuCategories","setupSearch","_this3","isAddingRemainingEmojiMenuCategories","menu","querySelector","emojiContentElement","promiseChain","then","Promise","resolve","categoryMarkup","CustomEvent","catch","err","Error","message","emojiList","_this4","_escape","glEmojiTag","sprite","css","outerHeight","offset","bp","getBreakpointSize","outerWidth","votesBlock","awardUrl","_this5","isMainAwardsBlock","isInVueNoteablePage","id","attr","toggleAwardEvent","detail","awardName","noteId","normalizedEmoji","normalizeEmojiName","$emojiButton","findEmojiIcon","postEmoji","addAwardToEmojiBar","addEmojiToFrequentlyUsedList","isActive","decrementCounter","counter","text","addYouToUserList","animateEmoji","createEmoji","$el","currentBlock","resultantVotesBlock","eq","counterNumber","removeYouFromUserList","EMOJI_THUMBS_UP","EMOJI_THUMBS_DOWN","dispose","parents","removeEmoji","remove","$votesBlock","getAwardTooltip","$awardBlock","toSentence","list","sentence","awardBlock","authors","splice","removeData","removeAttr","fixTitle","origTitle","users","createAwardButtonForVotesBlock","buttonHtml","$emoji","_this6","axios","post","ok","createAlert","scrollToAwards","scrollToElement","isEmojiNameValid","_uniq","concat","localStorage","setItem","FREQUENTLY_USED_EMOJIS_STORAGE_KEY","_this7","getItem","filter","inputName","_this8","$search","term","val","searchEmojis","h5","foundEmojis","findMatchingEmojiElements","ul","append","children","getEmojiScore","emojis","elem","x","dataset","score","sortEmojiElements","$elements","_this9","scores","WeakMap","sort","aScore","bScore","query","matchingEmoji","searchEmoji","getEmojiScoreWithIntent","matchingEmojiNames","$matchingElements","elm","clone","$emojiMenu","on","off","entry","awardsHandlerPromise","loadAwardsHandler","reload","Emoji","awardsHandler","setInitialData","commit","fetchAwards","async","dispatch","state","page","headers","joinPaths","gon","relative_url_root","path","per_page","nextPage","normalizeHeaders","error","Sentry","toggleAward","award","awards","user","currentUserId","delete","optimisticAward","MAX_SAFE_INTEGER","current_user_id","current_user_fullname","username","current_username","newOptimisticAward","finally","canAwardEmoji","awardId","Vue","use","Vuex","newCustomEmojiPath","parseBoolean","showDefaultAwardEmojis","store","Store","awardPath","actions","mutations","provide","mapState","created","mounted","methods","mapActions","AwardsList","defaultAwards","selectedClass","isAdded","isRemoved","isUnchanged","isMeta","EXPANDED_LINE_TYPE","isConflictMarker","CONFLICT_MARKER_OUR","CONFLICT_MARKER_THEIR","isConflictSeperator","CONFLICT_MARKER","isConflictOur","CONFLICT_OUR","isConflictTheir","CONFLICT_THEIR","parallelizeDiffLines","diffLines","inline","freeRightIndex","conflictStartIndex","lines","chunk","diffLinesLength","LINE_POSITION_LEFT","LINE_POSITION_RIGHT","right","nextFreeRightIndex","findDiffFile","files","match","matchKey","file","note","noteableType","noteableData","diffFile","noteTargetLine","diffViewType","linePosition","positionType","lineRange","showWhitespace","JSON","stringify","base_sha","diff_refs","start_sha","head_sha","old_path","new_path","position_type","TEXT_DIFF_POSITION_TYPE","old_line","new_line","line_range","ignore_whitespace_change","whitespaceOnlyChange","view","line_type","NEW_LINE_TYPE","OLD_LINE_TYPE","merge_request_diff_head_sha","in_reply_to_discussion_id","note_project_id","target_type","targetType","target_id","return_discussion","noteable_type","noteable_id","commit_id","DIFF_NOTE_TYPE","LEGACY_DIFF_NOTE_TYPE","getNoteFormData","create_note_path","findIndexInInlineLines","lineNumbers","oldLineNumber","newLineNumber","findIndex","getPreviousLineIndex","INLINE_DIFF_LINES_KEY","removeMatchLine","indexForInline","factor","addLineReferences","isExpandDown","nextLineNumbers","lineCount","matchLineIndex","linesWithNumbers","l","MATCH_LINE_TYPE","assign","targetLine","meta_data","old_pos","new_pos","addContextLines","inlineLines","contextLines","inlineIndex","addInlineContextLines","trimFirstCharOfLineContent","parsedLine","rich_text","firstChar","charAt","substring","mergeTwoFiles","source","originalInline","missingInline","parallel_diff_lines","collapsed","ensureBasicDiffFileLines","prepareLine","problems","brokenSymlink","brokenLineCode","fileOnlyMoved","renamed_file","added_lines","removed_lines","alreadyPrepared","commentsDisabled","discussionsExpanded","discussions","hasForm","prepareLineForRenamedFile","lineNumber","cleanLine","file_hash","prepareDiffFileLines","finalizeDiffFile","_file$viewer","isShowingFullFile","isLoadingFullFile","renderingLines","viewer","whitespace_only","prepareDiffData","diff","priorFiles","meta","updatePosition","transformersChain","allFiles","prepareRawDiffFile","dedupedFiles","newList","content_sha","diffFileUniqueId","existingFile","deduplicateFilesList","diff_files","fileResult","transformer","getDiffPositionByLineCode","diffFiles","isDiscussionApplicableToLine","discussion","diffPosition","latestDiff","dp","dpNotUsed","diffPositionCopy","original_position","removeLineRange","pNotUsed","positionNoLineRange","positions","some","_isEqual","active","getDiffMode","_diffFile$viewer","_diffFile$viewer2","diffModeKey","diffModes","diffViewerModes","mode_changed","no_preview","replaced","convertExpandLines","typeKey","oldLineKey","newLineKey","mapLine","dataLength","_property","beforeLine","afterLine","newLineProperty","beforeLineIndex","afterLineIndex","oldLine","newLine","idleCallback","cb","requestIdleCallback","updateLineInFile","selectedFile","lineCode","updateFn","getLinesFromFileByLineCode","isUrlHashNoteLink","urlHash","startsWith","parseUrlHashAsFileHash","currentDiffFileId","hashless","isNoteLink","extractedSha1","extractFileHash","input","isUrlHashFileHeader","markTreeEntriesLoaded","priorEntries","loadedFiles","newEntries","newFile","diffLoaded","diffLoading","collapseReplies","s__","expandReplies","lastReplyBy","GlButton","GlLink","GlSprintf","GlAvatarLink","GlAvatarsInline","TimeAgoTooltip","replies","lastReply","uniqueAuthors","reply","author","_uniqBy","buttonIcon","buttonLabel","$options","ariaState","toggle","$emit","scopedSlots","_u","fn","avatar","webUrl","avatar_url","avatarUrl","n__","proxy","created_at","createdAt","scan","utils","constants","picomatch","glob","returnState","fns","isMatch","isState","tokens","TypeError","posix","isWindows","regex","compileRe","makeRe","isIgnored","ignore","ignoreOpts","onMatch","onResult","matcher","returnObject","output","onIgnore","toPosixSlashes","matchBase","basename","exec","RegExp","patterns","pattern","p","fastpaths","returnOutput","prepend","contains","negated","toRegex","parsed","nocase","debug","asciiSize","hasUnicode","unicodeSize","string","PERFORMANCE_TYPE_MARK","PERFORMANCE_TYPE_MEASURE","SNIPPET_MARK_VIEW_APP_START","SNIPPET_MARK_EDIT_APP_START","SNIPPET_MARK_BLOBS_CONTENT","SNIPPET_MEASURE_BLOBS_CONTENT","WEBIDE_MARK_APP_START","WEBIDE_MARK_FILE_CLICKED","WEBIDE_MARK_FILE_FINISH","WEBIDE_MARK_REPO_EDITOR_START","WEBIDE_MARK_REPO_EDITOR_FINISH","WEBIDE_MARK_FETCH_BRANCH_DATA_START","WEBIDE_MARK_FETCH_BRANCH_DATA_FINISH","WEBIDE_MARK_FETCH_FILE_DATA_START","WEBIDE_MARK_FETCH_FILE_DATA_FINISH","WEBIDE_MARK_FETCH_FILES_START","WEBIDE_MARK_FETCH_FILES_FINISH","WEBIDE_MARK_FETCH_PROJECT_DATA_START","WEBIDE_MARK_FETCH_PROJECT_DATA_FINISH","WEBIDE_MEASURE_FILE_AFTER_INTERACTION","WEBIDE_MEASURE_FETCH_PROJECT_DATA","WEBIDE_MEASURE_FETCH_BRANCH_DATA","WEBIDE_MEASURE_FETCH_FILE_DATA","WEBIDE_MEASURE_BEFORE_VUE","WEBIDE_MEASURE_REPO_EDITOR","WEBIDE_MEASURE_FETCH_FILES","MR_DIFFS_MARK_FILE_TREE_START","MR_DIFFS_MARK_FILE_TREE_END","MR_DIFFS_MARK_DIFF_FILES_START","MR_DIFFS_MARK_FIRST_DIFF_FILE_SHOWN","MR_DIFFS_MARK_DIFF_FILES_END","MR_DIFFS_MEASURE_FILE_TREE_DONE","MR_DIFFS_MEASURE_DIFF_FILES_DONE","PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START","PIPELINES_DETAIL_LINKS_MARK_CALCULATE_END","PIPELINES_DETAIL_LINKS_MEASURE_CALCULATION","PIPELINES_DETAIL_LINK_DURATION","PIPELINES_DETAIL_LINKS_TOTAL","PIPELINES_DETAIL_LINKS_JOB_RATIO","REPO_BLOB_LOAD_VIEWER_START","REPO_BLOB_SWITCH_TO_VIEWER_START","REPO_BLOB_LOAD_VIEWER_FINISH","REPO_BLOB_LOAD_VIEWER","REPO_BLOB_SWITCH_VIEWER","DESIGN_MARK_APP_START","DESIGN_MEASURE_BEFORE_APP","DESIGN_MAIN_IMAGE_OUTPUT","snakeCase","createCompounder","word","toLowerCase","UserAvatarLink","ModalCopyButton","CommitPipelineStatus","GlButtonGroup","GlFormCheckbox","directives","GlTooltipDirective","SafeHtml","mixins","glFeatureFlagsMixin","isSelectable","checked","collapsible","authorName","author_name","authorClass","authorId","authorUrl","web_url","author_email","authorAvatar","author_gravatar_url","commitDescription","description_html","safeHtmlConfig","ADD_TAGS","signature_html","domProps","pipeline_status_path","short_id","$event","rawName","title_html","expression","arg","commit_url","authored_date","__vue_script__","vertical","__vue_component__","_h","$createElement","_g","$listeners","staticRenderFns","VueApollo","apolloProvider","defaultClient","createDefaultClient","location","scrollToContainer","hash","destroyPipelines","app","$destroy","toggleLoader","toggleClass","pageBundles","diffs","reports","MergeRequestTabs","action","setUrl","stubLocation","_this$mergeRequestTab","_this$mergeRequestTab2","containers","querySelectorAll","contentWrapper","mergeRequestTabs","mergeRequestTabsAll","mergeRequestTabPanes","mergeRequestTabPanesAll","navbar","peek","getElementById","sidebar","pageLayout","expandSidebar","paddingTop","actionRegex","scrollPositions","commitsTab","currentTab","diffsLoaded","diffsClass","commitsLoaded","isFixedLayoutPreferred","classList","eventHub","createEventHub","loadedPages","setCurrentAction","bind","switchViewType","tabShown","clickTab","click","_event$state","skipScrolling","pathName","at","getActionFromHref","pathname","href","$on","unbindEvents","$off","storeScroll","recallScroll","storedPosition","scrollTo","behavior","stopImmediatePropagation","isMetaClick","targetLink","visitUrl","shouldScroll","_this$expandSidebar","display","tabPane","tab","init","loadCommits","resetViewContainer","mergeRequestPipelinesTable","expandView","isDiffAction","loadDiff","strip","expandViewContainer","mountPipelinesView","notesTab","notesPane","renderGFM","currentAction","mainContentContainer","tabContentContainer","mainContentTop","scrollDestination","newStatePathname","newState","search","history","pushState","url","title","replaceState","getCurrentAction","count","next_page","textContent","commitsDiv","localTimeAgo","loadMoreButton","pipelineTableViewEl","mrWidgetData","gl","table","MergeRequestPipelinesTable","features","mrPipelinesGraphql","artifactsEndpoint","artifactsEndpointPlaceholder","targetProjectFullPath","target_project_full_path","fullPath","graphqlPath","manualActionsLimit","mergeRequestId","iid","sourceProjectFullPath","source_project_full_path","useFailedJobsWidget","emptyStateSvgPath","errorStateSvgPath","canCreatePipelineInTargetProject","can_create_pipeline_in_target_project","projectId","isMergeRequestTable","$mount","mountPipelines","tabs","initDiffStatsDropdown","syntaxHighlight","createDiff","setHubToDiff","each","BlobForkSuggestion","openButtons","forkButtons","cancelButtons","suggestionSections","actionTextPieces","loadDiffs","parseUrlPathname","Diff","mergeRequestEventHub","mrHub","getCookie","$gutterBtn","$collapseSvg","hideSidebar","cachedPageLayoutClasses","showSidebar","MergeRequest","submitNoteForm","initTabs","initMRBtnListeners","taskList","TaskList","dataType","TYPE_MERGE_REQUEST","fieldName","selector","lockVersion","onSuccess","taskStatus","taskStatusShort","innerText","task_status","task_status_short","onError","mrTabs","draftToggles","draftToggle","wipEvent","getParameterValues","mobileDropdown","loader","loadingIconForLegacyJS","classes","firstElementChild","dropdown","put","removeAttribute","toggleDraftStatus","$this","shouldSubmit","form","$button","submit","decreaseCounter","by","first","addDelimiter","isReady","toast","titleEl","setUrlParams","textSelectionActive","sel","containsNode","baseIsSet","nodeUtil","nodeIsSet","doc","loc","definitionRefs","findOperation","definitions","def","refs","Set","collectFragmentReferences","kind","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","oneQuery","baseClamp","toNumber","number","lower","upper","names","isFinite","isOption","item","isGroup","every","hasNoDuplicates","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","_ref","hasUniqueValues","_ref2","hasUniqueGroups","getIterationPeriod","startDate","dueDate","localeDateFormat","asDate","formatRange","newDate","sortCadences","cadences","sortBy","titleA","titleB","localeCompare","groupByIterationCadences","iterations","iteration","iterationCadence","cadenceIteration","period","cadence","groupOptionsByIterationCadences","revert","vulnerabilityRevertToDetected","dismiss","vulnerabilityDismiss","confirm","vulnerabilityConfirm","vulnerabilityResolve","CHANGES_TAB","DISCUSSION_TAB","SHOW_TAB","REVIEW_BAR_VISIBLE_CLASS_NAME","getOwnPropertyDescriptors","descriptors","getOwnPropertyDescriptor","formatRegExp","f","isString","inspect","len","isNull","deprecate","msg","process","noDeprecation","apply","warned","throwDeprecation","traceDeprecation","console","trace","debugEnviron","debugs","ctx","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","isFunction","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","base","braces","toUTCString","formatProperty","formatArray","pop","cur","numLinesEst","reduceToSingleString","desc","ar","re","objectToString","o","pad","debuglog","env","NODE_DEBUG","toUpperCase","pid","isNullOrUndefined","isSymbol","isPrimitive","timestamp","time","getHours","getMinutes","getSeconds","log","inherits","origin","kCustomPromisifiedSymbol","Symbol","callbackifyOnRejected","reason","newReason","promisify","original","defineProperty","enumerable","writable","configurable","promiseResolve","promiseReject","promise","reject","setPrototypeOf","getPrototypeOf","defineProperties","custom","callbackify","callbackified","maybeCb","nextTick","rej","isHighlighted","highlightedRow","isCommented","isContextLine","CONTEXT_LINE_TYPE","isMatchLine","isMetaLine","OLD_NO_NEW_LINE_TYPE","NEW_NO_NEW_LINE_TYPE","EMPTY_CELL_TYPE","hasDiscussions","_line$discussions","fileContentsId","createDiffUrl","URL","searchParams","createFileUrl","lineHref","_line$left","_line$right","classNameMapCell","highlighted","commented","selectionStart","selectionEnd","isLoggedIn","isHover","hll","LINE_HOVER_CLASS_NAME","addCommentTooltip","tooltip","wasSymbolic","isSymbolic","wasReal","isReal","parallelViewLeftLineType","_line$right2","mapParallel","hasParallelDraftLeft","hasParallelDraftRight","draftsForLine","_left","_left2","_right","_right2","_left3","_right3","_left4","_right4","_left5","_right5","_left6","_right6","_left7","_right7","hasExpandedDiscussionOnLeft","hasExpandedDiscussionOnRight","renderCommentRow","_line$right3","_line$left2","renderDiscussion","hasDraft","lineDrafts","hasCommentForm","emptyCellClassMap","conflict_our","conflict_their","isMatchLineLeft","isMatchLineRight","isContextLineLeft","isContextLineRight","hasDiscussionsLeft","hasDiscussionsRight","lineHrefOld","lineHrefNew","isMetaLineLeft","isMetaLineRight","draftRowClasses","commentRowClasses","BFormRadioGroup","getBvRadioGroup","isRadioGroup","model","GlFormRadio","inheritAttrs","onInput","onChange","$attrs","_l","option","disabled","resetServiceWorkersPublicPath","relativeRootPath","__webpack_public_path__","footVariant","BTfoot","getBvTableRowGroup","inject","getBvTable","isTfoot","bvTable","dark","isStacked","isResponsive","isStickyHeader","stickyHeader","tableVariant","bvAttrs","role","h","tfootClasses","tfootAttrs","bvListeners","normalizeSlot","timeFormatted","getTimeago","timeagoLanguageCode","tooltipTitle","asDateTimeFull","LOADING","ERROR","SUCCESS","STATUS_FAILED","STATUS_SUCCESS","STATUS_NEUTRAL","status","SLOT_SUCCESS","SLOT_LOADING","SLOT_ERROR","CODE_QUALITY_SCALE_KEY","SAST_SCALE_KEY","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","lastIndex","returnExportsGlobal","EditableCaret","InputCaret","Mirror","Utils","oDocument","oWindow","setContextBy","$inputor","domInputor","setPos","pos","found","getSelection","parent","range","_i","_results","childNodes","nodeType","createRange","setStart","removeAllRanges","addRange","getIEPosition","getPosition","inputor_offset","getOffset","getOldIEPos","preCaretTextRange","textRange","createTextRange","moveToElementText","setEndPoint","getPos","clonedRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","detach","getOldIEOffset","rect","duplicate","moveStart","shadowCaret","createTextNode","insertNode","selectNode","scrollLeft","rangeCount","getRangeAt","getIEPos","inputor","textInputRange","parentElement","moveToBookmark","getBookmark","collapse","compareEndPoints","move","select","setSelectionRange","getIEOffset","boundingLeft","boundingTop","boundingHeight","end_range","start_range","navigator","userAgent","create","inputorOffset","css_attr","mirrorCss","zIndex","$mirror","$flag","contentEditable","settings","iframe","contentWindow","contentDocument","caret","isPlainObject","apis","CATEGORY_OPTIONS","deepFreeze","Map","clear","freeze","isFrozen","Response","mode","isMatchIgnored","escapeHTML","inherit$1","emitsWrappingTags","scope","HTMLRenderer","parseTree","buffer","classPrefix","walk","prefix","pieces","shift","repeat","scopeToCSSClass","span","newNode","TokenTree","rootNode","closeNode","builder","_walk","addText","openNode","child","_collapse","TokenTreeEmitter","super","emitter","closeAllNodes","lookahead","anyNumberOfTimes","optional","either","stripOptionsFromArgs","countMatchGroups","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","out","C_NUMBER_RE","BACKSLASH_ESCAPE","begin","relevance","APOS_STRING_MODE","end","illegal","QUOTE_STRING_MODE","COMMENT","modeOptions","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","__proto__","BINARY_NUMBER_RE","END_SAME_AS_BEGIN","resp","_beginMatch","ignoreMatch","IDENT_RE","MATCH_NOTHING_RE","NUMBER_RE","PHRASAL_WORDS_MODE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","UNDERSCORE_IDENT_RE","skipIfHasPrecedingDot","response","scopeClassName","_parent","beginKeywords","__beforeBegin","keywords","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","endsParent","COMMON_KEYWORDS","scoreForKeyword","keyword","providedScore","commonKeyword","seenDeprecations","warn","deprecated","version","MultiClassError","remapScopeNames","regexes","scopeNames","emit","_emit","_multi","MultiClass","beginScope","scopeSugar","_wrap","endScope","skip","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","language","langRe","global","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","terminators","matcherRe","s","matchData","ResumableMultiRegex","rules","multiRegexes","regexIndex","addRule","compile","getMatcher","resumingScanAtSamePosition","m2","considerAll","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","pair","keywordPatternRe","beginRe","endsWithParent","endRe","terminatorEnd","illegalRe","variants","cachedVariants","variant","dependencyOnParent","expandOrCloneMode","mm","rule","buildModeRegex","HTMLInjectionError","escape","inherit","NO_MATCH","HLJS","hljs","languages","aliases","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","highlight","codeOrLanguageName","optionsOrCode","ignoreIllegals","code","context","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","buf","matchText","keywordRelevance","cssClass","emitKeyword","processBuffer","subLanguage","continuations","highlightAuto","__addSublanguage","_emitter","processSubLanguage","startScope","emitMultiClass","klass","startNewMode","doIgnore","lexeme","resumeScanAtSamePosition","doEndMatch","matchPlusRemainder","endMode","endOfMode","matched","lastMatch","processLexeme","textBeforeMatch","badRule","newMode","beforeCallbacks","doBeginMatch","processed","getLanguage","md","current","processContinuations","__emitTokens","processedCount","finalize","toHTML","_top","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","results","autoDetection","sorted","supersetOf","best","secondBest","highlightElement","_class","blockLanguage","currentLang","resultLang","updateClassName","wantsHighlight","highlightAll","readyState","registerAliases","aliasList","alias","lang","plugin","highlightBlock","configure","userOptions","initHighlighting","initHighlightingOnLoad","registerLanguage","languageDefinition","error$1","rawDefinition","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","removePlugin","debugMode","safeMode","versionString","newInstance","HighlightJS","GlLoadingIcon","UserAvatarImage","loading","participants","numberOfLessParticipants","showParticipantLabel","isShowingMoreParticipants","lessParticipants","visibleParticipants","hasMoreParticipants","toggleLabel","label","sprintf","moreCount","participantLabel","participantCount","toggleMoreParticipants","getParticipantId","participantId","getIdFromGraphQLId","participant","isItem","_item$text","itemValidator","group","hasOnlyListItemsVue2","defaultSlot","tags","vNode","_vNode$componentOptio","componentOptions","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","_vNode$type","isValidSlotTagVue3","hasOnlyListItems","MAX_LENGTH","CHAR_BACKSLASH","CHAR_BACKTICK","CHAR_COMMA","CHAR_DOT","CHAR_LEFT_PARENTHESES","CHAR_RIGHT_PARENTHESES","CHAR_LEFT_CURLY_BRACE","CHAR_RIGHT_CURLY_BRACE","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_DOUBLE_QUOTE","CHAR_SINGLE_QUOTE","CHAR_NO_BREAK_SPACE","CHAR_ZERO_WIDTH_NOBREAK_SPACE","SyntaxError","ast","brackets","advance","siblings","keepQuotes","keepEscaping","isOpen","isClose","HEALTH_STATUS_I18N_ASSIGN_HEALTH_STATUS","HEALTH_STATUS_I18N_NO_STATUS","HEALTH_STATUS_I18N_SELECT_HEALTH_STATUS","healthStatusDropdownOptions","GlCollapsibleListbox","healthStatus","selected","textSrOnly","dropdownText","healthStatusTextMap","$$v","stackedMixin","isStackedAlways","logError","deleted","commitItemIconMap","tempFile","prevPath","modified","SEVERITIES","info","low","medium","high","critical","unknown","mapSeverity","findings","severityInfo","scale","SEVERITIES_SAST","SEVERITIES_CODE_QUALITY","severity","getSeverity","finding","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","fileExtensionIcons","htm","html_vm","asp","jade","pug","markdown","mdown","mkd","mkdn","rst","blink","scss","sass","less","json","yaml","yml","xml","plist","xsd","dtd","xsl","xslt","resx","iml","xquery","tmLanguage","manifest","project","png","jpeg","jpg","gif","svg","ico","tif","tiff","psd","psb","ami","apx","bmp","bpg","brk","dds","dng","exr","fpx","gbr","img","jbig2","jb2","jng","jxr","pbm","pgf","pic","raw","webp","js","cjs","ejs","esx","mjs","jsx","tsx","ini","dlc","dll","conf","properties","toml","prefs","ts","cts","mts","marko","pdf","xlsx","xls","ods","csv","tsv","vscodeignore","vsixmanifest","vsix","suo","sln","csproj","vb","pdb","sql","pks","pkb","accdb","mdb","sqlite","cs","zip","tar","gz","xz","bzip2","gzip","rar","tgz","exe","msi","java","jar","jsp","cc","cpp","cxx","hpp","go","py","sh","ksh","csh","tcsh","zsh","bash","bat","cmd","ps1","psm1","psd1","ps1xml","psc1","pssc","gradle","docx","odt","rtf","cer","cert","crt","pub","pem","asc","gpg","woff","woff2","ttf","eot","suit","otf","bmap","fnt","odttf","ttc","font","fonts","sui","ntf","mrf","lib","bib","rb","erb","fs","fsx","fsi","fsproj","swift","ino","dockerignore","dockerfile","tex","cls","sty","pptx","ppt","pptm","potx","pot","potm","ppsx","ppsm","pps","ppam","ppa","odp","webm","mkv","flv","vob","ogv","ogg","gifv","avi","mov","qt","wmv","yuv","rm","rmvb","mp4","m4v","mpg","mp2","mpeg","mpe","mpv","m2v","vdi","vbox","ics","mp3","flac","m4a","wma","aiff","coffee","txt","graphql","rs","raml","xaml","hs","kt","kts","patch","lua","clj","cljs","groovy","rmd","dart","as","mxml","ahk","swf","swc","cmake","asm","a51","inc","nasm","ms","agc","ags","aea","argus","mitigus","binsource","vue","ml","mli","cmx","lock","hbs","mustache","pl","pm","hx","pp","ex","exs","ls","erl","twig","jl","pure","tpl","styl","rei","cmj","merlin","vhd","sv","svh","nb","wl","wls","njk","nunjucks","robot","sol","au3","haml","yang","tf","tfvars","tfstate","applescript","cake","feature","nim","nimble","apib","apiblueprint","vfl","kl","pcss","sss","todo","cfml","cfc","lucee","cabal","nix","slim","http","rest","rql","restql","kv","graphcool","sbt","cr","cu","cuh","twoFileExtensionIcons","fileNameIcons","makefile","gradlew","COPYING","LICENSE","LICENCE","changelog","CREDITS","procfile","jenkinsfile","Rakefile","browserslist","getIconForFile","messageAdditionsDeletions","noFilesFound","noFileNameAvailable","searchFiles","variantCssColorMap","success","danger","GlDisclosureDropdown","GlIcon","GlSearchBoxByType","changed","added","filteredFiles","fuzzaldrinPlus","dropdownItems","iconColor","messageChanged","focusInput","focusFirstItem","additionsText","numberOfChanges","deletionsText","locals","content","_k","icon","removed","DiffStatsDropdown","normalizeFields","origFields","fields","formatter","processField","sample","k","memo","mixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","primaryKey","itemsMixin","localItems","bvParent","computedFields","paginatedItems","sortedItems","filteredItems","perPage","currentPage","localFilter","localSortBy","sortDesc","localSortDesc","math","apiUrl","watch","newValue","oldValue","computedItems","computedFieldsObj","IssuableBulkUpdateSidebar","initDomElements","initDropdowns","setupBulkUpdateActions","$page","$sidebar","$sidebarInnerContainer","$bulkEditCancelBtn","$bulkEditSubmitBtn","$bulkUpdateEnableBtn","$otherFilters","$checkAllContainer","$issueChecks","$issuesList","$issuableIdsInput","toggleBulkEdit","selectAll","updateFormState","prepForSubmit","issuableEventHub","toggleSubmitButtonDisabled","LabelsSelect","mountMilestoneDropdown","mountMoveIssuesButton","mountStatusDropdown","mountSubscriptionsDropdown","mountAssigneesDropdown","mountConfidentialityDropdown","IS_EE","mountEpicDropdown","mountHealthStatusDropdown","mountIterationDropdown","IssuableBulkUpdateActions","setOriginalDropdownData","noCheckedIssues","updateSelectedIssuableIds","disable","enable","toggleSidebarDisplay","toggleBulkEditButtonDisabled","toggleOtherFiltersDisabled","toggleCheckboxDisplay","getCheckedIssueIds","checkAllButtonState","$checkedIssues","IssuableContext","currentUser","reviewersSelect","UsersSelect","dropdowns","glDropdownInstance","jQueryWrapper","domElement","spinner","realParent","filterInput","$block","$selectbox","bpBreakpoint","setCookie","initBulkUpdateSidebar","prefixId","issuableBulkUpdateActions","initCsvImportExportButtons","showExportButton","showImportButton","issuableType","issuableCount","email","exportCsvPath","importCsvIssuesPath","canEdit","projectImportJiraPath","maxAttachmentSize","CsvImportExportButtons","initIssuableByEmail","GlToast","initialEmail","emailsHelpPagePath","quickActionsHelpPath","markdownHelpPath","resetPath","IssuableByEmail","initIssuableSidebar","sidebarOptions","getSidebarOptions","Sidebar","initialize","fileName","fileMode","folder","submodule","opened","isSymlink","FILE_SYMLINK_MODE","spriteHref","iconName","sprite_file_icons","folderIconName","iconSizeClass","ps","getComputedStyle","getPropertyValue","scroll","overflow","HTMLElement","SVGElement","scrollingElement","isObjectLike","lineToMarkersInfo","lineNum","markLineInfo","_stepNumbersArr$map$j","stepNumberSpan","stepNumberSpanNone","wrappedLine","stepNumbersArr","markLine","stepNumber","stepNumbers","startLine","textSpanMarkerIdPrefix","inlineItemMark","contentStartIndex","trimStart","textMarkerIdPrefix","inlineSectionMarker","markLinesWithDiv","BlobFilepath","VulnerabilityFileContentViewer","GlAlert","WebIdeLink","hlInfo","blobInfo","filePath","branchRef","selectedStepNumber","loadingError","codeBlocks","linesToMarker","expanded","highlightedContent","blobContent","userColorScheme","user_color_scheme","totalLines","_this$content","labelToggleFile","collapseIcon","getContent","mergeCodeBlocks","_isEmpty","rawTextBlob","markMultipleLines","highlightContent","res","markResult","newCodeBlocks","updateCodeBlocks","updateLinesToMarker","handleToggleFile","handleExpandLines","blockStartLine","blockEndLine","getExpandedIcon","isEndOfCodeBlock","vulnerabilityNotFound","expandAllLines","editBlobPath","ideEditPath","highlightSectionInfo","highlightInfo","GlPopover","GlCollapse","GlBadge","GlTruncate","description","descriptionHtml","details","rawTextBlobs","_this$details","stepsExpanded","selectedVulnerability","vulnerabilityFlowDetails","groupedItems","fileLocation","fileDescription","getDescription","lineStart","numOfSteps","numOfFiles","stepsHeader","fill","openFileSteps","copyStepsExpanded","getPathIcon","lastIndexOf","selectStep","vulnerabilityItem","getNextIndex","isNext","isOutOfRange","calculation","changeSelectedVulnerability","isNextVulnerability","_flattenDeep","showNodeTypePopover","sourceNodeTypePopover","sinkNodeTypePopover","toggleAriaLabel","isVisibleCollapse","codeFlowInfoButton","codeFlowInfoAnswer","steps","vulnerabilityFlow","CodeFlowFileViewer","CodeFlowStepsSection","projectFullPath","insideModal","showCodeFlowFileViewer","highlightSourcesInfo","modalContentHeight","fileNames","_map","codeSourceFiles","updateModalContentHeight","apollo","blobInfoQuery","variables","projectPath","refType","shouldFetchRawText","update","_project$repository","repository","blobs","normalizedCodeFlows","normalizeCodeFlowsInfo","createHighlightSourcesInfo","onSelectedStep","specificBlobInfo","_this$blobInfo$fileNa","$nextTick","_document$querySelect","$apollo","queries","DrawerItem","glFeatureFlagMixin","drawer","insideTab","findingsStatus","SAST_FINDING_DISMISSED","isCodeQuality","codeQuality","showCodeFlowTabs","_this$drawer$details","_codeFlowData$items","codeFlowData","VULNERABILITY_DETAIL_CODE_FLOWS","glFeatures","mrVulnerabilityCodeFlow","concatIdentifierName","identifiers","tool","sast","engine","codeFlowButton","nameWithNamespace","identifier","externalId","engineName","codeQualityFinding","sastFinding","detected","nextButton","previousButton","VULNERABILITY_TAB_NAMES","FindingsDrawerDetails","VulnerabilityCodeFlow","GlDrawer","GlTabs","GlTab","drawerIndex","tabIndex","getDrawerHeaderHeight","getContentWrapperHeight","_this$project","_this$activeElement$d","DRAWER_Z_INDEX","newVal","redirectToCodeFlowTab","modifiers","DETAILS","CODE_FLOW","branchName","treeStart","performanceMarkAndMeasure","mark","treeEnd","measures","start","filesStart","filesEnd","firstFile","diffsApp","instrument","EVT_PERF_MARK_FILE_TREE_START","EVT_PERF_MARK_FILE_TREE_END","EVT_PERF_MARK_DIFF_FILES_START","EVT_PERF_MARK_DIFF_FILES_END","EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN","deinstrument","dismissed","isDismissed","shouldDisplay","expand","EVT_EXPAND_ALL_FILES","CommitItem","extends","iconStateClass","GlDropdown","GlDropdownItem","GlDropdownDivider","TimeAgo","versions","selectedVersionName","_this$versions$find","versionName","CompareDropdownLayout","addDivider","isHead","isBase","short_commit_sha","commitsText","GlAnimatedSidebarIcon","toggleFileTreeVisible","mapGetters","toggleFileBrowserShortcutKey","shouldDisableShortcuts","keysFor","MR_TOGGLE_FILE_BROWSER","toggleFileBrowserTitle","showTreeList","toggleFileBrowserTooltip","sanitize","hasSourceVersions","diffCompareDropdownSourceVersions","nextCommitUrl","next_commit_id","nextCommitShortcutKey","MR_COMMITS_NEXT_COMMIT","nextCommitTitle","nextCommitTooltip","previousCommitUrl","prev_commit_id","previousCommitShortcutKey","MR_COMMITS_PREVIOUS_COMMIT","previousCommitTitle","previousCommitTooltip","hasNeighborCommits","setShowTreeList","moveToNeighboringCommit","direction","diffCompareDropdownTargetVersions","startVersion","latestVersionPath","fileLineCodequality","codequalityData","_codequalityData$file","violation","fileLineSast","sastData","_sastData$added","lineDiff","foundByPipelineIid","clickedToggle","toggleDiscussion","discussionId","toggleText","DraftNote","DesignNotePin","imageDiff","fileHash","showPin","autosaveKey","drafts","draftsForFile","_f$position","draft","imageDiscussionsWithDrafts","IMAGE_DIFF_POSITION_TYPE","NoteableDiscussion","shouldCollapseDiscussions","renderAvatarBadge","helpPagePath","isExpanded","expandedOnDiff","toggleVisibility","toggleFileDiscussion","resolved","START_THREAD","COMMENT_FORM","DiscussionLockedWidget","NoteSignedOutWidget","renderReplyPlaceholder","userCanReply","getNoteableData","_this$currentUser","canCreateNote","current_user","can_create_note","mergeRequest","GlFormSelect","commentLineOptions","_this$lineRange","commentLineStart","commentLineEndType","_this$lineRange2","highlightSelection","destroyed","setSelectedCommentPosition","getSymbol","getLineClasses","updateCommentLineStart","updatedLineRange","NoteForm","MultilineCommentForm","diffLineNoteFormMixin","diffFileHash","showSuggestPopover","notes","selectedCommentPosition","getUserData","formData","formatLineRange","getDiffFileByHash","combineSides","PARALLEL_DIFF_VIEW_TYPE","commentLines","isAdding","noteableTypeUnderscored","diff_head_sha","diffHeadSha","source_project_id","sourceProjectId","capitalizeFirstCharacter","handleCancelCommentForm","ignoreWhilePending","shouldConfirm","isDirty","confirmAction","primaryBtnText","cancelBtnText","cancelCommentForm","clearDraft","handleSaveNote","errorCallback","saveDiffDiscussion","_e$response","errors","errorMessage","SAVING_THE_COMMENT_FAILED","SOMETHING_WENT_WRONG","updateStartLine","DiffDiscussions","DiffLineNoteForm","addToReview","setSuggestPopoverDismissed","DiffDiscussionReply","showCommentForm","showMore","unfoldCount","UNFOLD_COUNT","showAll","isTop","isBottom","lineCountBetween","up","down","all","canExpandUp","canExpandDown","isLineCountSmall","showExpandDown","showExpandUp","getPrevLineNumber","_this$file$INLINE_DIF","callLoadMoreLines","loadMoreLines","context_lines_path","expandOptions","handleExpandUpLines","handleExpandDownLines","handleExpandAllLines","since","unfold","prevLineNumber","metaOldPos","metaNewPos","EXPAND_DOWN","EXPAND_UP","compatFunctionalMixin","$props","listeners","allDiscussions","notesInGutter","COUNT_OF_AVATARS_IN_GUTTER","moreText","getTooltipText","noteData","LENGTH_OF_AVATAR_TOOLTIP","truncate","HIDE_COMMENTS","DiffGutterAvatars","nativeOn","InlineFindingsGutterIconDropdown","coverageLoaded","isFirstHighlightedLine","isLastHighlightedLine","fileLineCoverage","Function","classNameMap","_memoize","_props$line$left","_props$line$right","coverageStateLeft","_props$line$left2","coverageStateRight","_props$line$right2","showCodequalityLeft","_props$line$left3","codequality","_props$line$left4","showCodequalityRight","_props$line$right3","_props$line$right4","showSecurityLeft","_props$line$left5","_props$line$left6","showSecurityRight","_props$line$right5","_props$line$right6","classNameMapCellLeft","_props$line","_props$line2","classNameMapCellRight","_props$line3","_props$line4","shouldRenderCommentButton","interopLeftAttributes","_line$type","interopType","getInteropInlineAttributes","interopRightAttributes","lineContent","DiffExpansionCell","DiffRow","expansion","enterdragging","stopdragging","startdragging","setHighlightedRow","toggleLineDiscussions","toggleCodeQualityFindings","parallel","DiffCommentCell","draftCommentsMixin","IdState","idProp","vm","idState","dragStart","selectedCommentPositionHover","commentedLines","getCommentedLines","hasInlineFindingsChanges","_this$codequalityData","_this$sastData","file_path","onDragOverThrottled","_throttle","onDragOver","leading","showCommentLeft","showCommentRight","onStartDragging","_event$target","onStopDragging","_this$idState$updated","singleLineComment","lineDir","pickDirection","_this$selectedComment","_line$left3","_this$selectedComment2","handleParallelLineMouseDown","lineClass","getCountBetweenIndex","countLinesInBetween","getCodeQualityLine","_line$left4","_line$left5","_line$side","isDraft","lineHasDrafts","commitId","endLine","shouldRenderParallelDraftRow","DiffView","DiffViewer","ImageDiffOverlay","NotDiffableViewer","NoPreviewViewer","DiffFileDrafts","diffMode","diffViewerMode","isTextFile","isWhitespaceOnly","noPreview","notDiffable","not_diffable","diffFileCommentForm","getCommentFormForDiffFile","showNotesContainer","image","mappedLines","CEMapParallel","imageDiscussions","updated","isInlineView","w","new_size","old_size","a_mode","b_mode","renderedWidth","renderedHeight","closeDiffFileCommentForm","avatars","lastNote","DiffFileHeader","DiffContent","DiffFileDiscussionExpansion","reviewed","isFirstFile","isLastFile","canCurrentUserFork","viewDiffsFileByFile","isDiffViewActive","isLoadingCollapsedDiff","hasLoadedCollapsedDiff","forkMessageVisible","hasToggled","DIFF_FILE","genericError","FILE_DIFF_POSITION_TYPE","isLinkedFile","linkedFile","viewBlobHref","view_path","shortSha","getShortShaFromFile","showLoadingIcon","hasDiff","_diffFile$highlighted","highlighted_diff_lines","hasInlineLines","_diffFile$parallel_di","hasParallelLines","isFileTooLarge","manuallyCollapsed","diffViewerErrors","too_large","error_message","forkMessage","editInFork","tag_start","tag_end","hasBodyClasses","domParts","header","contentByHash","showBody","automaticallyCollapsed","collapsedType","DIFF_FILE_AUTOMATIC_COLLAPSE","DIFF_FILE_MANUAL_COLLAPSE","forcedOpen","forceOpen","isCollapsed","showWarning","expandableWarning","_this$file$viewer","generated","autoCollapsedGenerated","autoCollapsed","showContent","showLocalFileReviews","_this$file$viewer3","_this$file$viewer2","fileDiscussions","showFileDiscussions","_this$file$viewer4","_this$file$drafts","fileId","isFileDiscussionsExpanded","handler","manageViewedEffects","newHash","oldHash","singleFileFileByFile","requestDiff","notesEventHub","expandAllListener","postRender","prefetchFileNeighbors","beforeDestroy","handleFileCommentCancel","toggleFileCommentForm","handleToggle","eventsForThisFile","viaUserInteraction","_this$file","collapsingNow","contentElement","setFileCollapsedByUser","isElementStuck","duration","expandable","loadCollapsedDiff","assignDiscussionsToDiff","getDiffFileDiscussions","timeout","showForkMessage","hideForkMessage","handleSaveDraftNote","toggleFileDiscussionVisibility","warningClasses","CONFLICT_TEXT","generatedDiffFileDocsPath","anchor","conflict_type","isVirtualScrollingEnabled","canMerge","conflictResolutionPath","fork_path","fork","cancel","tooLarge","blobView","plainDiff","emailPatch","total","visible","plainDiffPath","emailPatchPath","buttonText","GlEmptyState","changesEmptyStateIllustration","selectedSourceVersion","sourceName","isLatestVersion","source_branch","selectedTargetVersion","targetName","version_index","target_branch","new_blob_path","scrollToIndex","vscrollParent","itemsWithSize","$_itemsWithSizeWatcher","$watch","immediate","scrollToItem","handleLocationHash","addedLines","removedLines","FileRow","FileRowStats","ChangedFileIcon","hideFileStats","viewedFiles","showFileRowStats","fileClasses","itemsCount","scrollerHeight","rowHeight","reviewBarHeight","scrollY","isNarrowScreen","mediaQueryMatch","reviewBarEnabled","draftsCount","debouncedHeightCalc","_debounce","calculateScrollerHeight","debouncedRecordScroll","recordScroll","reviewBarRendered","rendered","computedStyles","scrollRoot","largeBreakpointSize","matchMedia","matches","handleMediaMatch","passive","onTabChange","maxHeight","contentTop","reviewBarOffset","MODIFIER_KEY","getModifierKey","TreeListHeight","DiffFileRow","RecycleScroller","filteredTreeList","renderTreeList","tree","allBlobs","searchSplit","t","micromatch","flatFilteredTreeList","createFlatten","level","hidden","isHeader","isHidden","flatListWithLinkedFile","linkedFileIndex","linkedFileItem","parentPath","linked","hasContainingFolder","hasSibling","treeList","scrollVirtualScrollerToFileHash","openFileTree","_this$$refs$scroller$","_this$$refs$scroller","scroller","part","setTreeOpen","searchPlaceholder","TreeList","realSize","setRenderTreeList","viewedDiffFileIds","toggleTreeOpen","goToFile","PanelResizer","minTreeWidth","MIN_TREE_WIDTH","maxTreeWidth","treeWidth","TREE_LIST_WIDTH_STORAGE_KEY","INITIAL_TREE_WIDTH","TREE_HIDE_STATS_WIDTH","Mousetrap","unbind","cacheTreeListWidth","createHotkeyHtml","DiffStats","SettingsDropdown","glTooltip","hasChanges","diffsCount","expandButtonInfo","MR_EXPAND_ALL_FILES","collapseButtonInfo","MR_COLLAPSE_ALL_FILES","expandAllFiles","collapseAllFiles","FINDINGS_STATUS_PARSED","FINDINGS_STATUS_ERROR","DiffAppControls","DiffsFileTree","FindingsDrawer","DynamicScroller","DynamicScrollerItem","VirtualScrollerScrollSync","CompareVersions","DiffFile","NoChanges","HiddenFilesWarning","CollapsedFilesWarning","CommitWidget","GlPagination","InternalEvents","alerts","ALERT_OVERFLOW_HIDDEN","ALERT_MERGE_CONFLICT","ALERT_COLLAPSED_FILES","endpointCoverage","sastReportAvailable","codequalityReportAvailable","endpointCodequality","shouldShow","linkedFileUrl","diffFilesLength","virtualScrollCurrentIndex","subscribedToVirtualScrollingEvents","autoScrolled","activeProject","hasScannerError","linkedFileStatus","keydownTime","listenersAttached","getMRCodequalityAndSecurityReports","pollInterval","_data$project","_codequalityReportsCo","codequalityReportsComparer","sastReport","stopPolling","fetchScannerFindingsError","report","newErrors","sortFindingsByFile","numTotalFiles","numVisibleFiles","can_fork","can_create_merge_request","renderDiffFiles","flatBlobsList","diffsIncomplete","isFullChangeset","showFileByFileNavigation","currentFileNumber","currentDiffIndex","previousFileNumber","nextFileNumber","visibleWarning","renderOverflowWarning","hasConflicts","whichCollapsedTypes","automatic","fileReviews","reviewStatuses","mrReviews","resourceId","convertToGraphQLId","renderFileTree","hideTooltips","$root","BV_HIDE_TOOLTIP","newCommit","oldCommit","_window","commitChangedAfterRender","isLoading","commitIsDifferent","updateHistory","refetchDiffData","adjustView","newViewFileByFile","refetchMeta","fetchData","subscribeToVirtualScrollingEvents","_window2","TRACKING_FILE_BROWSER_TREE","TRACKING_FILE_BROWSER_LIST","INLINE_DIFF_VIEW_TYPE","TRACKING_DIFF_VIEW_INLINE","TRACKING_DIFF_VIEW_PARALLEL","TRACKING_WHITESPACE_SHOW","TRACKING_WHITESPACE_HIDE","TRACKING_SINGLE_FILE_MODE","TRACKING_MULTIPLE_FILES_MODE","queueRedisHllEvents","verifyCap","handleHashChange","beforeCreate","subscribeToEvents","slowHashHandler","DEFAULT_DEBOUNCE_AND_THROTTLE_MS","$store","prevVal","setDiscussions","unsubscribeFromEvents","removeEventListeners","diffsEventHub","scrollVirtualScrollerToIndex","closeDrawer","setDrawer","$once","rereadNoteHash","handleReviewTracking","autoScroll","EVT_MR_PREPARED","EVT_DISCUSSIONS_ASSIGNED","handleHash","sha1InHash","setFileForcedOpen","getLocationHash","setCurrentFileHash","fetchFileByFile","navigateToDiffFileNumber","navigateToDiffFileIndex","toggleTree","fetchMeta","fetchLinkedFile","setTreeDisplay","fetchDiffFilesMeta","real_size","updateChangesTabCount","fetchDiffFilesBatch","fetchCoverageFiles","isNotesFetched","startTaskList","scrollVirtualScrollerToDiffNote","setEventListeners","MR_PREVIOUS_FILE_IN_DIFF","jumpToFile","MR_NEXT_FILE_IN_DIFF","handleBrowserFindActivation","delta","disableVirtualScroller","api","trackRedisHllUserEvent","trackRedisCounterEvent","targetIndex","storedTreeShow","MR_TREE_SHOW_KEY","isDesktop","isBatchLoading","saving","_window3","diff_file","reloadPage","types","noteFormStartReview","noteFormAddToReview","trackEvent","fileTreeToggled","toggleTreeList","toggleFileByFile","setFileByFile","fileByFile","toggleWhitespace","updatedSetting","setShowWhitespace","howToMergeDocsPath","activeDrawer","isTreeLoaded","setDiffViewType","isBatchLoadingError","retrievingBatches","initDiffsApp","notesStore","newCommentTemplatePaths","DiffsApp","currentUserData","dismissEndpoint","showWhitespaceDefault","activeTab","treeListStored","TREE_LIST_STORAGE_KEY","trackClick","DIFF_WHITESPACE_COOKIE_NAME","hideWhitespace","endpointUpdateUser","removeCookie","updateDatabase","cleanLeadingSeparator","fileFinderEl","FindFile","fileFinderVisible","oldVal","openFile","scrollToFile","showDiffStats","clearSearchOnClose","toggleFileFinder","win32","platform","REGEX_BACKSLASH","REGEX_REMOVE_BACKSLASH","REGEX_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_GLOBAL","hasRegexChars","isRegexChar","escapeRegex","removeBackslashes","supportsLookbehinds","segs","windows","sep","escapeLast","char","lastIdx","removePrefix","wrapOutput","_uniqueId","modalId","tooltipContainer","category","modalDomId","clipboard","ClipboardJS","clearSelection","placement","baseSlice","isIterateeCall","toInteger","nativeCeil","nativeMax","guard","resIndex","importableTypeText","TYPE_ACTIVITY","TYPE_COMMENT","TYPE_DESIGN","TYPE_EPIC","TYPE_ISSUE","TYPE_SNIPPET","importableType","textOnly","importable","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","hasNormalizedSlot","headVariant","columns","renderThead","renderTFootCustom","MAX_WINDOW_HEIGHT_COMPACT","MAX_TITLE_LENGTH","MAX_BODY_LENGTH","SIDEBAR_INIT_WIDTH","SIDEBAR_MIN_WIDTH","SIDEBAR_NAV_WIDTH","FILE_VIEW_MODE_EDITOR","FILE_VIEW_MODE_PREVIEW","PERMISSION_CREATE_MR","PERMISSION_READ_MR","PERMISSION_PUSH_CODE","PUSH_RULE_REJECT_UNSIGNED_COMMITS","DEFAULT_PERMISSIONS","viewerTypes","mr","edit","new","renamed","stored_externally","leftSidebarViews","review","rightSidebarViews","pipelines","keepAlive","jobsDetail","mergeRequestInfo","terminal","stageKeys","unstaged","staged","modalTypes","rename","blob","commitActionTypes","SIDE_LEFT","SIDE_RIGHT","MAX_MR_FILES_AUTO_OPEN","DEFAULT_BRANCH","GITLAB_WEB_IDE_FEEDBACK_ISSUE","IDE_ELEMENT_ID","IDE_PATH","WEB_IDE_OAUTH_CALLBACK_URL_PATH","POSIX_CHARS","DOT_LITERAL","PLUS_LITERAL","QMARK_LITERAL","SLASH_LITERAL","ONE_CHAR","QMARK","END_ANCHOR","DOTS_SLASH","NO_DOT","NO_DOTS","NO_DOT_SLASH","NO_DOTS_SLASH","QMARK_NO_DOT","STAR","START_ANCHOR","WINDOWS_CHARS","POSIX_REGEX_SOURCE","alnum","alpha","ascii","blank","cntrl","digit","graph","print","punct","space","xdigit","REGEX_NON_SPECIAL_CHARS","REGEX_SPECIAL_CHARS_BACKREF","REPLACEMENTS","CHAR_0","CHAR_9","CHAR_UPPERCASE_A","CHAR_LOWERCASE_A","CHAR_UPPERCASE_Z","CHAR_LOWERCASE_Z","CHAR_ASTERISK","CHAR_AMPERSAND","CHAR_AT","CHAR_BACKWARD_SLASH","CHAR_CARRIAGE_RETURN","CHAR_CIRCUMFLEX_ACCENT","CHAR_COLON","CHAR_EQUAL","CHAR_EXCLAMATION_MARK","CHAR_FORM_FEED","CHAR_FORWARD_SLASH","CHAR_GRAVE_ACCENT","CHAR_HASH","CHAR_HYPHEN_MINUS","CHAR_LEFT_ANGLE_BRACKET","CHAR_LINE_FEED","CHAR_PERCENT","CHAR_PLUS","CHAR_QUESTION_MARK","CHAR_RIGHT_ANGLE_BRACKET","CHAR_SEMICOLON","CHAR_SPACE","CHAR_TAB","CHAR_UNDERSCORE","CHAR_VERTICAL_LINE","SEP","extglobChars","chars","globChars","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","baseAssignValue","createAggregator","groupBy","DROPDOWN_SELECTOR","ITEM_SELECTOR","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","GlBaseDropdown","GlDisclosureDropdownItem","GlDisclosureDropdownGroup","validator","primary","toggleId","noCaret","toggleAriaLabelledBy","listAriaLabelledBy","dropdownOffset","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","disclosureId","nextFocusedItemIndex","_this$items","$slots","baseDropdown","elements","getFocusableListItemElements","stop","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","currentIndex","nextIndex","_elements$index","closeAndFocus","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","onShow","onHide","onBeforeClose","onKeydown","disclosureTag","handleAction","groupItem","CodeBlock","linesNumbers","currentLineNumber","sourceCodeLines","markdownBlobData","scrollToSpecificCodeFlow","lineNumberId","numMarkerIdPrefix","unselectedInlineNumberMarkClassName","unselectedInlineNumberMark","none","HEALTH_STATUS_I18N_FETCH_ERROR","HEALTH_STATUS_I18N_HEALTH_STATUS","HEALTH_STATUS_I18N_NONE","HEALTH_STATUS_I18N_UPDATE_ERROR","HEALTH_STATUS_OPEN_DROPDOWN_DELAY","HEALTH_STATUS_AT_RISK","HEALTH_STATUS_NEEDS_ATTENTION","HEALTH_STATUS_ON_TRACK","healthStatusVariantMap","healthStatusIconMap","healthStatusColorMap","healthStatusForRestApi","NO_STATUS","healthStatusTracking","Tracking","editEvent","rightSidebarLabel","property","iterationSelectTextMap","noIteration","assignIteration","iterationSelectFail","currentIterationFetchError","iterationsFetchError","noIterationsFound","noAttributeId","noEpic","placeholderEpic","SIDEBAR_ESCALATION_POLICY_TITLE","MAX_DISPLAY_WEIGHT","CVE_ID_REQUEST_SIDEBAR_I18N","createRequest","whyRequest","whyText1","whyText2","learnMore","IssuableAttributeType","IssuableAttributeTypeFoss","Iteration","Epic","EscalationPolicy","Parent","LocalizedIssuableAttributeType","LocalizedIssuableAttributeTypeFoss","IssuableAttributeTypeKeyMap","_invert","IssuableAttributeState","IssuableAttributeStateFoss","dropdowni18nText","issuableAttribute","noAttributesFound","dropdowni18nTextFoss","i18nHelpText","linkText","i18nPolicyText","paged","i18nStatusHeaderText","STOPS_PAGING","STATUS_SUBTEXTS","STATUS_TRIGGERED","STATUS_ACKNOWLEDGED","STATUS_RESOLVED","resolveDiscussion","resolvedStatusMessage","discussionResolved","isDiscussionResolved","discussion_id","discussionToBeResolved","resolve_discussion","showStaysResolved","componentClasses","resolveButtonTitle","resolvedBy","fileSize","fileSizeReadable","numberToHumanSize","storageKey","asString","persist","saveValue","serialize","removeItem","exists","getStorageValue","deserialize","_isString","_this$$scopedSlots$de","_this$$scopedSlots","$diffFile","userCanCreateNote","isParallelView","showButton","hideButton","buttonParentElement","getButtonParent","validateButtonParent","nextElementSibling","hoveredElement","previousElementSibling","viewModes","ImageFile","_defineProperty","wrap","availWidth","requestImageInfo","swipe","maxWidth","prepareFrames","$swipeFrame","$swipeWrap","$swipeBar","wrapPadding","initDraggable","dragTrackWidth","$frame","$frameAdded","$track","$dragger","framePadding","opacity","initViewModes","initView","viewMode","activateViewMode","views","padding","dragging","$body","$offsetEl","dragStop","dragMove","pageX","touches","frame","domImg","complete","naturalWidth","naturalHeight","createImageBadge","classNames","buttonEl","addCommentIndicator","containerEl","spriteIcon","defaultMeta","ImageBadge","actual","browser","imageEl","imageDiffHelper","resizeCoordinatesToImageElement","commentIndicatorHelper","removeCommentIndicator","imageFrameEl","commentIndicatorEl","willRemove","showCommentIndicator","coordinate","commentIndicatorOnClick","addImageBadge","badgeText","addImageCommentBadge","addAvatarBadge","badgeNumber","avatarBadgeEl","setPositionDataAttribute","positionObject","updateDiscussionAvatarBadgeNumber","discussionEl","newBadgeNumber","updateDiscussionBadgeNumber","toggleCollapsed","discussionNotesEl","formEl","imageWidth","imageHeight","widthRatio","heightRatio","round","generateBadgeFromDiscussionDOM","firstNoteEl","getTargetSelection","offsetX","offsetY","actualWidth","actualHeight","normalizedX","normalizedY","ImageDiff","renderCommentBadge","$noteContainer","imageBadges","imageClickedWrapper","imageClicked","imageBlurredWrapper","addBadgeWrapper","addBadge","removeBadgeWrapper","removeBadge","renderBadgesWrapper","renderBadges","customEvent","renderBadge","imageBadge","numberBadgeOptions","indexToRemove","imageBadgeEls","badge","updatedBadgeNumber","viewTypes","TWO_UP","SWIPE","ONION_SKIN","ReplacedImageDiff","defaultViewType","imageFrameEls","viewModesEl","viewModesEls","currentView","generateImageEls","imageEls","viewType","changeToViewTwoUp","changeView","changeToViewSwipe","changeToViewOnionSkin","newView","validate","indicator","renderNewView","normalizedIndicator","initImageDiff","fileEl","WRAPPER","LOADING_HTML","outerHTML","ERROR_HTML","COLLAPSED_HTML","renderVueComponentForLegacyJS","SingleFileDiff","toggleDiff","$chevronRightIcon","$chevronDownIcon","diffForPath","collapsedContent","loadingContent","hasError","getContentHTML","$file","FilesCommentButton","initImageDiffHelper","isBound","attributes","toArray","formatElementToObject","_merge","rawButton","renderedButton","renderedViewer","rawViewer","isLocked","handleClickUnfold","handleClickLineNum","handleParallelLineDown","$e","viewTypeSwitch","highlightSelectedLine","openAnchoredDiff","prepareRenderedDiff","prevNewLine","link","replaceWith","locationHash","anchoredDiff","clickTarget","originalEvent","diffSource","$diffFiles","allElements","elementsForRenderedDiff","fileElements","entries","onclick","showRawViewer","showRenderedViewer","arrayReduce","deburr","words","reApos","sendEmail","GlModal","GlFormInputGroup","HelpIcon","GlModalDirective","issuableName","mailToLink","subject","new_address","newAddress","$toast","cancelHandler","modal","resetIncomingEmailToken","issues","getElement","$labelDropdown","willUpdateLabels","onFormSubmit","getFormDataAsObject","onFormSubmitFailure","assigneeIds","state_event","milestone_id","issuable_ids","subscription_event","health_status","epic_id","sprint_id","add_label_ids","remove_label_ids","confidential","assignee_ids","$labelSelect","userCheckedIds","userUncheckedIds","checkedIdsToShow","_difference","_union","getOriginalCommonIds","indeterminateIdsToShow","getOriginalIndeterminateIds","labelIds","_intersection","uniqueIds","issuableLabels","labelId","scopeEl","locked","displayText","unlocked","Outside","isEditable","issue","issueCapitalized","mergeRequestCapitalized","lockingMergeRequest","unlockingMergeRequest","lockMergeRequest","unlockMergeRequest","lockedMessage","unlockedMessage","isLockDialogOpen","isIssuable","issuableDisplayName","issuableDisplayNameCapitalized","discussion_locked","lockStatus","lockToggleInProgressText","unlockingMergeRequestText","lockingMergeRequestText","lockToggleText","unlockMergeRequestText","lockMergeRequestText","lockedMessageText","unlockedMessageText","toggleForm","toggleLocked","updateLockedAttribute","alertMessage","closeForm","FileIcon","ClipboardButton","showPath","showAsLink","showBlobSize","blobSize","gfmCopyText","showLfsBadge","storedExternally","externalStorage","linkHref","_this$blob","webPath","diffFileDiscussions","calcPercent","renderedSize","imageDiffMixin","canComment","showCommentIcon","badgeClass","shouldToggleDiscussion","currentCommentForm","_isArray","getImageDimensions","$parent","getPositionForObject","clickedImage","xPercent","yPercent","openDiffFileCommentForm","FEEDBACK_TYPE_ISSUE","FEEDBACK_TYPE_MERGE_REQUEST","REPORT_FILE_TYPES","ARCHIVE","TRACE","METADATA","REPORT_TYPE_SAST","REPORT_TYPE_SAST_IAC","REPORT_TYPE_DAST","REPORT_TYPE_SECRET_DETECTION","REPORT_TYPE_DEPENDENCY_SCANNING","REPORT_TYPE_CONTAINER_SCANNING","REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY","REPORT_TYPE_CLUSTER_IMAGE_SCANNING","REPORT_TYPE_COVERAGE_FUZZING","REPORT_TYPE_API_FUZZING","reportTypeToSecurityReportTypeEnum","timeagoMixin","dateTimeFormat","DEFAULT_DATE_TIME_FORMAT","timeFormat","DATE_TIME_FORMATS","enableTruncation","timeAgo","nodupes","noempty","OPEN_REVERT_MODAL","REVERT_MODAL_ID","OPEN_CHERRY_PICK_MODAL","CHERRY_PICK_MODAL_ID","I18N_MODAL","startMergeRequest","existingBranch","branchInFork","newMergeRequest","actionCancelText","I18N_REVERT_MODAL","branchLabel","actionPrimaryText","I18N_CHERRY_PICK_MODAL","projectLabel","PREPENDED_MODAL_TEXT","I18N_NO_RESULTS_MESSAGE","I18N_PROJECT_HEADER","I18N_PROJECT_SEARCH_PLACEHOLDER","I18N_BRANCH_HEADER","I18N_BRANCH_SEARCH_PLACEHOLDER","PROJECT_BRANCHES_ERROR","resolveHandler","resolvedState","isResolving","isResolved","resolveAsThread","resolve_path","discussionResolvePath","toggleResolveNote","labelField","optionsField","optionsMixin","valueField","textField","htmlField","disabledField","normalizeOptions","BFormSelectOption","functional","BFormSelectOptionGroup","formOptions","ariaInvalid","multiple","selectSize","BFormSelect","localValue","plain","stateClass","selectedValue","_value","computedSelectSize","inputClass","safeId","computedAriaInvalid","change","selectClass","defaultWidth","nonDefaultWidths","breakpoint","slot","itemsLimit","mediator","Mediator","fetch","mountSidebar","fileSymlinkInformation","fileList","duplicates","iteratedFile","includesSymlink","DIFF_FILE_SYMLINK_MODE","DIFF_FILE_DELETED_MODE","isNotDiffable","viewerModes","_file$blob2","additionalProperties","load_collapsed_diff_url","_file$blob","namespace","getDerivedMergeRequestInformation","uuids","seeds","file_identifier_hash","order","_file$viewer2","_file$viewer3","_file$viewer4","truncateSha","fileA","fileB","universal","stats","valid","percent","changeInPercent","findClosestMatchLine","prevLine","lineExists","linkedIssueTypesMap","BLOCKS","IS_BLOCKED_BY","RELATES_TO","linkedIssueTypesTextMap","autoCompleteTextMap","true","emphasisStart","emphasisEnd","TYPE_INCIDENT","false","inputPlaceholderTextMap","inputPlaceholderConfidentialTextMap","relatedIssuesRemoveErrorMap","pathIndeterminateErrorMap","itemAddFailureTypesMap","NOT_FOUND","MAX_NUMBER_OF_CHILD_EPICS","addRelatedIssueErrorMap","addRelatedItemErrorMap","issuableIconMap","PathIdSeparator","Issue","issuablesBlockHeaderTextMap","issuablesBlockHelpTextMap","issuablesBlockAddButtonTextMap","issuablesFormCategoryHeaderTextMap","issuablesFormInputTextMap","baseFlatten","baseDifference","baseRest","isArrayLikeObject","BULK_IMPORT_STATIC_ITEMS","badges","boards","epics","labels","iterations_cadences","members","merge_requests","milestones","namespace_settings","auto_devops","ci_pipelines","container_expiration_policy","design","project_feature","protected_branches","push_rule","service_desk_setting","vulnerabilities","commit_notes","STATISTIC_ITEMS","diff_note","issue_attachment","issue_event","lfs_object","merge_request_attachment","milestone","note_attachment","protected_branch","collaborator","pull_request","pull_request_merged_by","pull_request_review","pull_request_review_request","release","release_attachment","convertObjectPropsToCamelCase","getDayDifference","date1","UTC","date2","getDateInPast","daysInPast","getDateInFuture","daysInFuture","areDatesEqual","displayAsText","textSize","disableTooltip","statusText","statusClass","statusIcon","statusColor","textSizeClass","deburrLetter","basePropertyOf","maxVisible","avatarSize","badgeSrOnlyText","badgeTooltipProp","badgeTooltipMaxChars","hiddenAvatars","16","32","badgeSize","collapsable","badgeTooltipTitle","badgeLabel","baseUniq","union","isProjectArchived","getNoteableDataByProp","archivedProjectDocsPath","lockedIssueDocsPath","finalOptions","installComponents","componentsPrefix","registerComponents","GlobalVue","withBatchComments","_state$batchComments","batchComments","addReplyToReview","noteText","postData","reply_id","draft_note","for_commit","project_id","saveDraft","isReplying","handleClearForm","_response$data","_diffFile$diff_refs","diffFileHeadSha","_this2$line","_response$data2","resetAutoSave","showDraft","replyId","shouldRenderDraftRowInDiscussion","asciiWords","hasUnicodeWord","unicodeWords","backgroundClasses","warning","transform","computedValue","computedMax","renderInfo","innerCssClasses","hasFileSize","hasDimensions","safePath","encodeSaferUrl","resizeThrottled","onImgLoad","calculateImgSize","contentImg","isIE","initCompat","ua","msie","rv","edge","getInternetExplorerVersion","normalizeComponent","template","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","_compiled","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","originalRender","existing","emitOnMount","ignoreWidth","ignoreHeight","_w","emitSize","_resizeObject","onload","addResizeHandlers","removeResizeHandlers","compareAndNotify","defaultView","__vue_render__","tabindex","_withStripped","install","reAsciiWord","waitFor","getEl","interval","sleep","MarkdownField","LocalStorageSync","ContentEditor","setFacade","renderMarkdownPath","uploadsPath","uploads_path","enableContentEditor","formFieldProps","autofocus","enableAutocomplete","autocompleteDataSources","supportsQuickActions","markdownDocsPath","drawioEnabled","disableAttachments","codeSuggestionsConfig","restrictedToolBarItems","restoreFromAutosave","_window$gon","editingMode","text_editor","EDITING_MODE_CONTENT_EDITOR","EDITING_MODE_MARKDOWN_FIELD","EDITING_MODE_KEY","autosaveValue","getDraft","alert","autofocused","isContentEditorActive","contentEditorAutofocused","markdownFieldRestrictedToolBarItems","restrictAttachments","isDefaultEditorEnabled","_window$gon2","_this$setFacade","autofocusTextarea","getValue","setValue","CLEAR_AUTOSAVE_ENTRY_EVENT","updateValue","autosizeTextarea","setTemplate","applyTemplateAlert","primaryButtonText","secondaryButtonText","primaryAction","secondaryAction","updateMarkdownFromContentEditor","updateMarkdownFromMarkdownField","renderMarkdown","render_quick_actions","otherData","onEditingModeChange","notifyEditingModeChange","onEditingModeRestored","componentToFocus","contentEditor","textarea","setEditorAsAutofocused","updateDraft","togglePreview","markdownField","previewMarkdown","Autosize","ctrlKey","metaKey","placeholder","canSuggest","showPopover","_typeof","iterator","_defineProperties","descriptor","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","VisibilityState","vnode","Constructor","_classCallCheck","observer","frozen","createObserver","protoProps","staticProps","destroyObserver","once","throttle","_leading","throttleOptions","delay","lastState","currentArgs","throttled","clearTimeout","_clear","oldResult","IntersectionObserver","intersectingEntry","isIntersecting","intersectionRatio","threshold","intersection","observe","disconnect","_vue_visibilityState","ObserveVisibility","_ref3","deepEqual","val1","val2","directive","unassigned","GlDropdownForm","SidebarParticipant","headerText","allowMultipleAssignees","isEditing","issuableId","issuableAuthor","searchUsers","isSearching","participantsQueries","skipQuery","getStatus","_data$workspace","workspace","issuable","userSearchQueries","searchUsersVariables","_data$workspace2","_user$mergeRequestInt","mergeRequestInteraction","isMergeRequest","TYPENAME_MERGE_REQUEST","_this$participants","filteredParticipants","mergedSearchResults","moveCurrentUserAndAuthorToStart","isSearchEmpty","shouldShowParticipants","isCurrentUserInList","noUsersFound","showCurrentUser","showAuthor","selectedFiltered","foundUsernames","filtered","selectedUserNames","unselectedFiltered","_this$users","selectedIsEmpty","debouncedSearchKeyUpdate","setSearchKey","selectAssignee","clearAndFocusSearch","unassign","unselect","focusSearch","showDropdown","showDivider","sortedUsers","_this5$issuableAuthor","unselectedUser","discussionNavigation","blocksMerge","jumpNext","jumpToNextDiscussion","jumpPrevious","jumpToPreviousDiscussion","allResolved","unresolvedDiscussionsCount","toggleThreadsLabel","allVisibleDiscussionsExpanded","nextUnresolvedDiscussionShortcutKey","MR_NEXT_UNRESOLVED_DISCUSSION","nextUnresolvedDiscussionTitle","nextUnresolvedDiscussionTooltip","previousUnresolvedDiscussionShortcutKey","MR_PREVIOUS_UNRESOLVED_DISCUSSION","previousUnresolvedDiscussionTitle","previousUnresolvedDiscussionTooltip","resolveAllDiscussionsIssuePath","create_issue_to_resolve_discussions_path","threadOptions","toggleAllVisibleDiscussions","extraAttrs","isNotificationsTodosButtons","notificationsTodosButtons","resolvableDiscussionsCount","initMrStateLazyLoad","mrNotes","reviewBarParams","discussionsEl","diffsEl","notesDataset","diffsDataset","endpoints","metadata","endpointMetadata","mrPath","endpointBatch","endpointDiffForPath","updateCurrentUserPath","fileByFileDefault","defaultSuggestionCommitMessage","getReviewsForMergeRequest","DIFF_VIEW_COOKIE_NAME","setupMrNotesState","ReviewBar","canSummarize","fetchDrafts","initReviewBar","discussionsCount","getters","discussionTabCounter","initOverviewTabCounter","DiscussionCounter","initDiscussionCounter","lazyLoadParams","mrShowNode","mrAction","initRevertCommitModal","initCherryPickCommitModal","initMrNotes","$subscribe","titleSubscription","mergeRequestMergeStatusUpdated","titleHtml","GlIntersectionObserver","StatusBadge","ImportedBadge","TodoWidget","SubscriptionsWidget","defaultBranchName","sourceProjectPath","isFluidLayout","isImported","isStickyHeaderVisible","discussionCounter","doneFetchingBatchDiscussions","badgeState","issuableIid","isSignedIn","isForked","sourceBranch","copySourceBranchTooltip","shouldShowTargetCopyButton","setStickyHeaderVisible","visitTab","_window$mrTabs","source_branch_path","target_branch_path","signalBus","apolloClient","createApolloClient","signaler","tabCount","subscriber","subscribe","diffGeneratedSubscription","gid","mergeRequestDiffGenerated","EVT_MR_DIFF_GENERATED","unsubscribe","observeMergeRequestDiffGenerated","currentStatus","getMr","gqlMrId","preparedAt","preparationObservable","preparationSubscriber","mrPreparation","preparationUpdate","_preparationUpdate$da","observeMergeRequestFinishingPreparation","copyReferenceText","reportAbuse","markAsReady","markAsDraft","closing","reopen","reopening","mergeRequestActions","SidebarSubscriptionsWidget","AbuseCategorySelector","reportAbusePath","editUrl","isCurrentUser","defauilt","canUpdateMergeRequest","isMerged","sourceProjectMissing","clipboardText","reportedUserId","isLoadingDraft","isLoadingClipboard","isReportAbuseDrawerOpen","isDropdownVisible","draftLabel","draftState","editItem","showDropdownTooltip","draftAction","closeActionsDropdown","stateAction","updateMergeRequest","target_project_id","copyClipboardAction","reportAbuseAction","mrMoreActionsDropdown","showReopenMergeRequestOption","hideDropdown","initMrExperienceSurvey","_gon$features","mrExperienceSurvey","Tracker","enabled","startMrSurveyApp","tabData","observable","initMrPage","ZenMode","initPipelineCountListener","addShortcutsExtension","ShortcutsIssuable","initSourcegraph","initAwardsApp","initCheckoutModal","imported","getStateQuery","MergeRequestHeader","initialState","copyReferenceButton","initShow","merged","initReportAbuse","MrMoreDropdown","initMrMoreDropdown","startCodeReviewMessaging","changesCountBadge","fileCount","diffStatsSummary","DIFF_TAB_INDEX","diffTab","initSidebarBundle","parsedData","StickyHeader","callbacks","activeEventTypes","lastMousedown","globalListener","eventTypes","onMousedown","OutsideDirective","bindings","modifiersList","parseBinding","eventType","startListening","eventTypesToUnbind","SmartInterval","cfg","startingInterval","maxInterval","hiddenInterval","incrementByFactorOf","lazyStart","immediateExecution","intervalId","currentInterval","pagevisibile","initInterval","triggerCallback","setInterval","getCurrentInterval","incrementInterval","resume","setCurrentInterval","stopTimer","onVisibilityHidden","onVisibilityVisible","onVisibilityChange","onWindowVisibilityChange","initVisibilityChangeHandling","initPageUnloadHandling","handleVisibilityChange","visibilityState","isPageVisible","newInterval","nextInterval","clearInterval","DISCUSSION_SINGLE_DIFF_FAILED","DIFF_FILE_HEADER","optionsDropdownTitle","fileReviewLabel","fileReviewTooltip","SETTINGS_DROPDOWN","whitespace","preferences","both_modified","modified_source_removed_target","modified_target_removed_source","renamed_same_file","removed_source_renamed_target","removed_target_renamed_source","both_added","BUILDING_YOUR_MR","ERROR_LOADING_FULL_DIFF","ERROR_DISMISSING_SUGESTION_POPOVER","ENCODED_FILE_PATHS_TITLE","ENCODED_FILE_PATHS_MESSAGE","copyObject","trackingMixin","TodoButton","GlAnimatedTodoIcon","isClassicSidebar","todoId","todoQueries","currentUserTodos","_data$workspace$issua","_currentUserTodos$","subscribeToMore","subscription","todoIdQuery","todoIdQueryVariables","_this$$apollo$queries","hasTodo","todoMutationType","todoMutationTypes","markDone","tootltipTitle","todoLabel","toggleTodo","mutate","mutation","todoMutations","targetId","todoMutation","queryProps","sourceData","readQuery","produce","writeQuery","track","textClass","BDropdownText","issuableListTabs","STATUS_OPEN","titleTooltip","STATUS_CLOSED","STATUS_ALL","mergeRequestListTabs","STATUS_MERGED","availableSortOptions","sortDirection","descending","ascending","DEFAULT_PAGE_SIZE","DEFAULT_SKELETON_COUNT","PAGE_SIZE_STORAGE_KEY","TABLE_TAG_NAMES","filterEvent","tagName","labelFor","initInviteMembersModal","primaryActionEventName","branch","pushCode","branchCollaboration","branchesEndpoint","createStore","defaultBranch","modalTitle","prependedText","CommitFormModal","openModal","badgePropertiesMap","STATUS_LOCKED","badgeProperties","ROOT_ACTION_EVENT_NAME_SHOW","PROPERTY","getTarget","getTriggerElement","setRole","oldProp","componentUpdated","binding","VBModal","inserted","Ue","Qt","Zt","er","Z","getOwnPropertySymbols","Le","Me","propertyIsEnumerable","Oe","pow","Be","C","T","D","L","E","N","M","z","R","W","O","throw","done","charCodeAt","Int32Array","ae","Uint8Array","ee","F","ze","se","Xe","te","ie","X","q","ce","V","Qe","G","le","A","lt","toDataURL","ne","ue","protocol","Y","implementation","createHTMLDocument","head","ownerDocument","J","fe","createElementNS","setAttributeNS","de","XMLSerializer","serializeToString","encodeURIComponent","ut","toBlob","quality","atob","u","Blob","ft","me","FileReader","onerror","onabort","readAsDataURL","readAsArrayBuffer","dt","U","decoding","src","currentSrc","poster","baseVal","decode","originalSrc","ge","he","we","gt","it","timeEnd","ct","ht","Ge","pe","autoDestruct","g","workerUrl","workerNumber","backgroundColor","maximumCanvasSize","progress","requestInit","bypassingCache","fetchFn","drawImageInterval","onCloneNode","onEmbedNode","onCreateForeignObjectSvg","includeStyleProperties","__CONTEXT__","ownerWindow","dpi","svgStyleElement","ye","svgDefsElement","svgStyles","defaultComputedStyles","workers","S","Worker","onmessage","P","Q","I","onmessageerror","fontFamilies","fontCssTexts","acceptOfImage","requests","drawImageCount","tasks","isEnable","wt","pt","canvas","context2d","getContext","fillStyle","fillRect","yt","drawImage","bt","St","be","sandbox","visibility","write","namespaceURI","Se","getPropertyPriority","Et","Ct","Ee","cloneNode","putImageData","getImageData","xt","et","st","oe","Nt","srcset","crossOrigin","currentTime","It","Ce","Te","rt","nt","currentParentNodeStyle","currentNodeStyle","DOMMatrix","translateSelf","Dt","ve","firstChild","assignedNodes","Pt","Ze","getAttributeNames","scrollWidth","setProperty","At","Rt","scrollHeight","Tt","tt","ot","vt","Ae","Ft","responseType","We","AbortController","abort","signal","cause","H","requestType","imageDom","accept","postMessage","rawUrl","Ne","Ie","ke","Ut","$t","cssText","De","styleSheets","cssRules","Je","Bt","xe","Lt","insertRule","Ye","parentStyleSheet","Mt","Ot","preferredFormat","jt","Re","Wt","Ke","Vt","Pe","Ht","K","B","He","btoa","fromCharCode","Fe","createContext","destroyContext","domToBlob","mt","domToCanvas","domToDataUrl","domToForeignObjectSvg","domToImage","domToJpeg","domToPixel","domToPng","domToSvg","domToWebp","loadMedia","waitUntilLoad","toStringTag","pipelineCount","loadLanguage","languageLoader","loadSubLanguages","rawContent","ROUGE_TO_HLJS_LANGUAGE_MAP","hljsCore","registerPlugins","initHighlightJs","baseDelay","func","wait","FileHeader","fileUrl","truncateMiddle","isTree","isBlob","fileClass","textForTitle","fileRouterUrl","scrollIntoView","hasPathAtCurrentRoute","clickedFile","clickFile","hasUrlAtCurrentRoute","$router","isInit","currentRoute","routePath","escapeFileUrl","BFormRadio","util","toRegexRange","isValidValue","zeros","dash","padStart","toMaxLen","negative","toRange","isNumbers","rangeError","RangeError","invalidRange","strictRanges","fillNumbers","startString","endString","stepString","padded","maxLen","parts","negatives","positives","toSequence","fillLetters","invalidStep","findNoteObjectById","getQuickActionText","executedCommands","AjaxCache","GfmAutoComplete","dataSources","commands","command","commandDescription","prepareDiffLines","gqClient","createGqClient","fetchPolicy","fetchPolicies","NO_CACHE","updateIssueLockMutation","updateMergeRequestLockMutation","discussionLocked","issueSetLocked","mergeRequestSetLocked","expandDiscussion","collapseDiscussion","setNotesData","setNoteableData","setConfidentiality","setUserData","setLastFetchedAt","setInitialNotes","setTargetNoteHash","setNotesFetchedState","toggleAllDiscussions","allDiscussionsExpanded","fetchDiscussions","persistFilter","notes_filter","persist_filter","fetchNotes","isFetching","getFetchDiscussionsConfig","initPolling","isPollingInitialized","getNotesDataByProp","debouncedFetchUpdatedNotes","actionCable","subscriptions","channel","group_id","groupId","noteableId","connected","received","fetchDiscussionsBatch","cursor","_config$params","nextConfig","updateDiscussion","setDiscussionSortDirection","setTimelineView","setSelectedCommentPositionHover","removeNote","isInMRPage","deleteNote","updateNote","updateOrCreateNotes","notesById","base_discussion","currentlyFetchingDiscussions","discussionsPath","promoteCommentToTimelineEvent","addError","addGenericError","promoteTimelineEvent","TYPENAME_NOTE","_data$timelineEventPr","timelineEventPromoteFromNote","captureError","errorObj","replyToDiscussion","createNewNote","removePlaceholderNotes","mutationType","closeIssuable","closePath","reopenIssuable","reopenPath","toggleStateButtonLoading","emitStateChangedEvent","EVENT_ISSUABLE_VUE_APP_CHANGE","isClosed","openState","toggleIssueLocalState","STATUS_REOPENED","saveNote","placeholderText","hasQuickActions","methodToDispatch","noteBody","isSystemNote","quick_actions_status","messages","command_names","commandNames","confidentialWidget","VARIANT_INFO","flashContainer","commands_changes","commandsChanges","emoji_award","emojiAward","spend_time","spendTime","time_estimate","timeEstimate","sidebarTimeTrackingEventHub","setFetchingState","fetchingState","fetchUpdatedNotes","notesPath","lastFetchedAt","getFetchDataParams","_resp$notes","isResolvingDiscussion","last_fetched_at","pollSuccessCallBack","toggleAwardRequest","fetchDiscussionDiffLines","truncated_diff_lines_path","truncated_diff_lines","updateMergeRequestWidget","mrWidgetEventHub","setLoadingState","filterDiscussion","setCommentsDisabled","updateResolvableDiscussionsCounts","submitSuggestion","suggestionId","Api","applySuggestion","_err$response$data","defaultMessage","submitSuggestionBatch","suggestionIds","batchSuggestionsInfo","applySuggestionBatch","suggestionInfo","_err$response$data2","addSuggestionInfoToBatch","removeSuggestionInfoFromBatch","convertToDiscussion","removeConvertedDiscussion","setCurrentDiscussionId","fetchDescriptionVersion","startingVersion","versionId","requestUrl","mergeUrlParams","start_version_id","descriptionVersion","requestDescriptionVersion","receiveDescriptionVersion","receiveDescriptionVersionError","softDeleteDescriptionVersion","requestDeleteDescriptionVersion","receiveDeleteDescriptionVersion","receiveDeleteDescriptionVersionError","updateAssignees","assignees","updateDiscussionPosition","updatedPosition","updateMergeRequestFilters","newFilters","collapseSystemNotes","lastDescriptionSystemNote","lastDescriptionSystemNoteIndex","currentNote","system","DESCRIPTION_TYPE","isDescriptionSystemNote","noteBeggining","noteEnd","descriptionNoteBegin","timeDifferenceMinutes","getTimeDifferenceMinutes","TIME_DIFFERENCE_VALUE","description_version_deleted","start_description_version_id","description_version_id","rootState","discussionsInState","_clone","filters","firstNote","hidingFilters","_filter$systemNoteIco","_filter$noteType","_firstNote$author","_filter$noteText","_firstNote$author2","_firstNote$author3","systemNoteIcons","system_note_icon_name","noteType","bot","individualNote","individual_note","hideActivity","mergeRequestFilters","isTimelineEnabled","transformedToIndividualNotes","getDraftComments","discussionSortOrder","convertedDisscussionIds","targetNoteHash","getNotesData","persistSortOrder","timelineEnabled","getBlockedByIssues","blocked_by_issues","userData","getUserDataByProp","descriptionVersions","canUserAddIncidentTimelineEvents","_state$userData","can_add_timeline_events","Incident","ISSUE_NOTEABLE_TYPE","MERGE_REQUEST_NOTEABLE_TYPE","EPIC_NOTEABLE_TYPE","merge_params","reverseNotes","isLastNote","getCurrentUserLastNote","getDiscussionLastNote","showJumpToNextDiscussion","unresolvedDiscussionsIdsByDiff","unresolvedDiscussionsIdsByDate","resolvedDiscussionsById","allResolvableDiscussions","resolvable","aDate","bDate","allState","authoritativeFiles","authoritativeA","authoritativeB","aLines","bLines","resolvedDiscussionCount","resolvedMap","unresolvedDiscussionsIdsOrdered","diffOrder","isLastUnresolvedDiscussion","idsOrdered","findUnresolvedDiscussionIdNeighbor","diffIds","dateIds","ids","nextUnresolvedDiscussionId","previousUnresolvedDiscussionId","firstUnresolvedDiscussionId","getDiscussion","suggestionsCount","_n$suggestions","suggestions","hasDrafts","rootGetters","getSuggestionsFilePaths","suggestion","_discussion$diff_file","defaultConfig","currentFilter","doesHashExistInUrl","isDiscussion","resolve_with_issue_path","diff_discussion","existingNote","noteObj","comment","isPlaceholderNote","discussionsData","diffData","newDiscussion","oldDiscussion","existingDiscussion","fetchedAt","notesArr","placeholderType","hasEmojiAwardedByCurrentUser","award_emoji","forceExpanded","discussionIds","resolved_at","resolved_by","resolved_by_push","applied","appliable","isApplyingBatch","is_applying_batch","selectedDiscussion","disc","isToggleStateButtonLoading","currentDiscussionId","isLoadingDescriptionVersion","isPromoteCommentToTimelineEventInProgress","createState","ASC","preview_note_path","MR_FILTER_OPTIONS","styleObject","overflowY","a0","DEFAULT_CALLBACKS","KEY_CODE","App","ESC","TAB","ENTER","CTRL","LEFT","UP","RIGHT","DOWN","BACKSPACE","SPACE","beforeSave","Controller","arrayToDefaultHash","flag","subtext","should_startWithSpace","acceptSpaceBar","_a","decodeURI","searchKey","remoteFilter","sorter","atwho_order","tplEval","error1","highlighter","li","regexp","$1","$2","$3","beforeInsert","$li","beforeReposition","afterMatchFailed","currentFlag","controllers","aliasMaps","setupRootElement","listen","createContainer","asRoot","parentWindow","frameElement","atwho","iframeAsRoot","controller","setContextFor","reg","setting","EditableController","TextareaController","isComposing","onKeyup","expectedQueryCBId","getOpt","lastScrollTop","currentScrollTop","shutdown","lookUp","noop","choose","at1","uid","Model","View","callDefault","funcName","default_value","insertContentFor","renderView","catchQuery","_delayLookUp","_lookUp","remaining","previousCallTime","_stopDelayedCall","delayedCallTimeout","_generateQueryCBId","_callback","queryCBId","ctor","__super__","superClass","caretPos","iframeOffset","scaleBottom","insert","startStr","suffix","headPos","_getRange","_setRange","setEndAfter","setStartAfter","setEndBefore","setStartBefore","_clearRange","ctrl_a_pressed","_movingEvent","which","_unwrap","unwrap","nodeValue","$inserted","$query","_range","lastNode","query_content","startContainer","contents","last","ELEMENT_NODE","startOffset","cloneContents","TEXT_NODE","previousSibling","empty","surroundContents","getClientRects","overrides","suffixNode","storage","saved","_remoteFilter","save","load","_load","$elUl","timeoutID","bindEvent","header_tpl","lastCoordX","lastCoordY","$cur","clientX","clientY","expr","stopShowing","overflowOffset","nextEl","prevEl","$ul","isSelecting","setIframe","run","_args","displayTpl","insertTpl","headerTpl","functionOverrides","hideWithoutSuffix","startWithSpace","highlightFirst","minLen","displayTimeout","spaceSelectsMatch","tabSelectsMatch","editableAtwhoQueryAttrs","scrollDuration","suspendOnComposing","lookUpOnClick","noResultsMessage","branchHeaderTitle","branchSearchPlaceholder","searchTerm","listboxItems","selectedItem","transformedList","joinedBranches","fetchBranches","selectBranch","debouncedSearch","searchTermChanged","projectHeaderTitle","projectSearchPlaceholder","filterTerm","filteredResults","lowerCasedFilterTerm","sortedProjects","selectedProject","targetProjectId","selectProject","BranchesDropdown","ProjectsDropdown","GlForm","GlFormGroup","isCherryPick","actionPrimary","actionCancel","BV_SHOW_MODAL","handlePrimary","resetModalHandler","clearModal","setSelectedBranch","csrf","token","targetProjectName","setSelectedProject","setBranch","MarkdownEditor","CommentFieldLayout","CommentTemperature","issuableStateMixin","glAbilitiesMixin","saveButtonTitle","updatedNoteBody","conflictWhileEditing","isSubmitting","isMeasuringCommentTemperature","isUnresolving","onSaveHandler","isSubmittingWithKeydown","bodyPlaceholder","_gl$GfmAutoComplete","showBatchCommentsActions","showResolveDiscussionToggle","_this$discussion","_this$discussion2","_n$current_user","can_resolve_discussion","noteHash","diffParams","markdownPreviewPath","notable","previewSuggestions","preview_suggestions","isInternalNote","discussionNote","internal","can_receive_suggestion","changedCommentText","shouldDisableField","shouldMeasureNoteTemperature","isSlashCommand","glAbilities","measureCommentTemperature","updatePlaceholder","shouldToggleResolved","beforeSubmitDiscussionState","newResolvedState","editMyLastNote","lastNoteInDiscussion","_this$$refs$markdownE","markdownEditor","_this$discussionNote","bodyPlaceholderInternal","handleKeySubmit","forceUpdate","handleAddToReview","handleUpdate","runCommentTemperatureMeasurement","commentTemperature","shouldMeasureTemperature","trackSavedUsingEditor","editNoteForm","clickType","shouldResolve","hasEmailParticipants","_this$getNoteableData","issue_email_participants","shiftKey","altKey","expired","GlDropdownText","issuableAttributesQueries","issuableAttributesState","widgetTitleText","Milestone","attrWorkspacePath","currentAttribute","workspaceType","WORKSPACE_PROJECT","WORKSPACE_GROUP","showWorkItemEpics","attributesList","isEpic","issuableAttributeQuery","defaultEpicSort","WORK_ITEM_TYPE_ENUM_EPIC","epicIidPattern","iidStartsWith","groups","in","_data$workspace$attri","listFetchError","debounce","attributeTypeTitle","_this$currentAttribut","emptyPropsList","localizedAttribute","formatIssuableAttribute","kebab","_kebabCase","snake","_snakeCase","isAttributeChecked","attributeId","_this$currentAttribut2","_this$currentAttribut3","isAttributeOverdue","attribute","handleShow","setFocus","_this$$refs","updateAttribute","assignAttribute","noAttribute","attrItem","toNounSeriesText","onlyCommas","nextItem","lastItem","firstItem","step1","help","step2","step3","step4","tip","isFork","targetBranch","sourceProjectDefaultUrl","reviewingDocsPath","resolveConflictsFromCli","mergeInfo1","escapedOriginBranch","escapeShellString","escapedSourceBranch","escapedForkBranch","mergeInfo2","escapedForkPushBranch","modalEl","MrWidgetHowToMergeModal","CommitPipelineService","CiIcon","ciStatus","statusTitle","hasCiStatus","service","poll","successCallback","Poll","resource","Visibility","fetchPipelineCommitData","makeRequest","restart","NoteableNote","draftCommands","references","autosaveDraftKey","scrollToDraft","mapMutations","setDraftEditing","publishNow","publishSingleDraft","handleEditing","draftId","handleNotEditing","handleMouseEnter","handleMouseLeave","deleteDraft","toggleResolveDiscussion","baseForOwn","setter","accumulator","setToArray","createSet","TooltipOnTruncate","iconSize","iconOnly","HTTP_STATUS_ABORTED","HTTP_STATUS_OK","HTTP_STATUS_CREATED","HTTP_STATUS_NO_CONTENT","HTTP_STATUS_BAD_REQUEST","HTTP_STATUS_UNAUTHORIZED","HTTP_STATUS_FORBIDDEN","HTTP_STATUS_NOT_FOUND","HTTP_STATUS_CONFLICT","HTTP_STATUS_GONE","HTTP_STATUS_PAYLOAD_TOO_LARGE","HTTP_STATUS_UNPROCESSABLE_ENTITY","HTTP_STATUS_TOO_MANY_REQUESTS","HTTP_STATUS_INTERNAL_SERVER_ERROR","successCodes","HealthStatusDropdown","SidebarEditableItem","IssueHealthStatus","isUpdating","healthStatusQueries","canUpdate","_this$issuable","healthStatusText","healthStatusTooltip","_this$issuable2","_this$issuable3","editable","updateHealthStatus","updateIssue","GENERIC_UNSUBMITTABLE_NETWORK","wiki","internalComment","startThread","startInternalThread","epic","internalVisibility","discussionThatNeedsResolution","internalDiscussionThatNeedsResolution","internalDiscussion","actionButtonWithNote","actionButton","withNote","withoutNote","submitButton","commentHelp","internalCommentHelp","addToReviewButton","saveThread","saveComment","startReview","addCommentNow","addThreadNow","EDITED_TEXT","actionWithAuthor","actionWithoutAuthor","UPDATE_COMMENT_FORM","defaultError","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","colgroupMixin","$colgroup","bytesToMiB","BYTES_IN_KIB","bytesToGiB","numberToHumanSizeSplit","digits","locale","digitsOptions","minimumFractionDigits","maximumFractionDigits","formatNumberWithLocaleAndDigits","formatNumber","humanSize","numberToMetricPrefix","uppercase","THOUSAND","MILLION","median","middle","firstY","lastY","formattedChangeInPercent","nonFiniteResult","isNumeric","numberRegex","isPositiveInteger","countFloatingPointDigits","decimal","integer","splitDecimalNumber","baseToString","castSlice","stringSize","stringToArray","reFlags","omission","separator","strLength","strSymbols","newEnd","trackToggleTimelineView","marked","markedBidi","rawMarkdown","markdownConfig","createNoteErrorMessages","_data$quick_actions_s","error_messages","updateNoteErrorMessage","trimmedMessage","BThead","isThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","isFoot","stopIfBusy","isSortable","hasHeadClickListener","hasListener","selectAllRows","clearSelected","$cells","colIndex","labelHtml","stickyColumn","headerTitle","headClicked","keydown","sortAttrs","sortTheadThAttrs","sortClass","sortTheadThClasses","sortLabel","sortTheadThLabel","thStyle","sortable","headerAbbr","getThValues","thAttr","slotNames","column","$content","$srLabel","$trs","keyField","simpleArray","eventHubFactory","later","callNow","remain","rtag","wtag","wclass","wstyle","pagemode","scrollelement","variable","bench","totop","tobottom","onscroll","istable","itemcount","itemprops","changeProp","itemModeForceRender","newScrollelement","oldScrollelement","removeScrollListener","addScrollListener","keeps","offsetAll","paddingBottom","varCache","varAverSize","varLastCalcIndex","getZone","setScrollTop","getVarOffset","beforeUpdate","calcstart","zone","isLast","forceRender","scrollHandler","onScroll","vsl","scrollelementRect","_elemRect","updateZone","param","overs","getVarOvers","shouldRenderNextZone","lastStart","$forceUpdate","middleOffset","nocache","getVarSize","$children","shm","getVarPaddingTop","getVarPaddingBottom","getVarAllHeight","updateVariable","allHeight","slots","hasPadding","renders","dbc","_this$delta","renderList","shortcuts","branchInMemoryButton","branchClipboardInstance","refInMemoryButton","refClipboardInstance","addAll","ISSUE_MR_CHANGE_ASSIGNEE","openSidebarDropdown","ISSUE_MR_CHANGE_MILESTONE","ISSUABLE_CHANGE_LABEL","ISSUABLE_EDIT_DESCRIPTION","editIssue","MR_COPY_SOURCE_BRANCH_NAME","copyBranchName","ISSUABLE_COPY_REF","copyIssuableRef","openDropdown","DEBOUNCE_DROPDOWN_DELAY","button","refButton","copiedRef","actionText","showSpinner","noteUrl","emailParticipant","isUsernameLinkHovered","authorHref","noteTimestampLink","isGid","hasAuthor","isServiceDeskEmailParticipant","authorLinkClasses","hover","internalNoteTooltip","updateTargetNoteHash","handleUsernameMouseEnter","authorNameLink","Event","handleUsernameMouseLeave","fromEntries","bsl","pascal","jinja","docker","batchfile","hylang","common_lisp","hlsl","make","objective_c","python3","shell","viml","EVENT_ACTION","EVENT_LABEL_VIEWER","EVENT_LABEL_FALLBACK","LINES_PER_CHUNK","NEWLINE","BIDI_CHARS","BIDI_CHARS_CLASS_LIST","BIDI_CHAR_TOOLTIP","LEGACY_FALLBACKS","CODEOWNERS_FILE_NAME","isCommon","valuesLength","valuesIndex","elementMap","onOpenButtonClick","onCancelButtonClick","showSuggestionSection","forkPath","hideSuggestionSection","stableSort","compareFn","sourcegraph","assetsUrl","scriptPath","SOURCEGRAPH_ASSETS_URL","SOURCEGRAPH_URL","SOURCEGRAPH_INTEGRATION","defer","loadScript","noteableTypeText","Task","KeyResult","Objective","isConfidential","lockedNoteableDocsPath","confidentialNoteableDocsPath","warningIcon","isLockedAndConfidential","confidentialContextText","lockedContextText","emails","moreParticipantsAvailable","moreLabel","showMoreParticipants","ATTACHMENT_REGEXP","attachmentWarning","confidentialAttachmentWarning","EmailParticipantsWarning","NoteableWarning","withAlertContainer","containsLink","hasWarningAbove","hasWarningBelow","showConfidentialAttachmentWarning","showAttachmentWarning","showEmailParticipantsWarning","emailParticipants","_this$noteableData$is","locked_discussion_docs_path","confidential_issues_docs_path","hideTextInSmallScreens","confidentialTooltip","confidentialityInfoText","confidentialTextClass","queue","stash","enclose","rangeLimit","ARROW_DOWN","ARROW_UP","END","HOME","POSITION_ABSOLUTE","POSITION_FIXED","differenceWith","CHAR_DOLLAR","GlFormRadioGroup","reportedFromUrl","showDrawer","symbolProto","symbolValueOf","symbol","isInactive","isOnImage","isNewNote","pinLabel","inactive","small","baseFindIndex","baseIteratee","predicate","fromIndex","updateStatus","ConfidentialityBadge","LockedBadge","HiddenBadge","fetchState","normalizeArray","allowAboveRoot","xs","resolvedPath","resolvedAbsolute","cwd","normalize","isAbsolute","trailingSlash","paths","relative","fromParts","toParts","samePartsLength","outputParts","delimiter","dirname","hasRoot","matchedSlash","extname","startDot","startPart","preDotState","GlDropdownSectionHeader","SidebarDropdownWidget","IterationTitle","workspacePath","issueId","getCadenceTitle","currentIteration","_currentIteration$ite","attributeUrl","getWindow","_node$ownerDocument","getComputedStyle$1","isNode","Node","getNodeName","isHTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflowX","isTableElement","isContainingBlock","safari","isSafari","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","createEmptyCoords","getCssDimensions","hasOffset","shouldFallback","unwrapElement","contextElement","getScale","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","includeScale","isFixedStrategy","visualOffsets","offsetWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","getDocumentElement","getNodeScroll","getWindowScrollBarX","getParentNode","assignedSlot","host","getOverflowAncestors","scrollableAncestor","getNearestOverflowAncestor","isBody","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","getViewportRect","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getTrueOffsetParent","polyfill","getOffsetParent","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getClippingRect","boundary","rootBoundary","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","clippingRect","accRect","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","reference","floating","getOffsetParentFn","getDimensionsFn","autoUpdate","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","onMove","timeoutId","io","cleanup","refresh","rootMargin","isFirstUpdate","handleObserve","ratio","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","prevRefRect","frameLoop","nextRefRect","computePosition","mergedOptions","platformWithCache","parseSpan","spanValidator","colspan","rowspan","stackedHeading","BTd","getBvTableTr","bvTableTr","inTbody","inThead","inTfoot","isDark","hasStickyHeader","isStickyColumn","rowVariant","headOrFoot","computedColspan","computedRowspan","isStackedCell","cellClasses","cellAttrs","linesPadding","selectedInlineNumberMark","selectedInlineSectionMarker","selectedInlineItemMark","compareButtonLabel","fileModeTooltip","discussionPath","addMergeRequestButtons","diffContentIDSelector","diffUrl","titleLink","submodule_tree_url","submodule_link","submoduleDiffCompareLinkText","submodule_compare","truncatedOldSha","old_sha","truncatedNewSha","new_sha","oldCommitId","newCommitId","deleted_file","isUsingLfs","external_storage","viewFileButtonText","truncatedContentSha","viewReplacedFileButtonText","truncatedBaseSha","isFileRenamed","isModeChanged","expandDiffToFullFileTitle","showEditButton","_this$diffFile$blob","readable_text","edit_path","ide_edit_path","isReviewable","reviewable","externalUrlLabel","formatted_external_url","showCommentButton","forced","can_modify_blob","handleFileNameClick","toggleReview","newReviewedStatus","closed","reviewFile","old_path_html","new_path_html","external_url","replaced_view_path","is_fully_expanded","diffHasDiscussions","toggleFileDiscussionWrappers","diffHasExpandedDiscussions","toggleFullDiff","ITEM_CLASS","BLink","_this$item","_this$item2","isLink","_item$action","_this$item3","_this$item3$extraAttr","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","isCustomContent","MouseEvent","bubbles","cancelable","_this$$refs$item","listIndex","wrapperListeners","itemComponent","componentIndex","exportText","dataTrackLabel","isIssue","issuableCountText","maximumFileSizeText","importIssuesText","uploadCsvFileText","mainText","helpText","maxFileSizeText","submitForm","CsvExportModal","CsvImportModal","trackImportClick","exportAsCSV","importCSV","importFromJIRA","exportModalId","importModalId","sides","alignments","placements","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getOppositeAxisPlacements","flipAlignment","isStart","lr","rl","tb","getSideList","getPaddingObject","expandPaddingObject","rectToClientRect","superCtor","super_","TempCtor","ADD_NEW_DRAFT","DELETE_DRAFT","SET_BATCH_COMMENTS_DRAFTS","REQUEST_PUBLISH_DRAFT","RECEIVE_PUBLISH_DRAFT_SUCCESS","RECEIVE_PUBLISH_DRAFT_ERROR","REQUEST_PUBLISH_REVIEW","RECEIVE_PUBLISH_REVIEW_SUCCESS","RECEIVE_PUBLISH_REVIEW_ERROR","RECEIVE_DRAFT_UPDATE_SUCCESS","TOGGLE_RESOLVE_DISCUSSION","CLEAR_DRAFTS","SET_REVIEW_BAR_RENDERED","SET_DRAFT_EDITING","BTh","Dropzone","autoDiscover","active_backdrop","active_textarea","storedStyle","enter","exit","backdrop","pause","unpause","autosize","$dropzone","forElement","expandRange","syntaxError","bos","PLATFORM_CHARS","EXTGLOB_CHARS","globstar","dot","nodot","qmarkNoDot","star","noext","noextglob","consumed","backtrack","parens","quotes","extglobs","eos","consume","negate","increment","decrement","tok","isBrace","isExtglob","extglob","inner","extglobOpen","conditions","extglobClose","extglobStar","negatedExtglob","backslashes","esc","unescape","slashes","pre","strictBrackets","nobracket","prevValue","literalBrackets","nobrace","outputIndex","tokensIndex","brace","dots","comma","toks","nonegate","noglobstar","prior","afterStar","strictSlashes","slashDot","imgCssClasses","imgCssWrapperClasses","imgSize","popoverUserId","popoverUsername","userId","shouldShowUsername","avatarTooltipText","showHelp","helpHref","showHelpState","newCveIdRequestUrl","currUrl","newUrl","toggleHelpState","groupIterationsQuery","shouldFetch","currentIterationId","_this$currentIteratio","iterationCadences","iterationCadencesListBoxItems","dropdownSelectedText","_this$currentIteratio2","dropdownHeaderText","handleSearch","setSearchTerm","onClick","iterationId","_this$iterationCadenc","onDropdownShow","POLICIES_PATH","policyText","policyName","EscalationPolicyCollapsedState","EscalationPolicyHelpState","INDEX_PATH","EscalationPoliciesEmptyState","escalationsPossible","policiesPath","attributeTitle","healthStatusFormInput","handleChange","epicFormInput","SidebarDropdown","groupPath","iterationFormInput","getIdForIteration","handleIterationSelect","IterationDropdown","onIterationSelect","CEMountSidebar","issueIid","SidebarWeightWidget","mountSidebarWeightWidget","SidebarHealthStatusWidget","mountSidebarHealthStatusWidget","workItemEpics","mountSidebarEpicWidget","SidebarIterationWidget","mountSidebarIterationWidget","hasEscalationPolicies","SidebarEscalationPolicy","mountSidebarEscalationPolicy","CveIdRequest","mountSidebarCveIdRequest","isPromotionInProgress","handleButtonClick","editCommentLabel","deleteCommentLabel","moreActionsLabel","EmojiPicker","ReplyButton","TimelineEventButton","UserAccessRoleBadge","resolvedStatusMixin","accessLevel","isAuthor","isContributor","projectName","showReply","canDelete","canResolve","canReportAsAbuse","shouldShowActionsDropdown","showDeleteAction","isUserAssigned","displayAssignUserText","noteableDisplayName","splitCamelCase","canAssign","can_set_issue_metadata","displayAuthorBadgeText","noteable","displayMemberBadgeText","access","displayContributorBadgeText","resolveIcon","onEdit","onDelete","onResolve","onAbuse","toggleReportAbuseDrawer","onCopyUrl","handleAssigneeUpdate","assignUser","assignee","setAwardEmoji","attachment","filename","toggleAwardPath","noteAuthorId","isAuthoredByMe","handleAward","NoteEditedText","NoteAwardsList","NoteAttachment","Suggestions","DuoCodeReviewFeedback","failedToLoadMetadata","hasSuggestion","lineType","commitMessage","batchFilePaths","filePaths","filesCount","coAuthoredByTrailer","suggestionCommitMessage","file_paths","suggestions_count","files_count","co_authored_by","handleFormUpdate","formCancelHandler","addSuggestionToBatch","removeSuggestionFromBatch","note_html","user_type","composing","$set","last_edited_at","last_edited_by","toggle_award_path","can_award_emoji","NoteHeader","NoteActions","NoteBody","TimelineEntryItem","discussionFile","showReplyButton","discussionRoot","isOverviewTab","shouldScrollToNote","isEditingLocal","isDeleting","isRequesting","_this$note$isEditing","commentType","classNameBindings","isTarget","_this$note$current_us","_this$note$current_us2","_this$note$current_us3","_this$note$current_us4","can_edit","noteAnchorId","commitLink","_this$note$current_us5","_this$note$position","startLineNumber","getStartLineNumber","endLineNumber","getEndLineNumber","showMultiLineComment","fileResolvedFromAvailableSource","isMRDiffView","_this$note$position2","isFileComment","_this$note$position3","editHandler","primaryBtnVariant","updateSuccess","oldContent","detectAndConfirmSensitiveTokens","handleUpdateError","recoverNoteContent","secondaryBtnVariant","secondaryBtnText","hideCancel","assigneesUpdate","external_author","noteable_note_url","human_access","is_contributor","is_noteable_author","project_name","deleteHandler","formUpdateHandler","visibilityObserver","BCollapse","BDropdownHeader","copy","readUInt8","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTbody","tbodyProps","tbodyAttrs","isTransitionGroup","detailsTdClass","tbodyTrAttr","tbodyTrClass","tbodyRowMixin","tdValue","thValue","getFieldFormatter","hasDetailsSlot","tbodyRowEventStopped","emitTbodyRowEvent","rowIndex","isRowHeader","formatted","getFormattedValue","cellTag","cellVariant","getTdValues","tdClass","tdAttr","slotScope","unformatted","toggleDetails","toggleDetailsFactory","detailsShowing","supportsSelectableRows","rowSelected","selectRow","unselectRow","slotName","$_bodyFieldSlotNameCache","$childNodes","striped","hasSelectableRowClick","rowShowDetails","hasRowClickHandler","$rows","detailsId","$tds","renderTbodyRowCell","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableRowClasses","selectableAttrs","selectableRowAttrs","userTrClasses","userTrAttrs","mouseenter","rowHovered","mouseleave","rowUnhovered","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","tbody","trs","tr","getTbodyTrs","getTbodyTrIndex","onTBodyRowClicked","renderBusy","renderTopRow","renderEmpty","renderBottomRow","$busy","defaultSlotName","lowercaseSlotName","renderTbodyRow","handlers","auxclick","onTbodyRowMiddleMouseRowClicked","contextmenu","onTbodyRowContextmenu","dblclick","onTbodyRowDblClicked","onTbodyRowKeydown","nn","rn","tn","en","Proxy","revocable","revoke","Reflect","for","ownKeys","deleteProperty","an","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","isDiffDiscussion","normalizeChildren","registerLink","signInLink","signedOutText","startTagRegister","startTagSignIn","endRegisterTag","endSignInTag","actionDetailText","editedAt","editedBy","GlClearIconButton","inputListeners","clearInput","nameId","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","GlListboxItem","GlListboxGroup","GlListboxSearchInput","isCheckCentered","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","resetButtonLabel","showSelectAllButtonLabel","srOnlyResultsLabel","selectedValues","listboxId","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","showNoResultsText","showSelectAllButton","toggleClasses","hasSelection","footer","newSelected","observeScroll","_this$scrollObserver","scrollObserver","groupClasses","_this$selectedIndices","focusSearchInput","selectedIndices","isSearchInput","_this$$refs$list","searchBox","onMultiSelect","onSingleSelect","_this$scrollObserver2","_entry$target","$__visibilityProp","topBoundary","bottomBoundary","listboxToggleText","toggleButtonClasses","headerId","onResetButtonClicked","onSelectAllButtonClicked","listboxClasses","itemTag","hasHeader","isFocused","listboxItemMoreItemsAriaAttributes","onIntersectionObserverAppear","hasFooter","seenIndex","baseIsMap","nodeIsMap","confidentialBodyText","confidentialIcon","tooltipLabel","confidentialityOnWarning","confidentialityOffWarning","toggleButtonText","warningMessage","isTestCase","TYPE_TEST_CASE","isIssueOrTestCase","permissions","issuableTypeText","commentText","confidentialityQueries","issuableSetConfidential","hideDropdownEvent","tracking","SidebarConfidentialityContent","SidebarConfidentialityForm","client","provider","clients","draftData","svgPath","svgHeight","primaryButtonLink","secondaryButtonLink","compact","invertInDarkMode","contentClass","shouldPreventImageReflow","contentClasses","projectsFetchPath","dropdownButtonTitle","dropdownHeaderTitle","moveInProgress","projects","projectsList","selectedProjects","fetchProjects","triggerSearch","name_with_namespace","handleProjectSelect","handleMoveClick","handleDropdownHide","baseInverter","toIteratee","CRITICAL","HIGH","MEDIUM","LOW","INFO","UNKNOWN","SEVERITY_COUNT_LIMIT","falsePositiveMessage","DISMISSAL_REASONS","acceptable_risk","false_positive","mitigating_control","used_in_tests","not_applicable","VULNERABILITY_STATES","confirmed","VULNERABILITY_STATE_OBJECTS","searchParamValue","dropdownDescription","vulnerabilityStateMutations","findingMutation","revertFindingToDetectedMutation","dismissFindingMutation","FEEDBACK_TYPES","ISSUE","MERGE_REQUEST","RELATED_ISSUES_ERRORS","LINK_ERROR","UNLINK_ERROR","ISSUE_ID_ERROR","REGEXES","ISSUE_FORMAT","LINK_FORMAT","SUPPORTING_MESSAGE_TYPES","RECORDED","SUPPORTED_IDENTIFIER_TYPE_CWE","SUPPORTED_IDENTIFIER_TYPE_OWASP","VULNERABILITY_TRAINING_HEADING","SECURITY_TRAINING_URL_STATUS_COMPLETED","CREATE_MR_ACTION","tagline","DOWNLOAD_PATCH_ACTION","CODE_FLOW_TAB_URL","VULNERABILITY_TAB_INDEX_TO_NAME","1","requestBranches","setBranchesEndpoint","_data$Branches","Branches","_state$projects","refsUrl","branches","selectedBranch","GlResizeObserver","GlResizeObserverDirective","truncateTarget","tooltipDisabled","updateTooltip","updateTooltipDebounced","selectTarget","_isFunction","hasHorizontalOverflow","onResize","getObserver","$_gl_intersectionHandler","$_gl_intersectionObserver","buttonTitle","DASHBOARD_TYPE_PROJECT","DASHBOARD_TYPE_PIPELINE","DASHBOARD_TYPE_GROUP","DASHBOARD_TYPE_INSTANCE","SEVERITY_LEVEL_CRITICAL","SEVERITY_LEVEL_HIGH","SEVERITY_LEVEL_UNKNOWN","SEVERITY_LEVEL_MEDIUM","SEVERITY_LEVEL_LOW","SEVERITY_LEVELS","SEVERITY_LEVELS_KEYS","REPORT_TYPES_DEFAULT","api_fuzzing","container_scanning","coverage_fuzzing","dast","dependency_scanning","secret_detection","REPORT_TYPES_DEFAULT_KEYS","REPORT_TYPES_CONTAINER_SCANNING_FOR_REGISTRY","container_scanning_for_registry","REPORT_TYPES_WITH_CLUSTER_IMAGE","cluster_image_scanning","REPORT_TYPES_WITH_MANUALLY_ADDED","generic","REPORT_TYPES_ALL","COLLAPSE_SECURITY_REPORTS_SUMMARY_LOCAL_STORAGE_KEY","DOC_PATH_APPLICATION_SECURITY","DOC_PATH_VULNERABILITY_DETAILS","DOC_PATH_VULNERABILITY_REPORT","DOC_PATH_SECURITY_CONFIGURATION","DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT","DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD","DOC_PATH_PROJECT_SECURITY_DASHBOARD","SEVERITY_GROUP_F","SEVERITY_GROUP_D","SEVERITY_GROUP_C","SEVERITY_GROUP_B","SEVERITY_GROUP_A","SEVERITY_GROUPS","severityLevels","startSize","minSize","maxSize","MAX_VALUE","customClass","isDragging","baseClasses","cursorStyle","resetSize","startDrag","startPos","currentStartSize","drag","endDrag","moved","newSize","BORDER_CLASSES","bordered","borderPosition","_this$group","showHeader","borderClass","groupLabeledBy","ToggleRepliesWidget","resolvedText","lastUpdatedBy","lastUpdatedAt","linkStart","discussion_path","commitDisplay","isForCommit","linkEnd","toggleDiscussionHandler","FIRST_CHAR_REGEX","GlSkeletonLoader","_this$discussion$diff","fileDiffRefs","headSha","baseSha","hasTruncatedDiffLines","_this$discussion$posi","isFileDiscussion","backfilledDiffFile","fetchDiff","trimChar","userColorSchemeClass","DiscussionReplyPlaceholder","ResolveDiscussionButton","ResolveWithIssueButton","resolveWithIssuePath","shouldShowJumpToNextDiscussion","resolvableNotes","userCanResolveDiscussion","_note$current_user","DiscussionNotesRepliesWrapper","diffLine","shouldGroupReplies","hasReplies","isDiscussionInternal","_this$discussion$note","componentName","SYSTEM_NOTE","PlaceholderSystemNote","PlaceholderNote","SystemNote","componentData","DiffDiscussionHeader","DiscussionNotes","DiscussionActions","renderDiffFile","alwaysExpanded","discussionsByDiffOrder","getAutoSaveKeyFromDiscussion","newNotePath","shouldRenderDiffs","wrapperComponent","DiffWithNote","wrapperComponentProps","shouldHideDiscussionBody","canShowReplyActions","_this$discussion$orig","_this$discussion$orig2","discussionHolderClass","onStartReplying","showReplyForm","noteForm","cancelReplyForm","replyData","handleSaveError","showReplies","draftForDiscussion","saveReply","getSymbols","deep","CreateLabelDropdown","namespacePath","$dropdownBack","$cancelButton","$newLabelField","$newColorField","$colorPreview","$addList","$newLabelError","$newLabelErrorContent","$newLabelCreateButton","$colorSuggestions","addListDefault","cleanBinding","addBinding","addColorValue","enableLabelCreateButton","updateColorPreview","updateColorPickerPreview","resetForm","saveLabel","previewColor","newLabel","color","humanize","addNewList","els","$els","$dropdown","$dropdownContainer","issueUpdateURL","selectedLabel","showNo","showAny","showMenuAbove","defaultLabel","abilityName","$form","$sidebarCollapsedValue","$value","$loading","initialSelected","scopedLabels","handleClick","saveLabelData","label_ids","labelCount","getLabelTemplate","_sortBy","enableScopedLabels","toRemoveIds","initDeprecatedJQueryDropdown","labelUrl","extraData","isAny","positionMenuAbove","colorEl","removesAll","indeterminate","dropdownValue","multiSelect","linkEl","selectedLayoutClasses","listItemEl","selectable","filterable","$dropdownParent","$dropdownInputField","selectedLabels","firstLabel","isIssueIndex","isMRIndex","Issuable","filterResults","clearMenu","clicked","clickEvent","isMarking","selectedObj","enableBulkLabelDropdown","setDropdownData","preserveContext","tplData","linkOpenTag","labelTemplate","_template","labelTextClass","escapeStr","text_color","scopedLabelTemplate","tooltipTitleTemplate","rightLabelTextClass","isScopedLabel","onSelectCheckboxIssue","$container","isOverviewPage","getAllDiscussionElements","findNextClosestVisibleDiscussion","discussionElements","visibleHorizontalOffset","getNextDiscussion","firstDiscussion","nextClosestDiscussion","nextDiscussion","getPreviousDiscussion","lastDiscussion","previousDiscussion","handleJumpForBothPages","scrollOptions","_window$mrTabs2","_window$mrTabs3","_window$mrTabs4","jumpToFirstUnresolvedDiscussion","isDescriptionVersionExpanded","deleteInProgress","canSeeDescriptionVersion","description_diff_path","displayDeleteButton","can_delete_description_version","shouldShowDescriptionVersion","descriptionVersionToggleIcon","toggleDescriptionVersion","_this$descriptionVers","deleteDescriptionVersion","delete_description_version_path","ICON_COLORS","check","merge","deleteButtonLabel","descriptionVersionHistoryMixin","showLines","loadingDiff","isAllowedIcon","isTargetNote","toggleIcon","actionTextHtml","hasMoreCommits","singleLineDescription","deleteButtonClasses","iconBgClass","systemNoteIconName","outdated_line_change_path","$_resizeObserver","contentRect","vscrollData","vscrollResizeObserver","minItemSize","sizes","validSizes","$_undefinedMap","$_updates","$_undefinedSizes","activated","deactivated","onScrollerResize","onScrollerVisible","getItemSize","scrollToBottom","$_scrollingToBottom","itemWithSize","GlFormInput","labelText","notificationCallback","intervalHeader","canPoll","checkConditions","makeDelayedRequest","clipboardTooltipText","clipboardProps","tooltipBoundary","clipboardTooltip","loadingIconLabel","templateText","isTodo","isIconButton","incrementGlobalTodoCount","updateGlobalTodoCount","decrementGlobalTodoCount","onToggle","getFileReviewsKey","isFileReviewed","reviews","reviewsForMr","setReviewsForMergeRequest","markFileReview","usableReviews","updatedReviews","updateSidebarClasses","layoutPage","rightSidebar","windowSize","isMR","removeListeners","addEventListeners","$document","sidebarCollapseClicked","onSidebarDropdownHidden","sidebarToggleClicked","triggered","$toggleButtons","$collapseIcon","$expandIcon","$toggleContainer","blockOrName","getBlock","setCollapseAfterUpdate","toggleSidebar","sidebarDropdownHidden","triggerOpenSidebar","updatedCodeBlock","lastMergedBlock","uniqueHighlightInfo","_differenceWith","sortCodeBlocks","updatedHighlightInfo","curr","flows","fileLen","splitByLineBreaks","calcStartLine","calcEndLine","lineEnd","createSourceBlockHighlightInfo","getIdSelectors","idPrefix","allTextMarkerElements","markdownRowContent","textSpanMarkerElements","markdownStepNumber","allNumMarkerElements","markdownRowNumber","subScroller","subScrollerRect","Participants","fetchingError","SidebarParticipants","showStatusText","showTooltip","useLink","componentType","_this$status","_this$status2","detailsPath","details_path","borderless","clearButtonTitle","focusin","onFocusin","focusout","onFocusout","hasValue","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","I18N","SeverityToken","initialSeverity","INCIDENT_SEVERITY","severitiesList","updateSeverity","updateIssuableSeverity","issueSetSeverity","UPDATE_SEVERITY_ERROR","TRY_AGAIN","SEVERITY","SEVERITY_VALUE","uuid","labelPosition","isVerticalLayout","shouldRenderDescription","shouldRenderHelp","isChecked","helpId","toggleFeature","TRACKING_CAP_KEY","TRACKING_CAP_LENGTH","shouldDispatchEvent","deferDuration","_delay","dispatchRedisHllUserEvent","DEFER_DURATION","baseMap","collection","scoped","showCloseButton","splitScopedLabelIndex","textColorVariant","light","labelTitle","labelComponent","scopedKey","scopedValue","tooltipTarget","hasListenerMixin","$events","_events","TRANSITION_PROPS","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","afterEnter","leave","afterLeave","appear","BVCollapse","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","accordion","transitioning","emitState","listenOnRoot","handleToggleEvent","handleAccordionEvent","emitSync","emitOnRoot","openedId","openAccordion","isThis","classObject","onEnter","onAfterEnter","onLeave","onAfterLeave","abnf","accesslog","actionscript","ada","angelscript","apache","arcade","arduino","armasm","asciidoc","aspectj","autohotkey","autoit","avrasm","awk","axapta","basic","bnf","brainfuck","cal","capnproto","ceylon","clean","clojure","codeowners","coffeescript","coq","cos","crmsh","crystal","csharp","csp","delphi","django","dns","dos","dsconfig","dts","dust","ebnf","elixir","erlang","excel","fix","flix","fortran","fsharp","gams","gauss","gcode","gherkin","glsl","gml","golo","handlebars","haskell","haxe","hsp","hy","inform7","irpf90","isbl","javascript","julia","kotlin","lasso","latex","ldif","leaf","lisp","livecodeserver","livescript","llvm","lsl","mathematica","matlab","maxima","mel","mercury","mipsasm","mizar","mojolicious","monkey","moonscript","n1ql","nestedtext","nginx","nsis","objectivec","ocaml","openscad","oxygene","parser3","perl","pf","pgsql","php","pony","powershell","processing","profile","prolog","protobuf","puppet","purebasic","python","qml","reasonml","rib","roboconf","routeros","rsl","ruby","ruleslanguage","rust","sas","scala","scheme","scilab","smali","smalltalk","sml","sqf","stan","stata","step21","stylus","subunit","svelte","hcl","taggerscript","tap","tcl","thrift","tp","typescript","vala","vbnet","vbscript","verilog","vhdl","vim","wasm","wren","x86asm","xl","zephir","filesText","isCompareVersionsHeader","hasDiffFiles","_isNumber","fileStats","createChunk","rawChunkLines","highlightedChunkLines","startingFrom","splitIntoChunks","splitRawContent","splitHighlightedContent","chunkIndex","highlightedChunk","rawChunk","queryVariables","assigneesQueries","updateQuery","subscriptionData","issuableAssigneesUpdated","handleFetchResult","setAssigneesFromRealtime","UncollapsedAssigneeList","signedIn","assigneesText","emptyUsers","InviteMembersTrigger","triggerSource","assigneesWidget","assignTo","IssuableAssignees","SidebarInviteMembers","SidebarAssigneesRealtime","UserSelect","directlyInviteMembers","initialAssignees","TYPE_ALERT","isSettingAssignees","oldIid","oldSelected","_node$mergeRequestInt","shouldEnableRealtime","assigneeText","isAssigneesLoading","_gon","_gon2","_gon3","current_user_avatar_url","userPermissions","assigneeShortcutDescription","assigneeShortcutKey","assigneeTooltip","assigneeUsernames","issuableSetAssignees","assignSelf","saveAssignees","usernames","collapseWidget","expandWidget","userSelect","showError","setDirtyState","performance","getEntriesByName","measure","baseIsRegExp","nodeIsRegExp","reHasUnicodeWord","isEmptyString","hasBraces","omit","keep","failglob","nonull","nullglob","any","not","matchKeys","braceExpand","hasWorkItemParent","hasParent","currentFetchError","workItem","_data$workspace3","workItems","setParentData","workItemId","TYPENAME_WORK_ITEM","skipRealTimeWorkItemParentUpdates","_subscriptionData$dat","TYPENAME_ISSUE","workItemType","updating","_response$data$issuab","updateWorkItem","hierarchyWidget","parentId","updateIssuable","WORK_ITEM_TYPE_VALUE_EPIC","issuableSetAttribute","updateError","_workItem$widgets","widgets","widget","slotData","BTr","bvTableRowGroup","isRowDark","trClasses","trAttrs","diffViewTypeOptions","baseProperty","getSymbolsIn","isDrop","fromRight","formattedDate","hasDate","resetText","SidebarFormattedDate","dateType","dateIsFixed","dateFields","isDateFixed","fixed","hasFixedDate","dateFixed","formattedFixedDate","noDate","formattedInheritedDate","dateFromMilestones","inherited","GlDatepicker","SidebarInheritDate","dateTypes","due","canInherit","dateQueries","skipIssueDueDateSubscription","startDateQueries","dueDateQueries","dateLabel","removeDateLabel","removeStartDate","removeDueDate","dateValue","first_day_of_week","initialLoading","parsedDate","dataTestId","epicDatePopoverEl","epicDatePopover","openDatePicker","datePicker","setFixedDate","toISODateFormat","issuableSetDate","dateHelpValidMessage","dateHelpUrl","SEVERITY_CLASSES","minor","major","blocker","SEVERITY_ICONS","SEVERITY_ICONS_MR_WIDGET","decorateData","entity","rawPath","file_lock","mimeType","lastCommitSha","lastOpenedAt","mrChange","setPageTitleForFile","setPageTitle","currentBranchId","currentProjectId","commitActionForFile","createCommitPayload","newBranch","commit_message","preBuiltCommitMessage","stagedFiles","isBlobUrl","previous_path","encoding","last_commit_id","lastCommit","createNewMergeRequestUrl","projectUrl","sortTreesByTypeAndName","sortTree","sortedTree","filePathMatches","getChangesCountForFiles","mergeTrees","fromTree","toTree","recurseTree","existingTreeNode","getEntryOrRoot","trees","swapInParentTreeWithSorting","oldKey","newPath","removeFromParentTree","updateFileCollections","entryPath","fileCollection","swapInStateArray","cleanTrailingSlash","pathsAreEqual","extractMarkdownImagesFromEntries","mdFile","images","alt","_entries$imagePath","_entries$imagePath2","_entries$imagePath3","imagePath","isRootRelative","relativePathToAbsolute","imageContent","imageRawPath","dataView","byteOffset","byteLength","align","cardHeader","justified","pills","BNav","notDisabled","BVTabButton","getBvTabs","controls","noKeyNav","posInSet","setSize","handleEvent","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","bvTabs","activeNavItemClass","navProps","activeTabClass","navClass","navWrapperClass","noFade","noNavStyle","BTabs","registeredTabs","$tab","activateTab","previousTab","nextTab","updateTabs","$_observer","setObserver","childList","subtree","attributeFilter","$tabs","getTabs","buttons","$btn","getButtonForTab","tabEvent","vueTarget","componentId","defaultPrevented","emitTabClick","focusButton","firstTab","lastTab","$activeTab","$fallbackTab","$buttons","controlledBy","$nav","$empty","validatorHelper","actionSecondary","actionTertiary","syncActiveTabWithQueryParams","queryParamName","activeTabIndex","handleInput","syncActiveTabFromQueryParams","buttonBinding","queryParamValue","getQueryParamValue","tabIndexToActivate","getTabQueryParamValue","bTabs","URLSearchParams","currentQueryParamValue","newQueryParamValue","setQueryParamValueIfNecessary","secondary","tertiary","getStatusLabel","_STATUS_LABELS$status","STATUS_LABELS","AssigneeAvatar","UserNameWithStatus","availability","_this$user","CollapsedAssignee","hasNoUsers","hasMoreThanOneAssignee","hasMoreThanTwoAssignees","allAssigneesCanMerge","can_merge","sidebarAvatarCounter","collapsedUsers","collapsedLength","tooltipTitleMergeStatus","mergeLength","_u$mergeRequestIntera","usersLength","maxRender","renderUsers","allUsers","isUserBusy","amount","generateCollapsedAssigneeTooltip","tooltipOptions","CopyableField","issueEmailAddress","STATUS_LIST","statusSubtexts","statusDropdownOptions","currentStatusLabel","EscalationStatus","escalationPoliciesEnabled","escalationPolicies","escalationStatus","escalationStatusQuery","fetchError","closeSidebar","escalationStatusMutation","issueSetEscalationStatus","noMilestone","placeholderMilestone","canAdminMilestone","milestoneId","milestoneTitle","projectMilestonesPath","TYPENAME_MILESTONE","footerItemText","IssuableMoveDropdown","selectedIssuables","cannotMoveTasksWarningTitle","tasksSelected","testCasesSelected","issuesSelected","WORK_ITEM_TYPE_ENUM_ISSUE","incidentsSelected","WORK_ITEM_TYPE_ENUM_INCIDENT","WORK_ITEM_TYPE_ENUM_TASK","WORK_ITEM_TYPE_ENUM_TEST_CASE","handleIssuableChecked","moveIssues","targetProject","iids","issueData","promises","moveIssue","promisesResult","foundError","promiseResult","_promiseResult$data$i","issueMove","refetchQueries","include","getIssuesQuery","getIssuesCountQuery","moveIssueMutation","moveIssueInput","targetProjectPath","full_path","referenceQueries","reviewers","reviewer","defaultDropdownText","handleReset","dropdownTitle","subscriptionsDropdownOptions","IssuableTimeTracker","limitToHours","canAddTimeEntries","canSetTimeEstimate","listenForQuickActions","quickActionListened","changedCommands","crmDocsLink","DOCS_URL_IN_EE_DIR","groupIssuesPath","contacts","getIssueCrmContactsQuery","_data$issue","customerRelationsContacts","issueCrmContactsSubscription","issueCrmContactsUpdated","shouldShowContacts","_this$contacts","contactsLabel","contactCount","_this$contacts2","shouldShowPopover","contact","popOverData","divider","_contact$organization","organization","phone","getIssuesPath","contactId","firstName","lastName","ProjectSelect","titleInProgress","moveErrorMessage","_data$issueMove","projectsAutocompleteEndpoint","dropdownOptions","sidebarOptEl","mountSidebarReviewers","multipleApprovalRulesAvailable","SidebarReviewers","isInIssuePage","isInDesignPage","reviewersInputEl","SidebarReviewersInputs","reviewerDropdown","userDropdown","trackAction","trackLabel","trackShowInviteMemberLink","MilestoneDropdown","mountSidebarLabelsWidget","allowLabelCreate","allowLabelEdit","allowScopedLabels","LabelsSelectWidget","allowLabelRemove","allowMultiselect","footerCreateLabelTitle","footerManageLabelTitle","labelsCreateTitle","labelsFilterBasePath","projectIssuesPath","isInIncidentPage","labelCreateType","gqlClient","MoveIssuesButton","StatusDropdown","SubscriptionsDropdown","ConfidentialityDropdown","mountMoveIssueButton","MoveIssueButton","_gon4","assigneeIdsInput","selectedUserName","onSelectedUnassigned","onSelected","SidebarTodoWidget","mountSidebarTodoWidget","SidebarAssigneesWidget","maxAssignees","CollapsedAssigneeList","mountSidebarAssigneesWidget","CrmContacts","mountSidebarCrmContacts","mountSidebarMilestoneWidget","SidebarDueDateWidget","mountSidebarDueDateWidget","SidebarReferenceWidget","mountSidebarReferenceWidget","IssuableLockForm","mountIssuableLockForm","SidebarParticipantsWidget","mountSidebarParticipantsWidget","mountSidebarSubscriptionsWidget","createNoteEmail","CopyEmailToClipboard","mountCopyEmailToClipboard","timeTrackingLimitToHours","canCreateTimelogs","SidebarTimeTracking","mountSidebarTimeTracking","SidebarSeverityWidget","mountSidebarSeverityWidget","SidebarEscalationStatus","mountSidebarEscalationStatus","Translate","baseGetTag","projectArchivedWarning","lockedIssueWarning","limits","sm","linkGen","prevPage","prevText","nextText","ellipsisText","labelNav","labelFirstPage","labelPrevPage","labelNextPage","labelLastPage","labelPage","minTotalPagesToCollapse","totalPages","isCompactPagination","paginationLimit","center","isFillAlign","maxAdjacentPages","firstPage","shouldCollapseLeftSide","lastPage","shouldCollapseRightSide","getPageItem","getEllipsisItem","pageIsDisabled","prevPageIsDisabled","labelForPage","nextPageIsDisabled","isLinkBased","setBreakpoint","commonAttrs","isActivePage","wrapperClasses","prevPageAriaLabel","prevPageHref","handlePrevious","nextPageAriaLabel","nextPageHref","handleNext","BASE_DROPDOWN_CLASS","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","toggleOptions","_this$$refs$toggle","middleware","allowedPlacements","_this$nonScrollableCo","availableHeight","contentsEl","contentsAvailableHeight","nonScrollableContentHeight","toggleElement","checkToggleFocusable","stopFloating","calculateNonScrollableAreaHeight","MutationObserver","stopAutoUpdate","floatingUIConfig","_this$observer","_this$stopAutoUpdate","prevented","startFloating","hadFocusWithin","focusToggle","toggleOnEnter","toggleOnSpace","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","toggleComponent","toggleAttributes","toggleListeners","panelClasses","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsModifier","rsEmoji","reUnicodeWord","AJAX_USERS_SELECT_PARAMS_MAP","todo_filter","todo_state_filter","author_id","states","ACTIVE_AND_BLOCKED_USER_STATES","showStagedIcon","isCentered","changedIcon","getCommitIconMap","changedIconClass","showIcon","reLatin","reComboMark","baseWhile","isPathSeparator","isPrefix","isGlobstar","scanToEnd","isBracket","isGlob","braceEscaped","finished","noparen","maxDepth","prevIndex","baseIntersection","castArrayLikeObject","mapped","MODEL_EVENT_NAME_ACTIVE","buttonId","noBody","BTab","_isTab","card","fade","activate","deactivate","registerTab","updateButton","unregisterTab","deactivateTab","tabClasses","computedLazy","computedNoFade","linkClass","supportsPassive","itemSize","sizeField","typeField","pageMode","prerender","emitUpdate","useTransform","pool","totalSize","ready","hoverKey","computedMinSize","$_computedMinItemSize","updateVisibleItems","applyPageMode","$_startIndex","$_endIndex","$_views","$_unusedViews","$_scrollDirty","$_lastUpdateScrollPosition","$_prerender","addView","nonReactive","__v_skip","used","unuseView","fake","unusedViews","nr","unusedPool","handleResize","handleScroll","continuous","$_refreshTimout","boundingClientRect","checkItem","checkPositionDiff","startIndex","endIndex","getScroll","positionDiff","oldI","itemsLimitError","$_continuous","unusedIndex","$_sortTimer","sortViews","getListenerTarget","ScrollParent","isVertical","scrollState","bounds","boundsSize","addListeners","listenerTarget","viewport","scrollDirection","scrollDistance","scrollToPosition","getPositionOfItem","viewportEl","scrollerPosition","viewA","viewB","relaxZeros","strictZeros","cacheKey","shorthand","isPadded","splitToPatterns","neg","onlyNegative","filterPatterns","onlyPositive","intersected","collatePatterns","rangeToPattern","zipped","startDigit","stopDigit","toCharacterClass","nines","countNines","stops","countZeros","compare","splitToRanges","padZeros","toQuantifier","comparison","relax","clearCache","internalNote","renderedNote","internalNoteClass","watchData","sizeDependencies","emitResize","finalActive","onDataUpdate","observeSize","unobserveSize","$_pendingVScrollUpdate","updateSize","$isServer","$_forceNextVScrollUpdate","updateWatchData","onVscrollUpdate","onVscrollUpdateSize","$_pendingSizeUpdate","computeSize","$_watchData","applySize","$_parentNode","caption","captionHtml","captionMixin","$caption","hasCaptionSlot","captionId","isEpicAttribute","issuableParent","_this$glFeatures","epicWidgetEditConfirmation","hasCurrentAttribute","hasEpic","shouldSkipRealTimeEpicLinkUpdates","selectedTitle","editConfirmation","_this$issuableParent","attributeTypeIcon","timeFor","shouldShowConfirmationPopover","_this$glFeatures2","_this$currentAttribut4","_data$issuableSetAttr","handlePopoverClose","popover","handlePopoverConfirm","handleEditConfirmation","noPermissionToView","editConfirmationCta","editConfirmationCancel","getFocusableOptions","_this$$refs$resultsLi","resultsList","HOME_KEY","END_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","ESC_KEY","NUMPAD_ENTER_KEY","_this$$refs$searchInp","searchInput","_clamp","computeCoordsFromPlacement","sideAxis","alignLength","commonX","commonY","commonAlign","coords","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","detectOverflow","_await$platform$isEle","elementContext","altBoundary","paddingObject","clippingClientRect","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","alignmentOffset","centerOffset","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","autoAlignment","detectOverflowOptions","placements$1","getPlacementList","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","checkMainAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","referenceHiddenOffsets","referenceHidden","escapedOffsets","getBoundingRect","minX","minY","nativeClientRects","clientRects","sortedRects","prevRect","getRectsByLine","resetRects","firstRect","lastRect","isLeftSide","maxRight","minLeft","measureRects","_middlewareData$offse","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","convertValueToCoords","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","showComparisonState","showSpentOnlyState","showEstimateOnlyState","showNoTimeTrackingState","timeSpentHumanReadable","timeEstimateHumanReadable","divClass","spanClass","timeTrackedTooltipText","GlProgressBar","timeSpent","parsedTimeRemaining","diffSeconds","parseSeconds","timeRemainingHumanReadable","stringifyTime","timeRemainingTooltip","timeRemainingMinutes","timeRemainingPercent","timeRemainingStatusClass","progressBarVariant","noTimeTrackingText","estimatedOnlyText","TimeTrackingCollapsedState","TimeTrackingSpentOnlyPane","TimeTrackingComparisonPane","TimeTrackingReport","CreateTimelogForm","SetTimeEstimateForm","initialTimeTracking","showCollapsed","timeTracking","issuableTimeTracking","timeTrackingQueries","isTimeTrackingInfoLoading","_this$$apollo","_this$timeTracking","totalTimeSpent","_this$timeTracking2","humanTimeEstimate","_this$timeTracking3","humanTotalTimeSpent","_this$timeTracking4","hasTotalTimeSpent","hasTimeEstimate","isTimeReportSupported","timeEstimateTooltip","refetch","openRegisterTimeSpentModal","CREATE_TIMELOG_MODAL_ID","setTimeEstimateModalId","SET_TIME_ESTIMATE_MODAL_ID","newlineRegex","generateHLJSTag","includeClose","generateCloseTag","newline","subChild","bidiChar","wrapBidiChar","createLink","generateHLJSOpenTag","getObjectKeysByKeyName","keyName","subObj","attrOpenTag","stringOpenTag","DEPENDENCY_REGEX","openTagRegex","GITHUB_REPO_REGEX","GITLAB_REPO_REGEX","GITLAB_NESTED_REPO_REGEX","importPathString","replaceRepoPath","dependency","repoPath","repo","regexConfigs","resolver","dep","handleReplace","regexConfig","getLinkHref","beginString","DEPENDENCY_LINKERS","package_json","dependencies","devDependencies","peerDependencies","optionalDependencies","dependenciesToLink","packageName","unescapedPackageName","_unescape","unescapedVersion","packageLink","versionLink","closeAndOpenTag","dependencyToLink","gemspec","closeTag","godeps_json","gemfile","podspec_json","composer_json","rawParsed","require","go_sum","packagePath","lowercasePath","tagHref","wrapLine","highlightPlugins","fileType","shouldWrapLines","wrapChildNodes","wrapBidiChars","linkDependencies","wrapLines","GlToggle","GlAnimatedNotificationIcon","showInDropdown","subscribed","emailsDisabled","subscribedQueries","_data$workspace4","parentIsGroup","notificationTooltip","subscribeDisabledDescription","labelOn","labelOff","notificationIcon","canSubscribe","setSubscribed","subscribedState","updateIssuableSubscription","toggleSubscribed","notifications","captionTop","noBorderCollapse","outlined","responsive","tableClass","tableRendererMixin","isTableSimple","selectableTableClasses","stackedTableClasses","computedBusy","selectableTableAttrs","ariaAttrs","renderCaption","renderColgroup","renderTbody","renderTfoot","$table","tableClasses","tableAttrs","wrapperStyles","formClass","BDropdownForm","autocomplete","displayField","inputId","inputLabel","textInput","customTrigger","triggerOnFocus","computedWidth","openedEvent","drawEvent","pikadayConfig","dateString","defaultDateFormatter","monthEl","yearEl","addAccessibleLabels","pikaday","pikaButtons","today","pikaButton","pikaYear","pikaMonth","pikaDay","pikaButtonDate","compareTo","highlightPastDates","calendarTriggerBtn","resetDate","datepickerClasses","renderClearButton","inputAutocomplete","cleared","kebabCase","MountingPortal","toggleDrawer","ReportAbuseDropdownItem","invalidBlock","invalidNode","escapeInvalid","createNewDraft","publishDraft","addDraftToDiscussion","publish","discard","_res$position","_draft$position","draftsPublishPath","publishReview","tabEl","draftID","expandAllDiscussions","clearDrafts","discardDrafts","draftsDiscardPath","draftsPerDiscussionId","draftsPerFileHashAndLine","shouldRenderDraftRow","diffFileSha","lkey","rkey","showDraftsForThisSide","isPublishingDraft","currentlyPublishingDrafts","sortedDrafts","processDraft","shouldAnimateReviewButton","publishingDraftId","isPublishing","draftIndex","computeSuggestionCommitMessage","noEmpties","dict","final","upd","matchPhrases","replacementExpression","selectedTargetIndex","_state$startVersion","DIFF_COMPARE_BASE_VERSION_INDEX","selectedSourceIndex","mergeRequestDiff","selectedContextCommitsDiffs","contextCommitsDiff","showing_context_commits_diff","diffHeadParam","getParameterByName","diffHead","isBaseSelected","isHeadSelected","baseVersion","head_version_path","targetBranchName","base_version_path","headVersion","DIFF_COMPARE_HEAD_VERSION_INDEX","mergeRequestDiffs","compare_path","versionIndex","version_path","commits_count","diffs_path","manual","diffHasAllExpandedDiscussions","diffHasAllCollapsedDiscussions","_diff$discussions","diffLineDiscussionsExpanded","allDiffDiscussionsExpanded","highlightedLines","_diff$discussions2","isTreePathLoaded","_state$treeEntries$pa","treeEntries","commentForms","coverageFiles","fileCoverage","lineCoverage","branch_name","mrMetadata","project_path","user_full_name","batchLoadingState","linkedFileHash","updateDiffFilesInState","newFileData","diffPositionByLineCode","_discussion$original_","_discussion$position","originalStartLineCode","discussionLineCodes","line_codes","isTargetLine","discussionLineCode","isExpandedDiscussion","discussionItem","isHashTargeted","addDiscussion","originalDiscussions","lineHasDiscussion","newReviews","flattenTree","blobTree","treeToFlatten","TREE_TYPE","treeAcc","getFolder","shouldGetFolder","currentFileTypeTree","firstFolder","getLowestSingleFolder","setBaseConfig","viewedId","prefetchSingleFile","treeEntry","diffId","startSha","urlParams","old","diff_head","diff_id","_state$diffFiles$","linkedFileLoading","increaseAmount","totalLoaded","scrolledVirtualScroller","getBatch","pagination","_diffFiles$","_state$diffFiles","total_pages","code_navigation_path","codeNavigationPath","definitionPathPrefix","strippedData","has_encoded_file_paths","dismissible","merge_request_diffs","new_file","generateTreeList","VARIANT_WARNING","previous","coveragePoll","getCoverageReports","removeParams","_window4","removeDiscussionsFromDiff","removeDiscussion","renderFileForDiscussionId","historyPushState","TRACKING_CLICK_DIFF_VIEW_SETTING","overflowBottom","preventScroll","scrollBy","from_merge_request","scrollToLineIfNeededInline","scrollToLineIfNeededParallel","_state$mergeRequestDi","versionPath","loadParams","discussionWrappersExpanded","lineCodesWithDiscussions","TRACKING_CLICK_FILE_BROWSER_SETTING","show_whitespace_in_diffs","TRACKING_CLICK_WHITESPACE_SETTING","receiveFullDiffError","setExpandedDiffLines","expandedDiffLines","TYPE_KEY","OLD_LINE_KEY","NEW_LINE_KEY","MAX_RENDERING_DIFF_LINES","START_RENDERING_INDEX","idleCb","timeRemaining","MIN_RENDERING_MS","MAX_RENDERING_BULK_ROWS","fetchFullDiff","full","switchToFullDiffFromRenamedFile","alternate_viewer","setFileCollapsedAutomatically","feature_name","changeCurrentCommit","commitRE","_state$commit","_state$commit2","previousCommitId","nextCommitId","canMove","_window5","setCurrentDiffFileIdFromNote","_rootGetters$getDiscu","TRACKING_CLICK_SINGLE_FILE_SETTING","view_diffs_file_by_file","addDraftToFile","fragmentFileHash","oldNumber","newNumber","fetchLinkedExpandedLine","matchLine","matchNewPosition","matchOldPosition","linesInBetween","isExpandBoth","previousLine","previousLineNumber","isLastMatchLine","loadLines","unlinkFile","toggleAllDiffDiscussions","setActiveTab","setEndpoints","fetchMrMetadata","_state$endpoints","isDiffsPage","modules","notesModule","namespaced","basePath","isDraftsFetched","findingsDrawer","imageViewMode","twoup","onion","DownloadViewer","oldPath","pixeliseValue","ImageViewer","onionMaxWidth","onionMaxHeight","onionOldImgInfo","onionNewImgInfo","onionDraggerPos","onionOpacity","onionMaxPixelWidth","onionMaxPixelHeight","onionDraggerPixelPos","stopDrag","dragTrack","dragger","leftValue","prepareOnionSkin","onionNewImgLoaded","imgInfo","onionOldImgLoaded","swipeOldImgInfo","swipeNewImgInfo","swipeMaxWidth","swipeMaxHeight","swipeBarPos","swipeWrapWidth","swipeMaxPixelWidth","swipeMaxPixelHeight","swipeWrapPixelWidth","swipeBarPixelPos","resize","swipeFrame","prepareSwipe","swipeNewImgLoaded","swipeOldImgLoaded","oldSize","imageViewComponent","TwoUpViewer","SwipeViewer","OnionSkinViewer","isNew","isRenamed","changeMode","aMode","bMode","outputText","STATE_LOADING","STATE_ERRORED","uiText","showLink","loadError","STATE_IDLING","canLoadFullDiff","switchToFull","transitionState","TRANSITION_LOAD_START","TRANSITION_LOAD_SUCCEED","TRANSITION_LOAD_ERROR","transitionEvent","currentState","RENAMED_DIFF_TRANSITIONS","transition","clickLink","dismissError","TRANSITION_ACKNOWLEDGE_ERROR","newSha","oldSha","RenamedFile","ModeChanged","ImageDiffViewer","DownloadDiffViewer","fullOldPath","fullNewPath","issuableIterationQueries","projectIssueIterationQuery","projectIssueIterationMutation","iterationsQueries","issuableEpicQueries","projectIssueEpicQuery","projectIssueEpicMutation","epicsQueries","groupEpicsQuery","parentsQueries","workItemParentsQuery","issuableEscalationPolicyQueries","issueEscalationPolicyQuery","issueEscalationPolicyMutation","escalationPoliciesQueries","projectEscalationPoliciesQuery","parentQueries","workItemParent","updateWorkItemParent","issuableAttributesQueriesFoss","issuableEpicSubscription","workItemParentSubscription","ancestorsQueries","epicAncestorsQuery","weightQueries","issueWeightQuery","updateIssueWeightMutation","issuableWeightSubscription","updateStatusMutation","issueHealthStatusQuery","BTableLite","stickyHeaderClass","localTableClass","getAjaxUsersSelectParams","paramsMap","paramKey","optionKey","elsClassName","usersPath","todoFilter","todoStateFilter","showSuggested","showNullUser","defaultNullUser","showAnyUser","firstUser","issueURL","$assignToMeLink","$collapsedSidebar","selectedIdDefault","assigneeTemplate","collapsedAssigneeTemplate","selectedId","suggestedReviewersHelpPath","suggestedReviewersHeaderTemplate","assignYourself","unassignedSelected","currentUserInfo","userName","inputHtmlString","getSelectedUserInputs","getSelected","checkMaxSelect","maxSelect","firstSelectedId","emitSidebarEvent","getMultiSelectDropdownTitle","selectedUser","selectedUsers","otherSelected","$input","assignee_id","openingTag","closingTag","processData","dataArg","anyUser","selectedInputs","default_avatar_url","beforeDivider","suggested","suggestedUsers","filterRemote","deprecatedJQueryDropdown","inputValue","filteredFullData","parseData","inputMeta","previouslySelected","addInput","highlightSelected","updateLabel","GitLabDropdownInstance","buildUrl","isEditMergeRequest","isNewMergeRequest","merge_request_iid","approval_rules","show_suggested","linkClasses","tooltipAttributes","dataUserSuggested","busyBadge","renderRowAvatar","renderApprovalRules","applicable_approval_rules","approvalRules","countText","renderApprovalRulesCount","ruleName","rule_type","autofocusonshow","localWeight","previousWeight","weight","skipIssueWeightSubscription","_this$issuable$weight","hasWeight","weightLabel","noWeightLabel","collapsedWeightLabel","setWeight","shouldRemoveWeight","currentIid","issuableSetWeight","_issuableSetWeight$er","_issuableSetWeight$is","_issuableSetWeight$is2","handleFormSubmit","emitEvent","removeWeight","inputPlaceholder","maxDisplayWeight","_n","getLineNumber","_lineRange$otherKey","otherLineType","startingLine","preferredSide","fallbackSide","linesCopy","startingLineCode","upToSelected","_takeRightWhile","extractProps","findLineCodeIndex","_position$left","_position$right","$_id","$_getId","$_updateIdState","$_idStateInit","toggleSelection","checkedClasses"],"mappings":"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","file":"pages.projects.merge_requests.diffs.2af9fd4e.chunk.js","sourcesContent":["var constant = require('./constant'),\n    createInverter = require('./_createInverter'),\n    identity = require('./identity');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n  if (value != null &&\n      typeof value.toString != 'function') {\n    value = nativeObjectToString.call(value);\n  }\n\n  result[value] = key;\n}, constant(identity));\n\nmodule.exports = invert;\n","'use strict';\n\nexports.isInteger = num => {\n  if (typeof num === 'number') {\n    return Number.isInteger(num);\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isInteger(Number(num));\n  }\n  return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n  if (limit === false) return false;\n  if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n  return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n  const node = block.nodes[n];\n  if (!node) return;\n\n  if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n    if (node.escaped !== true) {\n      node.value = '\\\\' + node.value;\n      node.escaped = true;\n    }\n  }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n  if (node.type !== 'brace') return false;\n  if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n    node.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n  if (block.type !== 'brace') return false;\n  if (block.invalid === true || block.dollar) return true;\n  if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n    block.invalid = true;\n    return true;\n  }\n  if (block.open !== true || block.close !== true) {\n    block.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n  if (node.type === 'open' || node.type === 'close') {\n    return true;\n  }\n  return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n  if (node.type === 'text') acc.push(node.value);\n  if (node.type === 'range') node.type = 'text';\n  return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n  const result = [];\n\n  const flat = arr => {\n    for (let i = 0; i < arr.length; i++) {\n      const ele = arr[i];\n\n      if (Array.isArray(ele)) {\n        flat(ele);\n        continue;\n      }\n\n      if (ele !== undefined) {\n        result.push(ele);\n      }\n    }\n    return result;\n  };\n\n  flat(args);\n  return result;\n};\n","import { getFormData } from '~/diffs/store/utils';\n\nexport const getDraftReplyFormData = (data) => ({\n  endpoint: data.notesData.draftsPath,\n  data,\n});\n\nexport const getDraftFormData = (params) => ({\n  endpoint: params.notesData.draftsPath,\n  data: getFormData(params),\n});\n\nexport const parallelLineKey = (line, side) => (line[side] ? line[side].line_code : '');\n\nexport const showDraftOnSide = (line, side) => {\n  // inline mode\n  if (side === null) {\n    return true;\n  }\n\n  // parallel\n  if (side === 'left' || side === 'right') {\n    const otherSide = side === 'left' ? 'right' : 'left';\n    const thisCode = (line[side] && line[side].line_code) || '';\n    const otherCode = (line[otherSide] && line[otherSide].line_code) || '';\n\n    // either the lineCodes are different\n    // or if they're the same, only show on the left side\n    if (thisCode !== otherCode || (side === 'left' && thisCode === otherCode)) {\n      return true;\n    }\n  }\n\n  return false;\n};\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseIntersection;\n","/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/Pikaday/Pikaday\n */\n\n(function (root, factory)\n{\n    'use strict';\n\n    var moment;\n    if (typeof exports === 'object') {\n        // CommonJS module\n        // Load moment.js as an optional dependency\n        try { moment = require('moment'); } catch (e) {}\n        module.exports = factory(moment);\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(function (req)\n        {\n            // Load moment.js as an optional dependency\n            var id = 'moment';\n            try { moment = req(id); } catch (e) {}\n            return factory(moment);\n        });\n    } else {\n        root.Pikaday = factory(root.moment);\n    }\n}(this, function (moment)\n{\n    'use strict';\n\n    /**\n     * feature detection and helper functions\n     */\n    var hasMoment = typeof moment === 'function',\n\n    hasEventListeners = !!window.addEventListener,\n\n    document = window.document,\n\n    sto = window.setTimeout,\n\n    addEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.addEventListener(e, callback, !!capture);\n        } else {\n            el.attachEvent('on' + e, callback);\n        }\n    },\n\n    removeEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.removeEventListener(e, callback, !!capture);\n        } else {\n            el.detachEvent('on' + e, callback);\n        }\n    },\n\n    trim = function(str)\n    {\n        return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n    },\n\n    hasClass = function(el, cn)\n    {\n        return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n    },\n\n    addClass = function(el, cn)\n    {\n        if (!hasClass(el, cn)) {\n            el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n        }\n    },\n\n    removeClass = function(el, cn)\n    {\n        el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n    },\n\n    isArray = function(obj)\n    {\n        return (/Array/).test(Object.prototype.toString.call(obj));\n    },\n\n    isDate = function(obj)\n    {\n        return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n    },\n\n    isWeekend = function(date)\n    {\n        var day = date.getDay();\n        return day === 0 || day === 6;\n    },\n\n    isLeapYear = function(year)\n    {\n        // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    },\n\n    getDaysInMonth = function(year, month)\n    {\n        return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n    },\n\n    setToStartOfDay = function(date)\n    {\n        if (isDate(date)) date.setHours(0,0,0,0);\n    },\n\n    compareDates = function(a,b)\n    {\n        // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n        return a.getTime() === b.getTime();\n    },\n\n    extend = function(to, from, overwrite)\n    {\n        var prop, hasProp;\n        for (prop in from) {\n            hasProp = to[prop] !== undefined;\n            if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n                if (isDate(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = new Date(from[prop].getTime());\n                    }\n                }\n                else if (isArray(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = from[prop].slice(0);\n                    }\n                } else {\n                    to[prop] = extend({}, from[prop], overwrite);\n                }\n            } else if (overwrite || !hasProp) {\n                to[prop] = from[prop];\n            }\n        }\n        return to;\n    },\n\n    fireEvent = function(el, eventName, data)\n    {\n        var ev;\n\n        if (document.createEvent) {\n            ev = document.createEvent('HTMLEvents');\n            ev.initEvent(eventName, true, false);\n            ev = extend(ev, data);\n            el.dispatchEvent(ev);\n        } else if (document.createEventObject) {\n            ev = document.createEventObject();\n            ev = extend(ev, data);\n            el.fireEvent('on' + eventName, ev);\n        }\n    },\n\n    adjustCalendar = function(calendar) {\n        if (calendar.month < 0) {\n            calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n            calendar.month += 12;\n        }\n        if (calendar.month > 11) {\n            calendar.year += Math.floor(Math.abs(calendar.month)/12);\n            calendar.month -= 12;\n        }\n        return calendar;\n    },\n\n    /**\n     * defaults and localisation\n     */\n    defaults = {\n\n        // bind the picker to a form field\n        field: null,\n\n        // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n        bound: undefined,\n\n        // data-attribute on the input field with an aria assistance tekst (only applied when `bound` is set)\n        ariaLabel: 'Use the arrow keys to pick a date',\n\n        // position of the datepicker, relative to the field (default to bottom & left)\n        // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n        position: 'bottom left',\n\n        // automatically fit in the viewport even if it means repositioning from the position option\n        reposition: true,\n\n        // the default output format for `.toString()` and `field` value\n        format: 'YYYY-MM-DD',\n\n        // the toString function which gets passed a current date object and format\n        // and returns a string\n        toString: null,\n\n        // used to create date object from current input string\n        parse: null,\n\n        // the initial date to view when first opened\n        defaultDate: null,\n\n        // make the `defaultDate` the initial selected value\n        setDefaultDate: false,\n\n        // first day of week (0: Sunday, 1: Monday etc)\n        firstDay: 0,\n\n        // the default flag for moment's strict date parsing\n        formatStrict: false,\n\n        // the minimum/earliest date that can be selected\n        minDate: null,\n        // the maximum/latest date that can be selected\n        maxDate: null,\n\n        // number of years either side, or array of upper/lower range\n        yearRange: 10,\n\n        // show week numbers at head of row\n        showWeekNumber: false,\n\n        // Week picker mode\n        pickWholeWeek: false,\n\n        // used internally (don't config outside)\n        minYear: 0,\n        maxYear: 9999,\n        minMonth: undefined,\n        maxMonth: undefined,\n\n        startRange: null,\n        endRange: null,\n\n        isRTL: false,\n\n        // Additional text to append to the year in the calendar title\n        yearSuffix: '',\n\n        // Render the month after year in the calendar title\n        showMonthAfterYear: false,\n\n        // Render days of the calendar grid that fall in the next or previous month\n        showDaysInNextAndPreviousMonths: false,\n\n        // Allows user to select days that fall in the next or previous month\n        enableSelectionDaysInNextAndPreviousMonths: false,\n\n        // how many months are visible\n        numberOfMonths: 1,\n\n        // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n        // only used for the first display or when a selected date is not visible\n        mainCalendar: 'left',\n\n        // Specify a DOM element to render the calendar in\n        container: undefined,\n\n        // Blur field when date is selected\n        blurFieldOnSelect : true,\n\n        // internationalization\n        i18n: {\n            previousMonth : 'Previous Month',\n            nextMonth     : 'Next Month',\n            months        : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n            weekdays      : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n            weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n        },\n\n        // Theme Classname\n        theme: null,\n\n        // events array\n        events: [],\n\n        // callback function\n        onSelect: null,\n        onOpen: null,\n        onClose: null,\n        onDraw: null,\n\n        // Enable keyboard input\n        keyboardInput: true\n    },\n\n\n    /**\n     * templating functions to abstract HTML rendering\n     */\n    renderDayName = function(opts, day, abbr)\n    {\n        day += opts.firstDay;\n        while (day >= 7) {\n            day -= 7;\n        }\n        return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n    },\n\n    renderDay = function(opts)\n    {\n        var arr = [];\n        var ariaSelected = 'false';\n        if (opts.isEmpty) {\n            if (opts.showDaysInNextAndPreviousMonths) {\n                arr.push('is-outside-current-month');\n\n                if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n                    arr.push('is-selection-disabled');\n                }\n\n            } else {\n                return '<td class=\"is-empty\"></td>';\n            }\n        }\n        if (opts.isDisabled) {\n            arr.push('is-disabled');\n        }\n        if (opts.isToday) {\n            arr.push('is-today');\n        }\n        if (opts.isSelected) {\n            arr.push('is-selected');\n            ariaSelected = 'true';\n        }\n        if (opts.hasEvent) {\n            arr.push('has-event');\n        }\n        if (opts.isInRange) {\n            arr.push('is-inrange');\n        }\n        if (opts.isStartRange) {\n            arr.push('is-startrange');\n        }\n        if (opts.isEndRange) {\n            arr.push('is-endrange');\n        }\n        return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n                 '<button class=\"pika-button pika-day\" type=\"button\" ' +\n                    'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n                        opts.day +\n                 '</button>' +\n               '</td>';\n    },\n\n    renderWeek = function (d, m, y) {\n        // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\n        var onejan = new Date(y, 0, 1),\n            weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7);\n        return '<td class=\"pika-week\">' + weekNum + '</td>';\n    },\n\n    renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n    {\n        return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n    },\n\n    renderBody = function(rows)\n    {\n        return '<tbody>' + rows.join('') + '</tbody>';\n    },\n\n    renderHead = function(opts)\n    {\n        var i, arr = [];\n        if (opts.showWeekNumber) {\n            arr.push('<th></th>');\n        }\n        for (i = 0; i < 7; i++) {\n            arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n        }\n        return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n    },\n\n    renderTitle = function(instance, c, year, month, refYear, randId)\n    {\n        var i, j, arr,\n            opts = instance._o,\n            isMinYear = year === opts.minYear,\n            isMaxYear = year === opts.maxYear,\n            html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n            monthHtml,\n            yearHtml,\n            prev = true,\n            next = true;\n\n        for (arr = [], i = 0; i < 12; i++) {\n            arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n                (i === month ? ' selected=\"selected\"': '') +\n                ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? 'disabled=\"disabled\"' : '') + '>' +\n                opts.i18n.months[i] + '</option>');\n        }\n\n        monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (isArray(opts.yearRange)) {\n            i = opts.yearRange[0];\n            j = opts.yearRange[1] + 1;\n        } else {\n            i = year - opts.yearRange;\n            j = 1 + year + opts.yearRange;\n        }\n\n        for (arr = []; i < j && i <= opts.maxYear; i++) {\n            if (i >= opts.minYear) {\n                arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n            }\n        }\n        yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (opts.showMonthAfterYear) {\n            html += yearHtml + monthHtml;\n        } else {\n            html += monthHtml + yearHtml;\n        }\n\n        if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n            prev = false;\n        }\n\n        if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n            next = false;\n        }\n\n        if (c === 0) {\n            html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n        }\n        if (c === (instance._o.numberOfMonths - 1) ) {\n            html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n        }\n\n        return html += '</div>';\n    },\n\n    renderTable = function(opts, data, randId)\n    {\n        return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n    },\n\n\n    /**\n     * Pikaday constructor\n     */\n    Pikaday = function(options)\n    {\n        var self = this,\n            opts = self.config(options);\n\n        self._onMouseDown = function(e)\n        {\n            if (!self._v) {\n                return;\n            }\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n\n            if (!hasClass(target, 'is-disabled')) {\n                if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n                    self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n                    if (opts.bound) {\n                        sto(function() {\n                            self.hide();\n                            if (opts.blurFieldOnSelect && opts.field) {\n                                opts.field.blur();\n                            }\n                        }, 100);\n                    }\n                }\n                else if (hasClass(target, 'pika-prev')) {\n                    self.prevMonth();\n                }\n                else if (hasClass(target, 'pika-next')) {\n                    self.nextMonth();\n                }\n            }\n            if (!hasClass(target, 'pika-select')) {\n                // if this is touch event prevent mouse events emulation\n                if (e.preventDefault) {\n                    e.preventDefault();\n                } else {\n                    e.returnValue = false;\n                    return false;\n                }\n            } else {\n                self._c = true;\n            }\n        };\n\n        self._onChange = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n            if (hasClass(target, 'pika-select-month')) {\n                self.gotoMonth(target.value);\n            }\n            else if (hasClass(target, 'pika-select-year')) {\n                self.gotoYear(target.value);\n            }\n        };\n\n        self._onKeyChange = function(e)\n        {\n            e = e || window.event;\n\n            if (self.isVisible()) {\n\n                switch(e.keyCode){\n                    case 13:\n                    case 27:\n                        if (opts.field) {\n                            opts.field.blur();\n                        }\n                        break;\n                    case 37:\n                        e.preventDefault();\n                        self.adjustDate('subtract', 1);\n                        break;\n                    case 38:\n                        self.adjustDate('subtract', 7);\n                        break;\n                    case 39:\n                        self.adjustDate('add', 1);\n                        break;\n                    case 40:\n                        self.adjustDate('add', 7);\n                        break;\n                }\n            }\n        };\n\n        self._onInputChange = function(e)\n        {\n            var date;\n\n            if (e.firedBy === self) {\n                return;\n            }\n            if (opts.parse) {\n                date = opts.parse(opts.field.value, opts.format);\n            } else if (hasMoment) {\n                date = moment(opts.field.value, opts.format, opts.formatStrict);\n                date = (date && date.isValid()) ? date.toDate() : null;\n            }\n            else {\n                date = new Date(Date.parse(opts.field.value));\n            }\n            if (isDate(date)) {\n              self.setDate(date);\n            }\n            if (!self._v) {\n                self.show();\n            }\n        };\n\n        self._onInputFocus = function()\n        {\n            self.show();\n        };\n\n        self._onInputClick = function()\n        {\n            self.show();\n        };\n\n        self._onInputBlur = function()\n        {\n            // IE allows pika div to gain focus; catch blur the input field\n            var pEl = document.activeElement;\n            do {\n                if (hasClass(pEl, 'pika-single')) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n\n            if (!self._c) {\n                self._b = sto(function() {\n                    self.hide();\n                }, 50);\n            }\n            self._c = false;\n        };\n\n        self._onClick = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement,\n                pEl = target;\n            if (!target) {\n                return;\n            }\n            if (!hasEventListeners && hasClass(target, 'pika-select')) {\n                if (!target.onchange) {\n                    target.setAttribute('onchange', 'return;');\n                    addEvent(target, 'change', self._onChange);\n                }\n            }\n            do {\n                if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n            if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n                self.hide();\n            }\n        };\n\n        self.el = document.createElement('div');\n        self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n        addEvent(self.el, 'mousedown', self._onMouseDown, true);\n        addEvent(self.el, 'touchend', self._onMouseDown, true);\n        addEvent(self.el, 'change', self._onChange);\n\n        if (opts.keyboardInput) {\n            addEvent(document, 'keydown', self._onKeyChange);\n        }\n\n        if (opts.field) {\n            if (opts.container) {\n                opts.container.appendChild(self.el);\n            } else if (opts.bound) {\n                document.body.appendChild(self.el);\n            } else {\n                opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n            }\n            addEvent(opts.field, 'change', self._onInputChange);\n\n            if (!opts.defaultDate) {\n                if (hasMoment && opts.field.value) {\n                    opts.defaultDate = moment(opts.field.value, opts.format).toDate();\n                } else {\n                    opts.defaultDate = new Date(Date.parse(opts.field.value));\n                }\n                opts.setDefaultDate = true;\n            }\n        }\n\n        var defDate = opts.defaultDate;\n\n        if (isDate(defDate)) {\n            if (opts.setDefaultDate) {\n                self.setDate(defDate, true);\n            } else {\n                self.gotoDate(defDate);\n            }\n        } else {\n            self.gotoDate(new Date());\n        }\n\n        if (opts.bound) {\n            this.hide();\n            self.el.className += ' is-bound';\n            addEvent(opts.trigger, 'click', self._onInputClick);\n            addEvent(opts.trigger, 'focus', self._onInputFocus);\n            addEvent(opts.trigger, 'blur', self._onInputBlur);\n        } else {\n            this.show();\n        }\n    };\n\n\n    /**\n     * public Pikaday API\n     */\n    Pikaday.prototype = {\n\n\n        /**\n         * configure functionality\n         */\n        config: function(options)\n        {\n            if (!this._o) {\n                this._o = extend({}, defaults, true);\n            }\n\n            var opts = extend(this._o, options, true);\n\n            opts.isRTL = !!opts.isRTL;\n\n            opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n            opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n            opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n            opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n            opts.disableWeekends = !!opts.disableWeekends;\n\n            opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n            var nom = parseInt(opts.numberOfMonths, 10) || 1;\n            opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n            if (!isDate(opts.minDate)) {\n                opts.minDate = false;\n            }\n            if (!isDate(opts.maxDate)) {\n                opts.maxDate = false;\n            }\n            if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n                opts.maxDate = opts.minDate = false;\n            }\n            if (opts.minDate) {\n                this.setMinDate(opts.minDate);\n            }\n            if (opts.maxDate) {\n                this.setMaxDate(opts.maxDate);\n            }\n\n            if (isArray(opts.yearRange)) {\n                var fallback = new Date().getFullYear() - 10;\n                opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n                opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n            } else {\n                opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n                if (opts.yearRange > 100) {\n                    opts.yearRange = 100;\n                }\n            }\n\n            return opts;\n        },\n\n        /**\n         * return a formatted string of the current selection (using Moment.js if available)\n         */\n        toString: function(format)\n        {\n            format = format || this._o.format;\n            if (!isDate(this._d)) {\n                return '';\n            }\n            if (this._o.toString) {\n              return this._o.toString(this._d, format);\n            }\n            if (hasMoment) {\n              return moment(this._d).format(format);\n            }\n            return this._d.toDateString();\n        },\n\n        /**\n         * return a Moment.js object of the current selection (if available)\n         */\n        getMoment: function()\n        {\n            return hasMoment ? moment(this._d) : null;\n        },\n\n        /**\n         * set the current selection from a Moment.js object (if available)\n         */\n        setMoment: function(date, preventOnSelect)\n        {\n            if (hasMoment && moment.isMoment(date)) {\n                this.setDate(date.toDate(), preventOnSelect);\n            }\n        },\n\n        /**\n         * return a Date object of the current selection\n         */\n        getDate: function()\n        {\n            return isDate(this._d) ? new Date(this._d.getTime()) : null;\n        },\n\n        /**\n         * set the current selection\n         */\n        setDate: function(date, preventOnSelect)\n        {\n            if (!date) {\n                this._d = null;\n\n                if (this._o.field) {\n                    this._o.field.value = '';\n                    fireEvent(this._o.field, 'change', { firedBy: this });\n                }\n\n                return this.draw();\n            }\n            if (typeof date === 'string') {\n                date = new Date(Date.parse(date));\n            }\n            if (!isDate(date)) {\n                return;\n            }\n\n            var min = this._o.minDate,\n                max = this._o.maxDate;\n\n            if (isDate(min) && date < min) {\n                date = min;\n            } else if (isDate(max) && date > max) {\n                date = max;\n            }\n\n            this._d = new Date(date.getTime());\n            setToStartOfDay(this._d);\n            this.gotoDate(this._d);\n\n            if (this._o.field) {\n                this._o.field.value = this.toString();\n                fireEvent(this._o.field, 'change', { firedBy: this });\n            }\n            if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n                this._o.onSelect.call(this, this.getDate());\n            }\n        },\n\n        /**\n         * change view to a specific date\n         */\n        gotoDate: function(date)\n        {\n            var newCalendar = true;\n\n            if (!isDate(date)) {\n                return;\n            }\n\n            if (this.calendars) {\n                var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n                    lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n                    visibleDate = date.getTime();\n                // get the end of the month\n                lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n                lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n                newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n            }\n\n            if (newCalendar) {\n                this.calendars = [{\n                    month: date.getMonth(),\n                    year: date.getFullYear()\n                }];\n                if (this._o.mainCalendar === 'right') {\n                    this.calendars[0].month += 1 - this._o.numberOfMonths;\n                }\n            }\n\n            this.adjustCalendars();\n        },\n\n        adjustDate: function(sign, days) {\n\n            var day = this.getDate() || new Date();\n            var difference = parseInt(days)*24*60*60*1000;\n\n            var newDay;\n\n            if (sign === 'add') {\n                newDay = new Date(day.valueOf() + difference);\n            } else if (sign === 'subtract') {\n                newDay = new Date(day.valueOf() - difference);\n            }\n\n            this.setDate(newDay);\n        },\n\n        adjustCalendars: function() {\n            this.calendars[0] = adjustCalendar(this.calendars[0]);\n            for (var c = 1; c < this._o.numberOfMonths; c++) {\n                this.calendars[c] = adjustCalendar({\n                    month: this.calendars[0].month + c,\n                    year: this.calendars[0].year\n                });\n            }\n            this.draw();\n        },\n\n        gotoToday: function()\n        {\n            this.gotoDate(new Date());\n        },\n\n        /**\n         * change view to a specific month (zero-index, e.g. 0: January)\n         */\n        gotoMonth: function(month)\n        {\n            if (!isNaN(month)) {\n                this.calendars[0].month = parseInt(month, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        nextMonth: function()\n        {\n            this.calendars[0].month++;\n            this.adjustCalendars();\n        },\n\n        prevMonth: function()\n        {\n            this.calendars[0].month--;\n            this.adjustCalendars();\n        },\n\n        /**\n         * change view to a specific full year (e.g. \"2012\")\n         */\n        gotoYear: function(year)\n        {\n            if (!isNaN(year)) {\n                this.calendars[0].year = parseInt(year, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        /**\n         * change the minDate\n         */\n        setMinDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.minDate = value;\n                this._o.minYear  = value.getFullYear();\n                this._o.minMonth = value.getMonth();\n            } else {\n                this._o.minDate = defaults.minDate;\n                this._o.minYear  = defaults.minYear;\n                this._o.minMonth = defaults.minMonth;\n                this._o.startRange = defaults.startRange;\n            }\n\n            this.draw();\n        },\n\n        /**\n         * change the maxDate\n         */\n        setMaxDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.maxDate = value;\n                this._o.maxYear = value.getFullYear();\n                this._o.maxMonth = value.getMonth();\n            } else {\n                this._o.maxDate = defaults.maxDate;\n                this._o.maxYear = defaults.maxYear;\n                this._o.maxMonth = defaults.maxMonth;\n                this._o.endRange = defaults.endRange;\n            }\n\n            this.draw();\n        },\n\n        setStartRange: function(value)\n        {\n            this._o.startRange = value;\n        },\n\n        setEndRange: function(value)\n        {\n            this._o.endRange = value;\n        },\n\n        /**\n         * refresh the HTML\n         */\n        draw: function(force)\n        {\n            if (!this._v && !force) {\n                return;\n            }\n            var opts = this._o,\n                minYear = opts.minYear,\n                maxYear = opts.maxYear,\n                minMonth = opts.minMonth,\n                maxMonth = opts.maxMonth,\n                html = '',\n                randId;\n\n            if (this._y <= minYear) {\n                this._y = minYear;\n                if (!isNaN(minMonth) && this._m < minMonth) {\n                    this._m = minMonth;\n                }\n            }\n            if (this._y >= maxYear) {\n                this._y = maxYear;\n                if (!isNaN(maxMonth) && this._m > maxMonth) {\n                    this._m = maxMonth;\n                }\n            }\n\n            randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n\n            for (var c = 0; c < opts.numberOfMonths; c++) {\n                html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n            }\n\n            this.el.innerHTML = html;\n\n            if (opts.bound) {\n                if(opts.field.type !== 'hidden') {\n                    sto(function() {\n                        opts.trigger.focus();\n                    }, 1);\n                }\n            }\n\n            if (typeof this._o.onDraw === 'function') {\n                this._o.onDraw(this);\n            }\n\n            if (opts.bound) {\n                // let the screen reader user know to use arrow keys\n                opts.field.setAttribute('aria-label', opts.ariaLabel);\n            }\n        },\n\n        adjustPosition: function()\n        {\n            var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;\n\n            if (this._o.container) return;\n\n            this.el.style.position = 'absolute';\n\n            field = this._o.trigger;\n            pEl = field;\n            width = this.el.offsetWidth;\n            height = this.el.offsetHeight;\n            viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n            viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n            scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n            leftAligned = true;\n            bottomAligned = true;\n\n            if (typeof field.getBoundingClientRect === 'function') {\n                clientRect = field.getBoundingClientRect();\n                left = clientRect.left + window.pageXOffset;\n                top = clientRect.bottom + window.pageYOffset;\n            } else {\n                left = pEl.offsetLeft;\n                top  = pEl.offsetTop + pEl.offsetHeight;\n                while((pEl = pEl.offsetParent)) {\n                    left += pEl.offsetLeft;\n                    top  += pEl.offsetTop;\n                }\n            }\n\n            // default position is bottom & left\n            if ((this._o.reposition && left + width > viewportWidth) ||\n                (\n                    this._o.position.indexOf('right') > -1 &&\n                    left - width + field.offsetWidth > 0\n                )\n            ) {\n                left = left - width + field.offsetWidth;\n                leftAligned = false;\n            }\n            if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n                (\n                    this._o.position.indexOf('top') > -1 &&\n                    top - height - field.offsetHeight > 0\n                )\n            ) {\n                top = top - height - field.offsetHeight;\n                bottomAligned = false;\n            }\n\n            this.el.style.left = left + 'px';\n            this.el.style.top = top + 'px';\n\n            addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');\n            addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');\n            removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');\n            removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');\n        },\n\n        /**\n         * render HTML for a particular month\n         */\n        render: function(year, month, randId)\n        {\n            var opts   = this._o,\n                now    = new Date(),\n                days   = getDaysInMonth(year, month),\n                before = new Date(year, month, 1).getDay(),\n                data   = [],\n                row    = [];\n            setToStartOfDay(now);\n            if (opts.firstDay > 0) {\n                before -= opts.firstDay;\n                if (before < 0) {\n                    before += 7;\n                }\n            }\n            var previousMonth = month === 0 ? 11 : month - 1,\n                nextMonth = month === 11 ? 0 : month + 1,\n                yearOfPreviousMonth = month === 0 ? year - 1 : year,\n                yearOfNextMonth = month === 11 ? year + 1 : year,\n                daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n            var cells = days + before,\n                after = cells;\n            while(after > 7) {\n                after -= 7;\n            }\n            cells += 7 - after;\n            var isWeekSelected = false;\n            for (var i = 0, r = 0; i < cells; i++)\n            {\n                var day = new Date(year, month, 1 + (i - before)),\n                    isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n                    isToday = compareDates(day, now),\n                    hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n                    isEmpty = i < before || i >= (days + before),\n                    dayNumber = 1 + (i - before),\n                    monthNumber = month,\n                    yearNumber = year,\n                    isStartRange = opts.startRange && compareDates(opts.startRange, day),\n                    isEndRange = opts.endRange && compareDates(opts.endRange, day),\n                    isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n                    isDisabled = (opts.minDate && day < opts.minDate) ||\n                                 (opts.maxDate && day > opts.maxDate) ||\n                                 (opts.disableWeekends && isWeekend(day)) ||\n                                 (opts.disableDayFn && opts.disableDayFn(day));\n\n                if (isEmpty) {\n                    if (i < before) {\n                        dayNumber = daysInPreviousMonth + dayNumber;\n                        monthNumber = previousMonth;\n                        yearNumber = yearOfPreviousMonth;\n                    } else {\n                        dayNumber = dayNumber - days;\n                        monthNumber = nextMonth;\n                        yearNumber = yearOfNextMonth;\n                    }\n                }\n\n                var dayConfig = {\n                        day: dayNumber,\n                        month: monthNumber,\n                        year: yearNumber,\n                        hasEvent: hasEvent,\n                        isSelected: isSelected,\n                        isToday: isToday,\n                        isDisabled: isDisabled,\n                        isEmpty: isEmpty,\n                        isStartRange: isStartRange,\n                        isEndRange: isEndRange,\n                        isInRange: isInRange,\n                        showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n                        enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n                    };\n\n                if (opts.pickWholeWeek && isSelected) {\n                    isWeekSelected = true;\n                }\n\n                row.push(renderDay(dayConfig));\n\n                if (++r === 7) {\n                    if (opts.showWeekNumber) {\n                        row.unshift(renderWeek(i - before, month, year));\n                    }\n                    data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n                    row = [];\n                    r = 0;\n                    isWeekSelected = false;\n                }\n            }\n            return renderTable(opts, data, randId);\n        },\n\n        isVisible: function()\n        {\n            return this._v;\n        },\n\n        show: function()\n        {\n            if (!this.isVisible()) {\n                this._v = true;\n                this.draw();\n                removeClass(this.el, 'is-hidden');\n                if (this._o.bound) {\n                    addEvent(document, 'click', this._onClick);\n                    this.adjustPosition();\n                }\n                if (typeof this._o.onOpen === 'function') {\n                    this._o.onOpen.call(this);\n                }\n            }\n        },\n\n        hide: function()\n        {\n            var v = this._v;\n            if (v !== false) {\n                if (this._o.bound) {\n                    removeEvent(document, 'click', this._onClick);\n                }\n                this.el.style.position = 'static'; // reset\n                this.el.style.left = 'auto';\n                this.el.style.top = 'auto';\n                addClass(this.el, 'is-hidden');\n                this._v = false;\n                if (v !== undefined && typeof this._o.onClose === 'function') {\n                    this._o.onClose.call(this);\n                }\n            }\n        },\n\n        /**\n         * GAME OVER\n         */\n        destroy: function()\n        {\n            var opts = this._o;\n\n            this.hide();\n            removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n            removeEvent(this.el, 'touchend', this._onMouseDown, true);\n            removeEvent(this.el, 'change', this._onChange);\n            if (opts.keyboardInput) {\n                removeEvent(document, 'keydown', this._onKeyChange);\n            }\n            if (opts.field) {\n                removeEvent(opts.field, 'change', this._onInputChange);\n                if (opts.bound) {\n                    removeEvent(opts.trigger, 'click', this._onInputClick);\n                    removeEvent(opts.trigger, 'focus', this._onInputFocus);\n                    removeEvent(opts.trigger, 'blur', this._onInputBlur);\n                }\n            }\n            if (this.el.parentNode) {\n                this.el.parentNode.removeChild(this.el);\n            }\n        }\n\n    };\n\n    return Pikaday;\n}));\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{ref:\"userAvatar\"},[_c('gl-avatar',{staticClass:\"gl-bg-cover\",class:{\n      lazy: _vm.lazy,\n      [_vm.cssClasses]: true,\n    },style:(_vm.pseudo ? { backgroundImage: `url('${_vm.sanitizedSource}')` } : null),attrs:{\"src\":_vm.pseudo ? undefined : _vm.resultantSrcAttribute,\"data-src\":_vm.sanitizedSource,\"size\":_vm.size,\"alt\":_vm.imgAlt,\"data-testid\":\"user-avatar-image\"}}),_vm._v(\" \"),(_vm.tooltipText || _vm.$scopedSlots.default)?_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.userAvatar,\"placement\":_vm.tooltipPlacement,\"boundary\":\"window\"}},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.tooltipText))]})],2):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_image.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_avatar_image.vue?vue&type=script&lang=js\"","<script>\n/* This is a re-usable vue component for rendering a user avatar that\n      does not need to link to the user's profile. The image and an optional\n      tooltip can be configured by props passed to this component.\n\n      Sample configuration:\n\n      <user-avatar\n        lazy\n        :img-src=\"userAvatarSrc\"\n        :img-alt=\"tooltipText\"\n        :tooltip-text=\"tooltipText\"\n        tooltip-placement=\"top\"\n        :size=\"24\"\n      />\n\n    */\n\nimport { GlTooltip, GlAvatar } from '@gitlab/ui';\nimport { isObject } from 'lodash';\nimport defaultAvatarUrl from 'images/no_avatar.png';\nimport { __ } from '~/locale';\nimport { placeholderImage } from '~/lazy_loader';\n\nexport default {\n  name: 'UserAvatarImage',\n  components: {\n    GlTooltip,\n    GlAvatar,\n  },\n  props: {\n    lazy: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    imgSrc: {\n      type: String,\n      required: false,\n      default: defaultAvatarUrl,\n    },\n    cssClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    imgAlt: {\n      type: String,\n      required: false,\n      default: __('user avatar'),\n    },\n    size: {\n      type: [Number, Object],\n      required: true,\n    },\n    tooltipText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top',\n    },\n    // Render avatar using pseudo-elements so that they cannot be selected or copied\n    pseudo: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    // API response sends null when gravatar is disabled and\n    // we provide an empty string when we use it inside user avatar link.\n    // In both cases we should render the defaultAvatarUrl\n    sanitizedSource() {\n      let baseSrc = this.imgSrc === '' || this.imgSrc === null ? defaultAvatarUrl : this.imgSrc;\n      // Only adds the width to the URL if its not a base64 data image\n      if (!(baseSrc.indexOf('data:') === 0) && !baseSrc.includes('?'))\n        baseSrc += `?width=${this.maximumSize}`;\n      return baseSrc;\n    },\n    maximumSize() {\n      if (isObject(this.size)) {\n        return Math.max(...Object.values(this.size)) * 2;\n      }\n      return this.size * 2;\n    },\n    resultantSrcAttribute() {\n      return this.lazy ? placeholderImage : this.sanitizedSource;\n    },\n  },\n};\n</script>\n\n<template>\n  <span ref=\"userAvatar\">\n    <gl-avatar\n      class=\"gl-bg-cover\"\n      :class=\"{\n        lazy: lazy,\n        [cssClasses]: true,\n      }\"\n      :src=\"pseudo ? undefined : resultantSrcAttribute\"\n      :style=\"pseudo ? { backgroundImage: `url('${sanitizedSource}')` } : null\"\n      :data-src=\"sanitizedSource\"\n      :size=\"size\"\n      :alt=\"imgAlt\"\n      data-testid=\"user-avatar-image\"\n    />\n\n    <gl-tooltip\n      v-if=\"tooltipText || $scopedSlots.default\"\n      :target=\"() => $refs.userAvatar\"\n      :placement=\"tooltipPlacement\"\n      boundary=\"window\"\n    >\n      <slot>{{ tooltipText }}</slot>\n    </gl-tooltip>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./user_avatar_image.vue?vue&type=template&id=0836472c\"\nimport script from \"./user_avatar_image.vue?vue&type=script&lang=js\"\nexport * from \"./user_avatar_image.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 * Adds two numbers together\n * @param {Number} a\n * @param {Number} b\n */\nconst addition = (a, b) => a + b;\n\n/**\n * Returns the sum of all arguments\n * @param  {...Number} numbers\n */\nconst sum = function () {\n  for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n    numbers[_key] = arguments[_key];\n  }\n  return numbers.reduce(addition);\n}; // eslint-disable-line unicorn/no-array-callback-reference\n\n/**\n * Returns the average of all arguments\n * @param  {...Number} numbers\n */\nconst average = function () {\n  return sum(...arguments) / arguments.length;\n};\n\n/**\n * Returns the modulo of n for a divisor.\n *\n * Maps the integer n into the range [0, divisor) when the divisor is positive,\n * and (divisor, 0] when the divisor is negative.\n *\n * This is useful when indexing into an array, to ensure you always stay within\n * the array bounds.\n *\n * See https://2ality.com/2019/08/remainder-vs-modulo.html.\n *\n * @param {number} n The number to mod.\n * @param {number} divisor The divisor (e.g., the length of an array).\n * @returns {number}\n */\nfunction modulo(n, divisor) {\n  const result = (n % divisor + divisor) % divisor;\n  // Never return -0.\n  return result === 0 ? 0 : result;\n}\n\n/**\n * Convert number to engineering format, using SI suffix\n * @param {Number|String} value - Number or Number-convertible String\n * @param {Number} precision\n * @return {String} number, possibly with a suffix\n */\nconst engineeringNotation = function (value) {\n  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  const invalidValues = [NaN, Infinity, -Infinity];\n  const num = Number(value);\n  if (invalidValues.includes(num) || invalidValues.includes(Number(precision))) {\n    return num.toString();\n  }\n  const allYourBase = {\n    '-24': 'y',\n    '-21': 'z',\n    '-18': 'a',\n    '-15': 'f',\n    '-12': 'p',\n    '-9': 'n',\n    '-6': 'μ',\n    '-3': 'm',\n    0: '',\n    3: 'k',\n    6: 'M',\n    9: 'G',\n    12: 'T',\n    15: 'P',\n    18: 'E',\n    21: 'Z',\n    24: 'Y'\n  };\n  const exponentialNotation = num.toExponential(precision);\n  const power = exponentialNotation.split('e').map(Number)[1] || 0;\n  if (power < -24 || power > 24) {\n    return exponentialNotation;\n  }\n  const scaledPower = 3 * Math.floor(power / 3);\n  const scaledMantissa = (exponentialNotation / 10 ** scaledPower\n  // strip trailing decimals from floating point rounding errors\n  ).toFixed(precision)\n  // strip trailing 0s after a decimal point\n  .replace(/\\.([1-9]*)0+$/, (_, fractionalDigits) => {\n    if (fractionalDigits) {\n      return `.${fractionalDigits}`;\n    }\n    return '';\n  });\n  return `${scaledMantissa}${allYourBase[scaledPower]}`;\n};\n\n/**\n * Formats a number as a locale-based string using `Intl.NumberFormat`.\n *\n * 2333 -> 2,333\n * 232324 -> 232,324\n *\n * @param {Number|string} value - number to be converted\n * @param {{}?} options - options to be passed to\n * `Intl.NumberFormat` such as `unit` and `style`.\n * @param {String|String[]} locales - If set, forces a different\n * language code from the one currently in the document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\n *\n * @returns {String}\n */\nconst formatNumberToLocale = function (value) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let locales = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  if (Number.isNaN(Number(value))) {\n    return value;\n  }\n  return new Intl.NumberFormat(locales, options).format(value);\n};\n\n// Converts a value (string, number, etc.) to a number\n// Taken from bootstrap-vue\nconst toFloat = function (value) {\n  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n  const float = parseFloat(value);\n  return Number.isNaN(float) ? defaultValue : float;\n};\n\nexport { addition, average, engineeringNotation, formatNumberToLocale, modulo, sum, toFloat };\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","/* eslint-disable class-methods-use-this, @gitlab/require-i18n-strings */\n\nimport { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';\nimport $ from 'jquery';\nimport { uniq, escape } from 'lodash';\nimport { getEmojiScoreWithIntent } from '~/emoji/utils';\nimport { scrollToElement } from '~/lib/utils/common_utils';\nimport * as Emoji from '~/emoji';\nimport { dispose, fixTitle } from '~/tooltips';\nimport { createAlert } from '~/alert';\nimport {\n  EMOJI_THUMBS_UP,\n  EMOJI_THUMBS_DOWN,\n  FREQUENTLY_USED_EMOJIS_STORAGE_KEY,\n} from '~/emoji/constants';\nimport axios from './lib/utils/axios_utils';\nimport { isInVueNoteablePage } from './lib/utils/dom_utils';\nimport { __ } from './locale';\n\nconst animationEndEventString = 'animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd';\nconst transitionEndEventString = 'transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd';\n\nconst FROM_SENTENCE_REGEX = /(?:, and | and |, )/; // For separating lists produced by ruby's Array#toSentence\n\nconst categoryLabelMap = {\n  activity: 'Activity',\n  people: 'People',\n  nature: 'Nature',\n  food: 'Food',\n  travel: 'Travel',\n  objects: 'Objects',\n  symbols: 'Symbols',\n  flags: 'Flags',\n};\n\nconst IS_VISIBLE = 'is-visible';\nconst IS_RENDERED = 'is-rendered';\n\nexport class AwardsHandler {\n  constructor(emoji) {\n    this.emoji = emoji;\n    this.eventListeners = [];\n    this.toggleButtonSelector = '.js-add-award';\n    this.menuClass = 'js-award-emoji-menu';\n  }\n\n  bindEvents() {\n    const $parentEl = this.targetContainerEl ? $(this.targetContainerEl) : $(document);\n    // If the user shows intent let's pre-build the menu\n    this.registerEventListener(\n      'one',\n      $parentEl,\n      'mouseenter focus',\n      this.toggleButtonSelector,\n      'mouseenter focus',\n      () => {\n        const $menu = $(`.${this.menuClass}`);\n        if ($menu.length === 0) {\n          requestAnimationFrame(() => {\n            this.createEmojiMenu();\n          });\n        }\n      },\n    );\n    this.registerEventListener('on', $parentEl, 'click', this.toggleButtonSelector, (e) => {\n      e.stopPropagation();\n      e.preventDefault();\n      this.showEmojiMenu($(e.currentTarget));\n    });\n\n    this.registerEventListener('on', $('html'), 'click', (e) => {\n      const $target = $(e.target);\n      if (!$target.closest(`.${this.menuClass}`).length) {\n        $('.js-awards-block.current').removeClass('current');\n        if ($(`.${this.menuClass}`).is(':visible')) {\n          $(`${this.toggleButtonSelector}.is-active`).removeClass('is-active');\n          this.hideMenuElement($(`.${this.menuClass}`));\n        }\n      }\n    });\n\n    const emojiButtonSelector = `.js-awards-block .js-emoji-btn, .${this.menuClass} .js-emoji-btn`;\n    this.registerEventListener('on', $parentEl, 'click', emojiButtonSelector, (e) => {\n      e.preventDefault();\n      const $target = $(e.currentTarget);\n      const $glEmojiElement = $target.find('gl-emoji');\n      const $spriteIconElement = $target.find('.icon');\n      const emojiName = ($glEmojiElement.length ? $glEmojiElement : $spriteIconElement).data(\n        'name',\n      );\n\n      $target.closest('.js-awards-block').addClass('current');\n      this.addAward(this.getVotesBlock(), this.getAwardUrl(), emojiName);\n    });\n  }\n\n  registerEventListener(method = 'on', element, ...args) {\n    element[method].call(element, ...args);\n    this.eventListeners.push({\n      element,\n      args,\n    });\n  }\n\n  showEmojiMenu($addBtn) {\n    if ($addBtn.hasClass('js-note-emoji')) {\n      $addBtn.closest('.note').find('.js-awards-block').addClass('current');\n    } else {\n      $addBtn.closest('.js-awards-block').addClass('current');\n    }\n\n    const $menu = $(`.${this.menuClass}`);\n    if ($menu.length) {\n      if ($menu.is('.is-visible')) {\n        $addBtn.removeClass('is-active');\n        this.hideMenuElement($menu);\n        $('.js-emoji-menu-search').blur();\n      } else {\n        $addBtn.addClass('is-active');\n        this.positionMenu($menu, $addBtn);\n        this.showMenuElement($menu);\n        $('.js-emoji-menu-search').focus();\n      }\n    } else {\n      $addBtn.addClass('is-loading is-active');\n      this.createEmojiMenu(() => {\n        const $createdMenu = $(`.${this.menuClass}`);\n        $addBtn.removeClass('is-loading');\n        this.positionMenu($createdMenu, $addBtn);\n        return setTimeout(() => {\n          this.showMenuElement($createdMenu);\n          $('.js-emoji-menu-search').focus();\n        }, 200);\n      });\n    }\n  }\n\n  // Create the emoji menu with the first category of emojis.\n  // Then render the remaining categories of emojis one by one to avoid jank.\n  createEmojiMenu(callback) {\n    if (this.isCreatingEmojiMenu) {\n      return;\n    }\n    this.isCreatingEmojiMenu = true;\n\n    // Render the first category\n    const categoryMap = this.emoji.getEmojiCategoryMap();\n    const categoryNameKey = Object.keys(categoryMap)[0];\n    const emojisInCategory = categoryMap[categoryNameKey];\n    const firstCategory = this.renderCategory(categoryLabelMap[categoryNameKey], emojisInCategory);\n\n    // Render the frequently used\n    const frequentlyUsedEmojis = this.getFrequentlyUsedEmojis();\n    let frequentlyUsedCatgegory = '';\n    if (frequentlyUsedEmojis.length > 0) {\n      frequentlyUsedCatgegory = this.renderCategory('Frequently used', frequentlyUsedEmojis, {\n        frequentEmojis: true,\n      });\n    }\n\n    const emojiMenuMarkup = `\n      <div class=\"emoji-menu ${this.menuClass}\">\n        <input type=\"text\" name=\"emoji-menu-search\" value=\"\" class=\"js-emoji-menu-search emoji-search search-input form-control\" placeholder=\"Search emoji\" />\n\n        <div class=\"emoji-menu-content\">\n          ${frequentlyUsedCatgegory}\n          ${firstCategory}\n        </div>\n      </div>\n    `;\n\n    const targetEl = this.targetContainerEl ? this.targetContainerEl : document.body;\n    // eslint-disable-next-line no-unsanitized/method\n    targetEl.insertAdjacentHTML('beforeend', emojiMenuMarkup);\n\n    this.addRemainingEmojiMenuCategories();\n    this.setupSearch();\n    if (callback) {\n      callback();\n    }\n  }\n\n  addRemainingEmojiMenuCategories() {\n    if (this.isAddingRemainingEmojiMenuCategories) {\n      return;\n    }\n    this.isAddingRemainingEmojiMenuCategories = true;\n\n    const categoryMap = this.emoji.getEmojiCategoryMap();\n\n    // Avoid the jank and render the remaining categories separately\n    // This will take more time, but makes UI more responsive\n    const menu = document.querySelector(`.${this.menuClass}`);\n    const emojiContentElement = menu.querySelector('.emoji-menu-content');\n    const remainingCategories = Object.keys(categoryMap).slice(1);\n    const allCategoriesAddedPromise = remainingCategories.reduce(\n      (promiseChain, categoryNameKey) =>\n        promiseChain.then(\n          () =>\n            new Promise((resolve) => {\n              const emojisInCategory = categoryMap[categoryNameKey];\n              const categoryMarkup = this.renderCategory(\n                categoryLabelMap[categoryNameKey],\n                emojisInCategory,\n              );\n              requestAnimationFrame(() => {\n                // eslint-disable-next-line no-unsanitized/method\n                emojiContentElement.insertAdjacentHTML('beforeend', categoryMarkup);\n                resolve();\n              });\n            }),\n        ),\n      Promise.resolve(),\n    );\n\n    allCategoriesAddedPromise\n      .then(() => {\n        // Used for tests\n        // We check for the menu in case it was destroyed in the meantime\n        if (menu) {\n          menu.dispatchEvent(new CustomEvent('build-emoji-menu-finish'));\n        }\n      })\n      .catch((err) => {\n        emojiContentElement.insertAdjacentHTML(\n          'beforeend',\n          '<p>We encountered an error while adding the remaining categories</p>',\n        );\n        throw new Error(`Error occurred in addRemainingEmojiMenuCategories: ${err.message}`);\n      });\n  }\n\n  renderCategory(name, emojiList, opts = {}) {\n    return `\n      <h5 class=\"emoji-menu-title\">\n        ${escape(name)}\n      </h5>\n      <ul class=\"clearfix emoji-menu-list ${opts.frequentEmojis ? 'frequent-emojis' : ''}\">\n        ${emojiList\n          .map(\n            (emojiName) => `\n          <li class=\"emoji-menu-list-item\">\n            <button class=\"emoji-menu-btn text-center js-emoji-btn\" type=\"button\">\n              ${this.emoji.glEmojiTag(emojiName, {\n                sprite: true,\n              })}\n            </button>\n          </li>\n        `,\n          )\n          .join('\\n')}\n      </ul>\n    `;\n  }\n\n  positionMenu($menu, $addBtn) {\n    if (this.targetContainerEl) {\n      return $menu.css({\n        top: `${$addBtn.outerHeight()}px`,\n      });\n    }\n\n    const position = $addBtn.data('position');\n    // The menu could potentially be off-screen or in a hidden overflow element\n    // So we position the element absolute in the body\n    const css = {\n      top: `${$addBtn.offset().top + $addBtn.outerHeight()}px`,\n    };\n    // for xs screen we position the element on center\n    if (bp.getBreakpointSize() === 'xs' || bp.getBreakpointSize() === 'sm') {\n      css.left = '5%';\n    } else if (position === 'right') {\n      css.left = `${$addBtn.offset().left - $menu.outerWidth() + 20}px`;\n      $menu.addClass('is-aligned-right');\n    } else {\n      css.left = `${$addBtn.offset().left}px`;\n      $menu.removeClass('is-aligned-right');\n    }\n    return $menu.css(css);\n  }\n\n  // eslint-disable-next-line max-params\n  addAward(votesBlock, awardUrl, emoji, callback) {\n    const isMainAwardsBlock = votesBlock.closest('.js-noteable-awards').length;\n\n    if (isInVueNoteablePage() && !isMainAwardsBlock) {\n      const id = votesBlock.attr('id').replace('note_', '');\n\n      this.hideMenuElement($(`.${this.menuClass}`));\n\n      $(`${this.toggleButtonSelector}.is-active`).removeClass('is-active');\n      const toggleAwardEvent = new CustomEvent('toggleAward', {\n        detail: {\n          awardName: emoji,\n          noteId: id,\n        },\n      });\n\n      document.querySelector('.js-vue-notes-event').dispatchEvent(toggleAwardEvent);\n    }\n\n    const normalizedEmoji = this.emoji.normalizeEmojiName(emoji);\n    const $emojiButton = this.findEmojiIcon(votesBlock, normalizedEmoji).closest('button');\n\n    this.postEmoji($emojiButton, awardUrl, normalizedEmoji, () => {\n      this.addAwardToEmojiBar(votesBlock, normalizedEmoji);\n      return typeof callback === 'function' ? callback() : undefined;\n    });\n\n    this.hideMenuElement($(`.${this.menuClass}`));\n\n    return $(`${this.toggleButtonSelector}.is-active`).removeClass('is-active');\n  }\n\n  addAwardToEmojiBar(votesBlock, emoji) {\n    this.addEmojiToFrequentlyUsedList(emoji);\n    const normalizedEmoji = this.emoji.normalizeEmojiName(emoji);\n    const $emojiButton = this.findEmojiIcon(votesBlock, normalizedEmoji).closest('button');\n    if ($emojiButton.length > 0) {\n      if (this.isActive($emojiButton)) {\n        this.decrementCounter($emojiButton, normalizedEmoji);\n      } else {\n        const counter = $emojiButton.find('.js-counter');\n        counter.text(parseInt(counter.text(), 10) + 1);\n        $emojiButton.addClass('active');\n        this.addYouToUserList(votesBlock, normalizedEmoji);\n        this.animateEmoji($emojiButton);\n      }\n    } else {\n      votesBlock.removeClass('hidden');\n      this.createEmoji(votesBlock, normalizedEmoji);\n    }\n  }\n\n  getVotesBlock() {\n    if (isInVueNoteablePage()) {\n      const $el = $(`${this.toggleButtonSelector}.is-active`).closest('.note.timeline-entry');\n\n      if ($el.length) {\n        return $el;\n      }\n    }\n\n    const currentBlock = $('.js-awards-block.current');\n    let resultantVotesBlock = currentBlock;\n    if (currentBlock.length === 0) {\n      resultantVotesBlock = $('.js-awards-block').eq(0);\n    }\n\n    return resultantVotesBlock;\n  }\n\n  getAwardUrl() {\n    return this.getVotesBlock().data('awardUrl');\n  }\n\n  isActive($emojiButton) {\n    return $emojiButton.hasClass('active');\n  }\n\n  decrementCounter($emojiButton, emoji) {\n    const counter = $('.js-counter', $emojiButton);\n    const counterNumber = parseInt(counter.text(), 10);\n    if (counterNumber > 1) {\n      counter.text(counterNumber - 1);\n      this.removeYouFromUserList($emojiButton);\n    } else if (emoji === EMOJI_THUMBS_UP || emoji === EMOJI_THUMBS_DOWN) {\n      dispose($emojiButton);\n      counter.text('0');\n      this.removeYouFromUserList($emojiButton);\n      if ($emojiButton.parents('.note').length) {\n        this.removeEmoji($emojiButton);\n      }\n    } else {\n      this.removeEmoji($emojiButton);\n    }\n    return $emojiButton.removeClass('active');\n  }\n\n  removeEmoji($emojiButton) {\n    dispose($emojiButton);\n\n    $emojiButton.remove();\n    const $votesBlock = this.getVotesBlock();\n    if ($votesBlock.find('.js-emoji-btn').length === 0) {\n      $votesBlock.addClass('hidden');\n    }\n  }\n\n  getAwardTooltip($awardBlock) {\n    return $awardBlock.attr('data-original-title') || $awardBlock.attr('data-title') || '';\n  }\n\n  toSentence(list) {\n    let sentence;\n    if (list.length <= 2) {\n      sentence = list.join(' and ');\n    } else {\n      sentence = `${list.slice(0, -1).join(', ')}, and ${list[list.length - 1]}`;\n    }\n\n    return sentence;\n  }\n\n  removeYouFromUserList($emojiButton) {\n    const awardBlock = $emojiButton;\n    const originalTitle = this.getAwardTooltip(awardBlock);\n    const authors = originalTitle.split(FROM_SENTENCE_REGEX);\n    authors.splice(authors.indexOf('You'), 1);\n\n    awardBlock\n      .closest('.js-emoji-btn')\n      .removeData('title')\n      .removeAttr('data-title')\n      .removeAttr('data-original-title')\n      .attr('title', this.toSentence(authors));\n\n    fixTitle(awardBlock);\n\n    return awardBlock;\n  }\n\n  addYouToUserList(votesBlock, emoji) {\n    const awardBlock = this.findEmojiIcon(votesBlock, emoji).closest('button');\n    const origTitle = this.getAwardTooltip(awardBlock);\n    let users = [];\n    if (origTitle) {\n      users = origTitle.trim().split(FROM_SENTENCE_REGEX);\n    }\n    users.unshift('You');\n\n    awardBlock.attr('title', this.toSentence(users));\n\n    fixTitle(awardBlock);\n\n    return awardBlock;\n  }\n\n  createAwardButtonForVotesBlock(votesBlock, emojiName) {\n    const buttonHtml = `\n      <button class=\"gl-button btn btn-default award-control js-emoji-btn has-tooltip active\" title=\"You\">\n        ${this.emoji.glEmojiTag(emojiName)}\n        <span class=\"award-control-text js-counter\">1</span>\n      </button>\n    `;\n    const $emojiButton = $(buttonHtml);\n    $emojiButton\n      .insertBefore(votesBlock.find('.js-award-holder'))\n      .find('.emoji-icon')\n      .data('name', emojiName);\n    this.animateEmoji($emojiButton);\n\n    votesBlock.removeClass('current');\n  }\n\n  animateEmoji($emoji) {\n    const className = 'pulse animated once short';\n    $emoji.addClass(className);\n\n    this.registerEventListener('on', $emoji, animationEndEventString, (e) => {\n      $(e.currentTarget).removeClass(className);\n    });\n  }\n\n  createEmoji(votesBlock, emoji) {\n    if ($(`.${this.menuClass}`).length) {\n      this.createAwardButtonForVotesBlock(votesBlock, emoji);\n    }\n    this.createEmojiMenu(() => {\n      this.createAwardButtonForVotesBlock(votesBlock, emoji);\n    });\n  }\n\n  // eslint-disable-next-line max-params\n  postEmoji($emojiButton, awardUrl, emoji, callback) {\n    axios\n      .post(awardUrl, {\n        name: emoji,\n      })\n      .then(({ data }) => {\n        if (data.ok) {\n          callback();\n        }\n      })\n      .catch(() =>\n        createAlert({\n          message: __('Something went wrong on our end.'),\n        }),\n      );\n  }\n\n  findEmojiIcon(votesBlock, emoji) {\n    return votesBlock.find(`.js-emoji-btn [data-name=\"${emoji}\"]`);\n  }\n\n  scrollToAwards() {\n    scrollToElement('.awards', { offset: -110 });\n  }\n\n  addEmojiToFrequentlyUsedList(emoji) {\n    if (this.emoji.isEmojiNameValid(emoji)) {\n      this.frequentlyUsedEmojis = uniq(this.getFrequentlyUsedEmojis().concat(emoji));\n      localStorage.setItem(FREQUENTLY_USED_EMOJIS_STORAGE_KEY, this.frequentlyUsedEmojis.join(','));\n    }\n  }\n\n  getFrequentlyUsedEmojis() {\n    return (\n      this.frequentlyUsedEmojis ||\n      (() => {\n        const frequentlyUsedEmojis = uniq(\n          (localStorage.getItem(FREQUENTLY_USED_EMOJIS_STORAGE_KEY) || '').split(','),\n        );\n        this.frequentlyUsedEmojis = frequentlyUsedEmojis.filter((inputName) =>\n          this.emoji.isEmojiNameValid(inputName),\n        );\n\n        return this.frequentlyUsedEmojis;\n      })()\n    );\n  }\n\n  setupSearch() {\n    const $search = $('.js-emoji-menu-search');\n\n    this.registerEventListener('on', $search, 'input', (e) => {\n      const term = $(e.target).val().trim();\n      this.searchEmojis(term);\n    });\n\n    const $menu = $(`.${this.menuClass}`);\n    this.registerEventListener('on', $menu, transitionEndEventString, (e) => {\n      if (e.target === e.currentTarget) {\n        // Clear the search\n        this.searchEmojis('');\n      }\n    });\n  }\n\n  searchEmojis(term) {\n    const $search = $('.js-emoji-menu-search');\n    $search.val(term);\n\n    // Clean previous search results\n    $('ul.emoji-menu-search, h5.emoji-search-title').remove();\n    if (term.length > 0) {\n      // Generate a search result block\n      const h5 = $('<h5 class=\"emoji-search-title\"/>').text('Search results');\n      const foundEmojis = this.findMatchingEmojiElements(term).show();\n      const ul = $('<ul>').addClass('emoji-menu-list emoji-menu-search').append(foundEmojis);\n      $('.emoji-menu-content ul, .emoji-menu-content h5').hide();\n      $('.emoji-menu-content').append(h5).append(ul);\n    } else {\n      $('.emoji-menu-content').children().show();\n    }\n  }\n\n  getEmojiScore(emojis, value) {\n    const elem = $(value).find('[data-name]').get(0);\n    const emoji = emojis.filter((x) => x.emoji.name === elem.dataset.name)[0];\n    elem.dataset.score = emoji.score;\n\n    return emoji.score;\n  }\n\n  sortEmojiElements(emojis, $elements) {\n    const scores = new WeakMap();\n\n    return $elements.sort((a, b) => {\n      let aScore = scores.get(a);\n      let bScore = scores.get(b);\n\n      if (!aScore) {\n        aScore = this.getEmojiScore(emojis, a);\n        scores.set(a, aScore);\n      }\n\n      if (!bScore) {\n        bScore = this.getEmojiScore(emojis, b);\n        scores.set(b, bScore);\n      }\n\n      return aScore - bScore;\n    });\n  }\n\n  findMatchingEmojiElements(query) {\n    const matchingEmoji = this.emoji\n      .searchEmoji(query)\n      .map((x) => ({ ...x, score: getEmojiScoreWithIntent(x.emoji.name, x.score) }));\n    const matchingEmojiNames = matchingEmoji.map((x) => x.emoji.name);\n    const $emojiElements = $('.emoji-menu-list:not(.frequent-emojis) [data-name]');\n    const $matchingElements = $emojiElements.filter(\n      (i, elm) => matchingEmojiNames.indexOf(elm.dataset.name) >= 0,\n    );\n    return this.sortEmojiElements(matchingEmoji, $matchingElements.closest('li').clone());\n  }\n\n  /* showMenuElement and hideMenuElement are performance optimizations. We use\n   * opacity to show/hide the emoji menu, because we can animate it. But opacity\n   * leaves hidden elements in the render tree, which is unacceptable given the number\n   * of emoji elements in the emoji menu (5k+). To get the best of both worlds, we separately\n   * apply IS_RENDERED to add/remove the menu from the render tree and IS_VISIBLE to animate\n   * the menu being opened and closed. */\n\n  showMenuElement($emojiMenu) {\n    $emojiMenu.addClass(IS_RENDERED);\n\n    // enqueues animation as a microtask, so it begins ASAP once IS_RENDERED added\n    return Promise.resolve().then(() => $emojiMenu.addClass(IS_VISIBLE));\n  }\n\n  hideMenuElement($emojiMenu) {\n    $emojiMenu.on(transitionEndEventString, (e) => {\n      if (e.currentTarget === e.target) {\n        // eslint-disable-next-line @gitlab/no-global-event-off\n        $emojiMenu.removeClass(IS_RENDERED).off(transitionEndEventString);\n      }\n    });\n\n    $emojiMenu.removeClass(IS_VISIBLE);\n  }\n\n  destroy() {\n    this.eventListeners.forEach((entry) => {\n      entry.element.off.call(entry.element, ...entry.args);\n    });\n    $(`.${this.menuClass}`).remove();\n  }\n}\n\nlet awardsHandlerPromise = null;\nexport default function loadAwardsHandler(reload = false) {\n  if (!awardsHandlerPromise || reload) {\n    awardsHandlerPromise = Emoji.initEmojiMap().then(() => {\n      const awardsHandler = new AwardsHandler(Emoji);\n      awardsHandler.bindEvents();\n      return awardsHandler;\n    });\n  }\n  return awardsHandlerPromise;\n}\n","export const SET_INITIAL_DATA = 'SET_INITIAL_DATA';\n\nexport const FETCH_AWARDS_SUCCESS = 'FETCH_AWARDS_SUCCESS';\n\nexport const ADD_NEW_AWARD = 'ADD_NEW_AWARD';\nexport const REMOVE_AWARD = 'REMOVE_AWARD';\n","import * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport axios from '~/lib/utils/axios_utils';\nimport { normalizeHeaders } from '~/lib/utils/common_utils';\nimport { joinPaths } from '~/lib/utils/url_utility';\nimport {\n  SET_INITIAL_DATA,\n  FETCH_AWARDS_SUCCESS,\n  ADD_NEW_AWARD,\n  REMOVE_AWARD,\n} from './mutation_types';\n\nexport const setInitialData = ({ commit }, data) => commit(SET_INITIAL_DATA, data);\n\nexport const fetchAwards = async ({ commit, dispatch, state }, page = '1') => {\n  try {\n    const { data, headers } = await axios.get(joinPaths(gon.relative_url_root || '', state.path), {\n      params: { per_page: 100, page },\n    });\n    const normalizedHeaders = normalizeHeaders(headers);\n    const nextPage = normalizedHeaders['X-NEXT-PAGE'];\n\n    commit(FETCH_AWARDS_SUCCESS, data);\n\n    if (nextPage) {\n      dispatch('fetchAwards', nextPage);\n    }\n  } catch (error) {\n    Sentry.captureException(error);\n  }\n};\n\n/**\n * Creates an intermediary award, used for display\n * until the real award is loaded from the backend.\n */\nconst newOptimisticAward = (name, state) => {\n  const freeId = Math.min(...state.awards.map((a) => a.id), Number.MAX_SAFE_INTEGER) - 1;\n  return {\n    id: freeId,\n    name,\n    user: {\n      id: window.gon.current_user_id,\n      name: window.gon.current_user_fullname,\n      username: window.gon.current_username,\n    },\n  };\n};\n\nexport const toggleAward = async ({ commit, state }, name) => {\n  const award = state.awards.find((a) => a.name === name && a.user.id === state.currentUserId);\n\n  try {\n    if (award) {\n      commit(REMOVE_AWARD, award.id);\n\n      await axios\n        .delete(joinPaths(gon.relative_url_root || '', `${state.path}/${award.id}`))\n        .catch((err) => {\n          commit(ADD_NEW_AWARD, award);\n\n          throw err;\n        });\n    } else {\n      const optimisticAward = newOptimisticAward(name, state);\n\n      commit(ADD_NEW_AWARD, optimisticAward);\n\n      const { data } = await axios\n        .post(joinPaths(gon.relative_url_root || '', state.path), {\n          name,\n        })\n        .finally(() => {\n          commit(REMOVE_AWARD, optimisticAward.id);\n        });\n\n      commit(ADD_NEW_AWARD, data);\n    }\n  } catch (error) {\n    Sentry.captureException(error);\n  }\n};\n","import {\n  SET_INITIAL_DATA,\n  FETCH_AWARDS_SUCCESS,\n  ADD_NEW_AWARD,\n  REMOVE_AWARD,\n} from './mutation_types';\n\nexport default {\n  [SET_INITIAL_DATA](state, { path, currentUserId, canAwardEmoji }) {\n    state.path = path;\n    state.currentUserId = currentUserId;\n    state.canAwardEmoji = canAwardEmoji;\n  },\n  [FETCH_AWARDS_SUCCESS](state, data) {\n    state.awards.push(...data);\n  },\n  [ADD_NEW_AWARD](state, data) {\n    state.awards.push(data);\n  },\n  [REMOVE_AWARD](state, awardId) {\n    state.awards = state.awards.filter(({ id }) => id !== awardId);\n  },\n};\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport * as actions from './actions';\nimport mutations from './mutations';\n\nVue.use(Vuex);\n\nconst createState = () => ({\n  awards: [],\n  awardPath: '',\n  currentUserId: null,\n  canAwardEmoji: false,\n});\n\nexport default () =>\n  new Vuex.Store({\n    state: createState(),\n    actions,\n    mutations,\n  });\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapState } from 'vuex';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport AwardsList from '~/vue_shared/components/awards_list.vue';\nimport { EMOJI_THUMBS_UP, EMOJI_THUMBS_DOWN } from '~/emoji/constants';\nimport createstore from './store';\n\nexport default (el) => {\n  if (!el) return null;\n\n  const {\n    dataset: { path, newCustomEmojiPath },\n  } = el;\n  const canAwardEmoji = parseBoolean(el.dataset.canAwardEmoji);\n  const showDefaultAwardEmojis = parseBoolean(el.dataset.showDefaultAwardEmojis);\n\n  return new Vue({\n    el,\n    name: 'AwardsListRoot',\n    store: createstore(),\n    provide: {\n      newCustomEmojiPath,\n    },\n    computed: {\n      ...mapState(['currentUserId', 'canAwardEmoji', 'awards']),\n    },\n    created() {\n      this.setInitialData({ path, currentUserId: window.gon.current_user_id, canAwardEmoji });\n    },\n    mounted() {\n      this.fetchAwards();\n    },\n    methods: {\n      ...mapActions(['setInitialData', 'fetchAwards', 'toggleAward']),\n    },\n    render(createElement) {\n      return createElement(AwardsList, {\n        props: {\n          awards: this.awards,\n          canAwardEmoji: this.canAwardEmoji,\n          currentUserId: this.currentUserId,\n          defaultAwards: showDefaultAwardEmojis ? [EMOJI_THUMBS_UP, EMOJI_THUMBS_DOWN] : [],\n          selectedClass: 'selected',\n        },\n        on: {\n          award: this.toggleAward,\n        },\n      });\n    },\n  });\n};\n","import { property, isEqual } from 'lodash';\nimport { diffModes, diffViewerModes } from '~/ide/constants';\nimport {\n  LINE_POSITION_LEFT,\n  LINE_POSITION_RIGHT,\n  TEXT_DIFF_POSITION_TYPE,\n  LEGACY_DIFF_NOTE_TYPE,\n  DIFF_NOTE_TYPE,\n  NEW_LINE_TYPE,\n  OLD_LINE_TYPE,\n  MATCH_LINE_TYPE,\n  INLINE_DIFF_LINES_KEY,\n  CONFLICT_OUR,\n  CONFLICT_THEIR,\n  CONFLICT_MARKER,\n  CONFLICT_MARKER_OUR,\n  CONFLICT_MARKER_THEIR,\n  EXPANDED_LINE_TYPE,\n} from '../constants';\nimport { prepareRawDiffFile } from '../utils/diff_file';\nimport { extractFileHash } from '../utils/merge_request';\n\nexport const isAdded = (line) => ['new', 'new-nonewline'].includes(line.type);\nexport const isRemoved = (line) => ['old', 'old-nonewline'].includes(line.type);\nexport const isUnchanged = (line) => !line.type;\nexport const isMeta = (line) =>\n  ['match', EXPANDED_LINE_TYPE, 'new-nonewline', 'old-nonewline'].includes(line.type);\nexport const isConflictMarker = (line) =>\n  [CONFLICT_MARKER_OUR, CONFLICT_MARKER_THEIR].includes(line.type);\nexport const isConflictSeperator = (line) => line.type === CONFLICT_MARKER;\nexport const isConflictOur = (line) => line.type === CONFLICT_OUR;\nexport const isConflictTheir = (line) => line.type === CONFLICT_THEIR;\n\n/**\n * Pass in the inline diff lines array which gets converted\n * to the parallel diff lines.\n * This allows for us to convert inline diff lines to parallel\n * on the frontend without needing to send any requests\n * to the API.\n *\n * This method has been taken from the already existing backend\n * implementation at lib/gitlab/diff/parallel_diff.rb\n *\n * @param {Object[]} diffLines - inline diff lines\n *\n * @param {Boolean} inline - is inline context or not\n *\n * @returns {Object[]} parallel lines\n */\n\nexport const parallelizeDiffLines = (diffLines, inline) => {\n  let freeRightIndex = null;\n  let conflictStartIndex = -1;\n  const lines = [];\n\n  // `chunk` is used for dragging to select diff lines\n  // we are restricting commenting to only lines that appear between\n  // \"expansion rows\". Here equal chunks are lines grouped together\n  // inbetween expansion rows.\n  let chunk = 0;\n\n  for (let i = 0, diffLinesLength = diffLines.length, index = 0; i < diffLinesLength; i += 1) {\n    const line = diffLines[i];\n    line.chunk = chunk;\n\n    if (isMeta(line) && line.type !== EXPANDED_LINE_TYPE) chunk += 1;\n\n    if (isRemoved(line) || isConflictOur(line) || inline) {\n      lines.push({\n        [LINE_POSITION_LEFT]: line,\n        [LINE_POSITION_RIGHT]: null,\n      });\n\n      if (freeRightIndex === null) {\n        // Once we come upon a new line it can be put on the right of this old line\n        freeRightIndex = index;\n      }\n      index += 1;\n    } else if (isAdded(line) || isConflictTheir(line)) {\n      if (freeRightIndex !== null) {\n        // If an old line came before this without a line on the right, this\n        // line can be put to the right of it.\n        lines[freeRightIndex].right = line;\n\n        // If there are any other old lines on the left that don't yet have\n        // a new counterpart on the right, update the free_right_index\n        const nextFreeRightIndex = freeRightIndex + 1;\n        freeRightIndex = nextFreeRightIndex < index ? nextFreeRightIndex : null;\n      } else {\n        lines.push({\n          [LINE_POSITION_LEFT]: null,\n          [LINE_POSITION_RIGHT]: line,\n        });\n\n        freeRightIndex = null;\n        index += 1;\n      }\n    } else if (\n      isMeta(line) ||\n      isUnchanged(line) ||\n      isConflictMarker(line) ||\n      (isConflictSeperator(line) && inline)\n    ) {\n      if (conflictStartIndex <= 0) {\n        // line in the right panel is the same as in the left one\n        lines.push({\n          [LINE_POSITION_LEFT]: line,\n          [LINE_POSITION_RIGHT]: !inline && line,\n        });\n\n        if (!inline && isConflictMarker(line)) {\n          conflictStartIndex = index;\n        }\n        freeRightIndex = null;\n        index += 1;\n      } else {\n        lines[conflictStartIndex][LINE_POSITION_RIGHT] = line;\n        conflictStartIndex = -1;\n      }\n    }\n  }\n\n  return lines;\n};\n\nexport function findDiffFile(files, match, matchKey = 'file_hash') {\n  return files.find((file) => file[matchKey] === match);\n}\n\nexport function getFormData(params) {\n  const {\n    commit,\n    note,\n    noteableType,\n    noteableData,\n    diffFile,\n    noteTargetLine,\n    diffViewType,\n    linePosition,\n    positionType,\n    lineRange,\n    showWhitespace,\n  } = params;\n\n  const position = JSON.stringify({\n    base_sha: diffFile.diff_refs.base_sha,\n    start_sha: diffFile.diff_refs.start_sha,\n    head_sha: diffFile.diff_refs.head_sha,\n    old_path: diffFile.old_path,\n    new_path: diffFile.new_path,\n    position_type: positionType || TEXT_DIFF_POSITION_TYPE,\n    old_line: noteTargetLine ? noteTargetLine.old_line : null,\n    new_line: noteTargetLine ? noteTargetLine.new_line : null,\n    x: params.x,\n    y: params.y,\n    width: params.width,\n    height: params.height,\n    line_range: lineRange,\n    ignore_whitespace_change: diffFile.whitespaceOnlyChange ? false : !showWhitespace,\n  });\n\n  const postData = {\n    view: diffViewType,\n    line_type: linePosition === LINE_POSITION_RIGHT ? NEW_LINE_TYPE : OLD_LINE_TYPE,\n    merge_request_diff_head_sha: diffFile.diff_refs.head_sha,\n    in_reply_to_discussion_id: '',\n    note_project_id: '',\n    target_type: noteableData.targetType,\n    target_id: noteableData.id,\n    return_discussion: true,\n    note: {\n      note,\n      position,\n      noteable_type: noteableType,\n      noteable_id: noteableData.id,\n      commit_id: commit && commit.id,\n      type:\n        diffFile.diff_refs.start_sha && diffFile.diff_refs.head_sha\n          ? DIFF_NOTE_TYPE\n          : LEGACY_DIFF_NOTE_TYPE,\n      line_code: noteTargetLine ? noteTargetLine.line_code : null,\n    },\n  };\n\n  return postData;\n}\n\nexport function getNoteFormData(params) {\n  const data = getFormData(params);\n\n  return {\n    endpoint: params.noteableData.create_note_path,\n    data,\n  };\n}\n\nexport const findIndexInInlineLines = (lines, lineNumbers) => {\n  const { oldLineNumber, newLineNumber } = lineNumbers;\n\n  return lines.findIndex(\n    (line) => line.old_line === oldLineNumber && line.new_line === newLineNumber,\n  );\n};\n\nexport const getPreviousLineIndex = (file, lineNumbers) => {\n  return findIndexInInlineLines(file[INLINE_DIFF_LINES_KEY], lineNumbers);\n};\n\nexport function removeMatchLine(diffFile, lineNumbers, bottom) {\n  const indexForInline = findIndexInInlineLines(diffFile[INLINE_DIFF_LINES_KEY], lineNumbers);\n  const factor = bottom ? 1 : -1;\n\n  if (indexForInline > -1) {\n    diffFile[INLINE_DIFF_LINES_KEY].splice(indexForInline + factor, 1);\n  }\n}\n\n// eslint-disable-next-line max-params\nexport function addLineReferences(lines, lineNumbers, bottom, isExpandDown, nextLineNumbers) {\n  const { oldLineNumber, newLineNumber } = lineNumbers;\n  const lineCount = lines.length;\n  let matchLineIndex = -1;\n\n  const linesWithNumbers = lines.map((l, index) => {\n    if (l.type === MATCH_LINE_TYPE) {\n      matchLineIndex = index;\n    } else {\n      Object.assign(l, {\n        old_line: bottom ? oldLineNumber + index + 1 : oldLineNumber + index - lineCount,\n        new_line: bottom ? newLineNumber + index + 1 : newLineNumber + index - lineCount,\n      });\n    }\n    return l;\n  });\n\n  if (matchLineIndex > -1) {\n    const line = linesWithNumbers[matchLineIndex];\n    let targetLine;\n\n    if (isExpandDown) {\n      targetLine = nextLineNumbers;\n    } else if (bottom) {\n      targetLine = linesWithNumbers[matchLineIndex - 1];\n    } else {\n      targetLine = linesWithNumbers[matchLineIndex + 1];\n    }\n\n    Object.assign(line, {\n      meta_data: {\n        old_pos: targetLine.old_line,\n        new_pos: targetLine.new_line,\n      },\n    });\n  }\n  return linesWithNumbers;\n}\n\nfunction addInlineContextLines(options) {\n  const { inlineLines, contextLines, lineNumbers, isExpandDown } = options;\n  const factor = isExpandDown ? 1 : 0;\n\n  if (!isExpandDown && options.bottom) {\n    inlineLines.push(...contextLines);\n  } else {\n    const inlineIndex = findIndexInInlineLines(inlineLines, lineNumbers);\n\n    inlineLines.splice(inlineIndex + factor, 0, ...contextLines);\n  }\n}\n\nexport function addContextLines(options) {\n  addInlineContextLines(options);\n}\n\n/**\n * Trims the first char of the `richText` property when it's either a space or a diff symbol.\n * @param {Object} line\n * @returns {Object}\n * @deprecated Use `line.rich_text = line.rich_text ? line.rich_text.replace(/^[+ -]/, '') : undefined;` instead!. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/299329\n */\nexport function trimFirstCharOfLineContent(line = {}) {\n  // eslint-disable-next-line no-param-reassign\n  delete line.text;\n\n  const parsedLine = { ...line };\n\n  if (line.rich_text) {\n    const firstChar = parsedLine.rich_text.charAt(0);\n\n    if (firstChar === ' ' || firstChar === '+' || firstChar === '-') {\n      parsedLine.rich_text = line.rich_text.substring(1);\n    }\n  }\n\n  return parsedLine;\n}\n\nfunction diffFileUniqueId(file) {\n  return `${file.content_sha}-${file.file_hash}`;\n}\n\nfunction mergeTwoFiles(target, source) {\n  const originalInline = target[INLINE_DIFF_LINES_KEY];\n  const missingInline = !originalInline.length;\n\n  return {\n    ...target,\n    [INLINE_DIFF_LINES_KEY]: missingInline ? source[INLINE_DIFF_LINES_KEY] : originalInline,\n    parallel_diff_lines: null,\n    collapsed: source.collapsed,\n  };\n}\n\nfunction ensureBasicDiffFileLines(file) {\n  const missingInline = !file[INLINE_DIFF_LINES_KEY];\n\n  Object.assign(file, {\n    [INLINE_DIFF_LINES_KEY]: missingInline ? [] : file[INLINE_DIFF_LINES_KEY],\n    parallel_diff_lines: null,\n  });\n\n  return file;\n}\n\nfunction cleanRichText(text) {\n  return text ? text.replace(/^[+ -]/, '') : undefined;\n}\n\nfunction prepareLine(line, file) {\n  const problems = {\n    brokenSymlink: file.brokenSymlink,\n    brokenLineCode: !line.line_code,\n    fileOnlyMoved: file.renamed_file && file.added_lines === 0 && file.removed_lines === 0,\n  };\n\n  if (!line.alreadyPrepared) {\n    Object.assign(line, {\n      commentsDisabled: Boolean(\n        problems.brokenSymlink || problems.fileOnlyMoved || problems.brokenLineCode,\n      ),\n      rich_text: cleanRichText(line.rich_text),\n      discussionsExpanded: false,\n      discussions: [],\n      hasForm: false,\n      text: undefined,\n      alreadyPrepared: true,\n      problems,\n    });\n  }\n}\n\nexport function prepareLineForRenamedFile({ line, diffFile, index = 0 }) {\n  /*\n    Renamed files are a little different than other diffs, which\n    is why this is distinct from `prepareDiffFileLines` below.\n\n    We don't get any of the diff file context when we get the diff\n    (so no \"inline\" vs. \"parallel\", no \"line_code\", etc.).\n\n    We can also assume that both the left and the right of each line\n    (for parallel diff view type) are identical, because the file\n    is renamed, not modified.\n\n    This should be cleaned up as part of the effort around flattening our data\n    ==> https://gitlab.com/groups/gitlab-org/-/epics/2852#note_304803402\n  */\n  const lineNumber = index + 1;\n  const cleanLine = {\n    ...line,\n    line_code: `${diffFile.file_hash}_${lineNumber}_${lineNumber}`,\n    new_line: lineNumber,\n    old_line: lineNumber,\n  };\n\n  prepareLine(cleanLine, diffFile); // WARNING: In-Place Mutations!\n\n  return cleanLine;\n}\n\nfunction prepareDiffFileLines(file) {\n  const inlineLines = file[INLINE_DIFF_LINES_KEY];\n\n  inlineLines.forEach((line) => prepareLine(line, file)); // WARNING: In-Place Mutations!\n\n  return file;\n}\n\nfunction finalizeDiffFile(file) {\n  Object.assign(file, {\n    isShowingFullFile: false,\n    isLoadingFullFile: false,\n    discussions: [],\n    renderingLines: false,\n    whitespaceOnlyChange: file.viewer?.whitespace_only,\n  });\n\n  return file;\n}\n\nfunction deduplicateFilesList(files, updatePosition) {\n  const dedupedFiles = files.reduce((newList, file) => {\n    const id = diffFileUniqueId(file);\n    if (updatePosition && id in newList) {\n      // Object.values preserves key order but doesn't update order when writing to the same key\n      // In order to update position of the item we have to delete it first and then add it back\n      const existingFile = newList[id];\n      // eslint-disable-next-line no-param-reassign\n      delete newList[id];\n      return {\n        ...newList,\n        // 'updatePosition' should be set to true only when we want to keep the existing file\n        [id]: existingFile,\n      };\n    }\n\n    return {\n      ...newList,\n      [id]: newList[id] ? mergeTwoFiles(newList[id], file) : file,\n    };\n  }, {});\n\n  return Object.values(dedupedFiles);\n}\n\nexport function prepareDiffData({ diff, priorFiles = [], meta = false, updatePosition = false }) {\n  const transformersChain = [\n    (file, index, allFiles) => prepareRawDiffFile({ file, index, allFiles, meta }),\n    ensureBasicDiffFileLines,\n    prepareDiffFileLines,\n    finalizeDiffFile,\n  ];\n  const cleanedFiles = (diff.diff_files || []).map((file, index, allFiles) => {\n    return transformersChain.reduce((fileResult, transformer) => {\n      return transformer(fileResult, index, allFiles);\n    }, file);\n  });\n\n  return deduplicateFilesList([...priorFiles, ...cleanedFiles], updatePosition);\n}\n\nexport function getDiffPositionByLineCode(diffFiles) {\n  const lines = diffFiles.reduce((acc, diffFile) => {\n    diffFile[INLINE_DIFF_LINES_KEY].forEach((line) => {\n      acc.push({ file: diffFile, line });\n    });\n\n    return acc;\n  }, []);\n\n  return lines.reduce((acc, { file, line }) => {\n    if (line.line_code) {\n      acc[line.line_code] = {\n        base_sha: file.diff_refs.base_sha,\n        head_sha: file.diff_refs.head_sha,\n        start_sha: file.diff_refs.start_sha,\n        new_path: file.new_path,\n        old_path: file.old_path,\n        old_line: line.old_line,\n        new_line: line.new_line,\n        line_range: null,\n        line_code: line.line_code,\n        position_type: 'text',\n      };\n    }\n\n    return acc;\n  }, {});\n}\n\n// This method will check whether the discussion is still applicable\n// to the diff line in question regarding different versions of the MR\nexport function isDiscussionApplicableToLine({ discussion, diffPosition, latestDiff }) {\n  if (!diffPosition) {\n    return false;\n  }\n\n  const { line_code, ...dp } = diffPosition;\n  // Removing `line_range` from diffPosition because the backend does not\n  // yet consistently return this property. This check can be removed,\n  // once this is addressed. see https://gitlab.com/gitlab-org/gitlab/-/issues/213010\n  const { line_range: dpNotUsed, ...diffPositionCopy } = dp;\n\n  if (discussion.original_position && discussion.position) {\n    const discussionPositions = [\n      discussion.original_position,\n      discussion.position,\n      ...(discussion.positions || []),\n    ];\n\n    const removeLineRange = (position) => {\n      const { line_range: pNotUsed, ...positionNoLineRange } = position;\n      return positionNoLineRange;\n    };\n\n    return discussionPositions\n      .map(removeLineRange)\n      .some((position) => isEqual(position, diffPositionCopy));\n  }\n\n  // eslint-disable-next-line\n  return latestDiff && discussion.active && line_code === discussion.line_code;\n}\n\nexport const getDiffMode = (diffFile) => {\n  const diffModeKey = Object.keys(diffModes).find((key) => diffFile[`${key}_file`]);\n  return (\n    diffModes[diffModeKey] ||\n    (diffFile.viewer?.name === diffViewerModes.mode_changed && diffViewerModes.mode_changed) ||\n    (diffFile.viewer?.name === diffViewerModes.no_preview && diffViewerModes.no_preview) ||\n    diffModes.replaced\n  );\n};\n\nexport const convertExpandLines = ({\n  diffLines,\n  data,\n  typeKey,\n  oldLineKey,\n  newLineKey,\n  mapLine,\n}) => {\n  const dataLength = data.length;\n  const lines = [];\n\n  for (let i = 0, diffLinesLength = diffLines.length; i < diffLinesLength; i += 1) {\n    const line = diffLines[i];\n\n    if (property(typeKey)(line) === 'match') {\n      const beforeLine = diffLines[i - 1];\n      const afterLine = diffLines[i + 1];\n      const newLineProperty = property(newLineKey);\n      const beforeLineIndex = newLineProperty(beforeLine) || 0;\n      const afterLineIndex = newLineProperty(afterLine) - 1 || dataLength;\n\n      lines.push(\n        ...data.slice(beforeLineIndex, afterLineIndex).map((l, index) =>\n          mapLine({\n            line: Object.assign(l, { hasForm: false, discussions: [] }),\n            oldLine: (property(oldLineKey)(beforeLine) || 0) + index + 1,\n            newLine: (newLineProperty(beforeLine) || 0) + index + 1,\n          }),\n        ),\n      );\n    } else {\n      lines.push(line);\n    }\n  }\n\n  return lines;\n};\n\nexport const idleCallback = (cb) => requestIdleCallback(cb);\n\nfunction getLinesFromFileByLineCode(file, lineCode) {\n  const inlineLines = file[INLINE_DIFF_LINES_KEY];\n  const matchesCode = (line) => line.line_code === lineCode;\n\n  return inlineLines.filter(matchesCode);\n}\n\nexport const updateLineInFile = (selectedFile, lineCode, updateFn) => {\n  getLinesFromFileByLineCode(selectedFile, lineCode).forEach(updateFn);\n};\n\nexport function isUrlHashNoteLink(urlHash = '') {\n  const id = urlHash.replace(/^#/, '');\n\n  return id.startsWith('note');\n}\n\nexport function isUrlHashFileHeader(urlHash = '') {\n  const id = urlHash.replace(/^#/, '');\n\n  return id.startsWith('diff-content');\n}\n\nexport function parseUrlHashAsFileHash(urlHash = '', currentDiffFileId = '') {\n  const hashless = urlHash.replace(/^#/, '');\n  const isNoteLink = isUrlHashNoteLink(hashless);\n  const extractedSha1 = extractFileHash({ input: hashless });\n  let id = extractedSha1;\n\n  if (isNoteLink && currentDiffFileId) {\n    id = currentDiffFileId;\n  } else if (isUrlHashFileHeader(hashless)) {\n    id = hashless.replace('diff-content-', '');\n  } else if (!extractedSha1 || isNoteLink) {\n    id = null;\n  }\n\n  return id;\n}\n\nexport function markTreeEntriesLoaded({ priorEntries, loadedFiles }) {\n  const newEntries = { ...priorEntries };\n\n  loadedFiles.forEach((newFile) => {\n    const entry = newEntries[newFile.new_path];\n\n    if (entry) {\n      entry.diffLoaded = true;\n      entry.diffLoading = false;\n    }\n  });\n\n  return newEntries;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"toggle-replies-widget gl-border-r gl-border-l !gl-flex gl-flex-wrap gl-items-center gl-border-l-section gl-border-r-section gl-bg-subtle gl-px-5 gl-py-2 gl-leading-24\",class:{ '!gl-rounded-b-base gl-text-subtle': _vm.collapsed },attrs:{\"aria-expanded\":_vm.ariaState}},[_c('gl-button',{ref:\"toggle\",staticClass:\"gl-my-2 -gl-ml-3 gl-mr-2 !gl-p-0\",class:{ '!gl-text-link': !_vm.collapsed },attrs:{\"category\":\"tertiary\",\"icon\":_vm.buttonIcon,\"aria-label\":_vm.buttonLabel,\"data-testid\":\"replies-toggle\",\"size\":\"small\"},on:{\"click\":_vm.toggle}}),_vm._v(\" \"),(_vm.collapsed)?[_c('gl-avatars-inline',{staticClass:\"gl-mr-3\",attrs:{\"avatars\":_vm.uniqueAuthors,\"avatar-size\":24,\"max-visible\":5,\"badge-sr-only-text\":\"\"},scopedSlots:_vm._u([{key:\"avatar\",fn:function({ avatar }){return [_c('gl-avatar-link',{staticClass:\"js-user-link\",attrs:{\"target\":\"_blank\",\"href\":avatar.path || avatar.webUrl,\"data-user-id\":avatar.id,\"data-username\":avatar.username}},[_c('gl-avatar',{attrs:{\"size\":24,\"src\":avatar.avatar_url || avatar.avatarUrl,\"alt\":avatar.name}})],1)]}}],null,false,1471887347)}),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-mr-2 gl-self-center\",attrs:{\"variant\":\"link\",\"data-testid\":\"expand-replies-button\"},on:{\"click\":_vm.toggle}},[_vm._v(\"\\n      \"+_vm._s(_vm.n__('%d reply', '%d replies', _vm.replies.length))+\"\\n    \")]),_vm._v(\" \"),_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.lastReplyBy},scopedSlots:_vm._u([{key:\"name\",fn:function(){return [_c('gl-link',{staticClass:\"gl-mx-2 !gl-text-default !gl-no-underline\",attrs:{\"href\":_vm.lastReply.author.path || _vm.lastReply.author.webUrl}},[_vm._v(\"\\n          \"+_vm._s(_vm.lastReply.author.name)+\"\\n        \")])]},proxy:true}],null,false,1142650514)}),_vm._v(\" \"),_c('time-ago-tooltip',{attrs:{\"time\":_vm.lastReply.created_at || _vm.lastReply.createdAt,\"tooltip-placement\":\"bottom\"}})]:_c('gl-button',{staticClass:\"!gl-no-underline\",attrs:{\"variant\":\"link\",\"data-testid\":\"collapse-replies-button\"},on:{\"click\":_vm.toggle}},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.collapseReplies)+\"\\n  \")])],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!./toggle_replies_widget.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!./toggle_replies_widget.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLink, GlSprintf, GlAvatarLink, GlAvatar, GlAvatarsInline } from '@gitlab/ui';\nimport { uniqBy } from 'lodash';\nimport { s__ } from '~/locale';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\n\nexport default {\n  i18n: {\n    collapseReplies: s__('Notes|Collapse replies'),\n    expandReplies: s__('Notes|Expand replies'),\n    lastReplyBy: s__('Notes|Last reply by %{name}'),\n  },\n  components: {\n    GlButton,\n    GlLink,\n    GlSprintf,\n    GlAvatarLink,\n    GlAvatar,\n    GlAvatarsInline,\n    TimeAgoTooltip,\n  },\n  props: {\n    collapsed: {\n      type: Boolean,\n      required: true,\n    },\n    replies: {\n      type: Array,\n      required: true,\n    },\n  },\n  computed: {\n    lastReply() {\n      return this.replies[this.replies.length - 1];\n    },\n    uniqueAuthors() {\n      const authors = this.replies.map((reply) => reply.author || {});\n\n      return uniqBy(authors, 'username');\n    },\n    buttonIcon() {\n      return this.collapsed ? 'chevron-right' : 'chevron-down';\n    },\n    buttonLabel() {\n      return this.collapsed ? this.$options.i18n.expandReplies : this.$options.i18n.collapseReplies;\n    },\n    ariaState() {\n      return String(!this.collapsed);\n    },\n  },\n  methods: {\n    toggle() {\n      this.$refs.toggle.$el.focus();\n      this.$emit('toggle');\n    },\n  },\n};\n</script>\n\n<template>\n  <li\n    :class=\"{ '!gl-rounded-b-base gl-text-subtle': collapsed }\"\n    class=\"toggle-replies-widget gl-border-r gl-border-l !gl-flex gl-flex-wrap gl-items-center gl-border-l-section gl-border-r-section gl-bg-subtle gl-px-5 gl-py-2 gl-leading-24\"\n    :aria-expanded=\"ariaState\"\n  >\n    <gl-button\n      ref=\"toggle\"\n      class=\"gl-my-2 -gl-ml-3 gl-mr-2 !gl-p-0\"\n      :class=\"{ '!gl-text-link': !collapsed }\"\n      category=\"tertiary\"\n      :icon=\"buttonIcon\"\n      :aria-label=\"buttonLabel\"\n      data-testid=\"replies-toggle\"\n      size=\"small\"\n      @click=\"toggle\"\n    />\n    <template v-if=\"collapsed\">\n      <gl-avatars-inline\n        :avatars=\"uniqueAuthors\"\n        :avatar-size=\"24\"\n        :max-visible=\"5\"\n        badge-sr-only-text=\"\"\n        class=\"gl-mr-3\"\n      >\n        <template #avatar=\"{ avatar }\">\n          <gl-avatar-link\n            target=\"_blank\"\n            :href=\"avatar.path || avatar.webUrl\"\n            :data-user-id=\"avatar.id\"\n            :data-username=\"avatar.username\"\n            class=\"js-user-link\"\n          >\n            <gl-avatar :size=\"24\" :src=\"avatar.avatar_url || avatar.avatarUrl\" :alt=\"avatar.name\" />\n          </gl-avatar-link>\n        </template>\n      </gl-avatars-inline>\n      <gl-button\n        class=\"gl-mr-2 gl-self-center\"\n        variant=\"link\"\n        data-testid=\"expand-replies-button\"\n        @click=\"toggle\"\n      >\n        {{ n__('%d reply', '%d replies', replies.length) }}\n      </gl-button>\n      <gl-sprintf :message=\"$options.i18n.lastReplyBy\">\n        <template #name>\n          <gl-link\n            :href=\"lastReply.author.path || lastReply.author.webUrl\"\n            class=\"gl-mx-2 !gl-text-default !gl-no-underline\"\n          >\n            {{ lastReply.author.name }}\n          </gl-link>\n        </template>\n      </gl-sprintf>\n      <time-ago-tooltip\n        :time=\"lastReply.created_at || lastReply.createdAt\"\n        tooltip-placement=\"bottom\"\n      />\n    </template>\n    <gl-button\n      v-else\n      class=\"!gl-no-underline\"\n      variant=\"link\"\n      data-testid=\"collapse-replies-button\"\n      @click=\"toggle\"\n    >\n      {{ $options.i18n.collapseReplies }}\n    </gl-button>\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./toggle_replies_widget.vue?vue&type=template&id=d35dfd08\"\nimport script from \"./toggle_replies_widget.vue?vue&type=script&lang=js\"\nexport * from \"./toggle_replies_widget.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","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n  if (Array.isArray(glob)) {\n    const fns = glob.map(input => picomatch(input, options, returnState));\n    const arrayMatcher = str => {\n      for (const isMatch of fns) {\n        const state = isMatch(str);\n        if (state) return state;\n      }\n      return false;\n    };\n    return arrayMatcher;\n  }\n\n  const isState = isObject(glob) && glob.tokens && glob.input;\n\n  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n    throw new TypeError('Expected pattern to be a non-empty string');\n  }\n\n  const opts = options || {};\n  const posix = utils.isWindows(options);\n  const regex = isState\n    ? picomatch.compileRe(glob, options)\n    : picomatch.makeRe(glob, options, false, true);\n\n  const state = regex.state;\n  delete regex.state;\n\n  let isIgnored = () => false;\n  if (opts.ignore) {\n    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n  }\n\n  const matcher = (input, returnObject = false) => {\n    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n    if (typeof opts.onResult === 'function') {\n      opts.onResult(result);\n    }\n\n    if (isMatch === false) {\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (isIgnored(input)) {\n      if (typeof opts.onIgnore === 'function') {\n        opts.onIgnore(result);\n      }\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (typeof opts.onMatch === 'function') {\n      opts.onMatch(result);\n    }\n    return returnObject ? result : true;\n  };\n\n  if (returnState) {\n    matcher.state = state;\n  }\n\n  return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected input to be a string');\n  }\n\n  if (input === '') {\n    return { isMatch: false, output: '' };\n  }\n\n  const opts = options || {};\n  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n  let match = input === glob;\n  let output = (match && format) ? format(input) : input;\n\n  if (match === false) {\n    output = format ? format(input) : input;\n    match = output === glob;\n  }\n\n  if (match === false || opts.capture === true) {\n    if (opts.matchBase === true || opts.basename === true) {\n      match = picomatch.matchBase(input, regex, options, posix);\n    } else {\n      match = regex.exec(output);\n    }\n  }\n\n  return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n  return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n  return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n *   input: '!./foo/*.js',\n *   start: 3,\n *   base: 'foo',\n *   glob: '*.js',\n *   isBrace: false,\n *   isBracket: false,\n *   isGlob: true,\n *   isExtglob: false,\n *   isGlobstar: false,\n *   negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n  if (returnOutput === true) {\n    return state.output;\n  }\n\n  const opts = options || {};\n  const prepend = opts.contains ? '' : '^';\n  const append = opts.contains ? '' : '$';\n\n  let source = `${prepend}(?:${state.output})${append}`;\n  if (state && state.negated === true) {\n    source = `^(?!${source}).*$`;\n  }\n\n  const regex = picomatch.toRegex(source, options);\n  if (returnState === true) {\n    regex.state = state;\n  }\n\n  return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n  if (!input || typeof input !== 'string') {\n    throw new TypeError('Expected a non-empty string');\n  }\n\n  let parsed = { negated: false, fastpaths: true };\n\n  if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n    parsed.output = parse.fastpaths(input, options);\n  }\n\n  if (!parsed.output) {\n    parsed = parse(input, options);\n  }\n\n  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n  try {\n    const opts = options || {};\n    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n  } catch (err) {\n    if (options && options.debug === true) throw err;\n    return /$^/;\n  }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","var asciiSize = require('./_asciiSize'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n  return hasUnicode(string)\n    ? unicodeSize(string)\n    : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","export const PERFORMANCE_TYPE_MARK = 'mark';\nexport const PERFORMANCE_TYPE_MEASURE = 'measure';\n\n//\n// SNIPPET namespace\n//\n\n// Marks\nexport const SNIPPET_MARK_VIEW_APP_START = 'snippet-view-app-start';\nexport const SNIPPET_MARK_EDIT_APP_START = 'snippet-edit-app-start';\nexport const SNIPPET_MARK_BLOBS_CONTENT = 'snippet-blobs-content-finished';\n\n// Measures\nexport const SNIPPET_MEASURE_BLOBS_CONTENT = 'snippet-blobs-content';\n\n//\n// WebIDE namespace\n//\n\n// Marks\nexport const WEBIDE_MARK_APP_START = 'webide-app-start';\nexport const WEBIDE_MARK_FILE_CLICKED = 'webide-file-clicked';\nexport const WEBIDE_MARK_FILE_FINISH = 'webide-file-finished';\nexport const WEBIDE_MARK_REPO_EDITOR_START = 'webide-init-editor-start';\nexport const WEBIDE_MARK_REPO_EDITOR_FINISH = 'webide-init-editor-finish';\nexport const WEBIDE_MARK_FETCH_BRANCH_DATA_START = 'webide-getBranchData-start';\nexport const WEBIDE_MARK_FETCH_BRANCH_DATA_FINISH = 'webide-getBranchData-finish';\nexport const WEBIDE_MARK_FETCH_FILE_DATA_START = 'webide-getFileData-start';\nexport const WEBIDE_MARK_FETCH_FILE_DATA_FINISH = 'webide-getFileData-finish';\nexport const WEBIDE_MARK_FETCH_FILES_START = 'webide-getFiles-start';\nexport const WEBIDE_MARK_FETCH_FILES_FINISH = 'webide-getFiles-finish';\nexport const WEBIDE_MARK_FETCH_PROJECT_DATA_START = 'webide-getProjectData-start';\nexport const WEBIDE_MARK_FETCH_PROJECT_DATA_FINISH = 'webide-getProjectData-finish';\n\n// Measures\nexport const WEBIDE_MEASURE_FILE_AFTER_INTERACTION = 'webide-file-loading-after-interaction';\nexport const WEBIDE_MEASURE_FETCH_PROJECT_DATA = 'WebIDE: Project data';\nexport const WEBIDE_MEASURE_FETCH_BRANCH_DATA = 'WebIDE: Branch data';\nexport const WEBIDE_MEASURE_FETCH_FILE_DATA = 'WebIDE: File data';\nexport const WEBIDE_MEASURE_BEFORE_VUE = 'WebIDE: Before Vue app';\nexport const WEBIDE_MEASURE_REPO_EDITOR = 'WebIDE: Repo Editor';\nexport const WEBIDE_MEASURE_FETCH_FILES = 'WebIDE: Fetch Files';\n\n//\n// MR Diffs namespace\n//\n\n// Marks\nexport const MR_DIFFS_MARK_FILE_TREE_START = 'mr-diffs-mark-file-tree-start';\nexport const MR_DIFFS_MARK_FILE_TREE_END = 'mr-diffs-mark-file-tree-end';\nexport const MR_DIFFS_MARK_DIFF_FILES_START = 'mr-diffs-mark-diff-files-start';\nexport const MR_DIFFS_MARK_FIRST_DIFF_FILE_SHOWN = 'mr-diffs-mark-first-diff-file-shown';\nexport const MR_DIFFS_MARK_DIFF_FILES_END = 'mr-diffs-mark-diff-files-end';\n\n// Measures\nexport const MR_DIFFS_MEASURE_FILE_TREE_DONE = 'mr-diffs-measure-file-tree-done';\nexport const MR_DIFFS_MEASURE_DIFF_FILES_DONE = 'mr-diffs-measure-diff-files-done';\n\n//\n// Pipelines Detail namespace\n//\n\n// Marks\nexport const PIPELINES_DETAIL_LINKS_MARK_CALCULATE_START =\n  'pipelines-detail-links-mark-calculate-start';\nexport const PIPELINES_DETAIL_LINKS_MARK_CALCULATE_END =\n  'pipelines-detail-links-mark-calculate-end';\n\n// Measures\nexport const PIPELINES_DETAIL_LINKS_MEASURE_CALCULATION =\n  'Pipelines Detail Graph: Links Calculation';\n\n// Metrics\n// Note: These strings must match the backend\n// (defined in: app/services/ci/prometheus_metrics/observe_histograms_service.rb)\nexport const PIPELINES_DETAIL_LINK_DURATION = 'pipeline_graph_link_calculation_duration_seconds';\nexport const PIPELINES_DETAIL_LINKS_TOTAL = 'pipeline_graph_links_total';\nexport const PIPELINES_DETAIL_LINKS_JOB_RATIO = 'pipeline_graph_links_per_job_ratio';\n\n//\n// REPO BROWSER NAMESPACE\n//\n\n// Marks\nexport const REPO_BLOB_LOAD_VIEWER_START = 'blobviewer-load-viewer-start';\nexport const REPO_BLOB_SWITCH_TO_VIEWER_START = 'blobviewer-switch-to-viewerr-start';\nexport const REPO_BLOB_LOAD_VIEWER_FINISH = 'blobviewer-load-viewer-finish';\n\n// Measures\nexport const REPO_BLOB_LOAD_VIEWER = 'Repository File Viewer: loading the viewer';\nexport const REPO_BLOB_SWITCH_VIEWER = 'Repository File Viewer: switching the viewer';\n\n//\n// DESIGN MANAGEMENT NAMESPACE\n//\n\n// Marks\nexport const DESIGN_MARK_APP_START = 'design-app-start';\n\n// Measures\nexport const DESIGN_MEASURE_BEFORE_APP = 'Design Management: Before the Vue app';\nexport const DESIGN_MAIN_IMAGE_OUTPUT = 'Design Management: Single image preview';\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n  return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"commit\",class:{ 'js-toggle-container': _vm.collapsible }},[_c('div',{staticClass:\"gl-block gl-flex-row-reverse gl-items-start gl-justify-between sm:gl-flex\"},[_c('div',{staticClass:\"commit-actions gl-hidden gl-flex-row gl-items-center gl-justify-end sm:gl-flex\"},[(_vm.commit.signature_html)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.commit.signature_html /* eslint-disable-line vue/no-v-html */)}}):_vm._e(),_vm._v(\" \"),(_vm.commit.pipeline_status_path)?_c('commit-pipeline-status',{staticClass:\"mb-2 gl-inline-flex\",attrs:{\"endpoint\":_vm.commit.pipeline_status_path}}):_vm._e(),_vm._v(\" \"),_c('gl-button-group',{staticClass:\"gl-ml-4\",attrs:{\"data-testid\":\"commit-sha-group\"}},[_c('gl-button',{staticClass:\"gl-font-monospace\",attrs:{\"label\":\"\",\"data-testid\":\"commit-sha-short-id\"}},[_vm._v(_vm._s(_vm.commit.short_id))]),_vm._v(\" \"),_c('modal-copy-button',{staticClass:\"input-group-text\",attrs:{\"text\":_vm.commit.id,\"title\":_vm.__('Copy commit SHA')}})],1)],1),_vm._v(\" \"),_c('div',[_c('div',{staticClass:\"float-left align-self-start gl-flex gl-items-center\"},[(_vm.isSelectable)?_c('gl-form-checkbox',{staticClass:\"gl-mt-3\",attrs:{\"checked\":_vm.checked},on:{\"change\":function($event){return _vm.$emit('handleCheckboxChange', !_vm.checked)}}}):_vm._e(),_vm._v(\" \"),_c('user-avatar-link',{staticClass:\"avatar-cell gl-my-2 gl-mr-3 gl-hidden sm:gl-block\",attrs:{\"link-href\":_vm.authorUrl,\"img-src\":_vm.authorAvatar,\"img-alt\":_vm.authorName,\"img-size\":32}})],1),_vm._v(\" \"),_c('div',{staticClass:\"commit-detail flex-list gl-flex gl-min-w-0 gl-grow gl-items-center gl-justify-between\"},[_c('div',{staticClass:\"commit-content\",attrs:{\"data-testid\":\"commit-content\"}},[_c('a',{directives:[{name:\"safe-html\",rawName:\"v-safe-html:[$options.safeHtmlConfig]\",value:(_vm.commit.title_html),expression:\"commit.title_html\",arg:_vm.$options.safeHtmlConfig}],staticClass:\"commit-row-message item-title\",attrs:{\"href\":_vm.commit.commit_url}}),_vm._v(\" \"),_c('span',{staticClass:\"commit-row-message !gl-block sm:!gl-hidden\"},[_vm._v(\"· \"+_vm._s(_vm.commit.short_id))]),_vm._v(\" \"),(_vm.commit.description_html && _vm.collapsible)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"js-toggle-button\",attrs:{\"size\":\"small\",\"icon\":\"ellipsis_h\",\"title\":_vm.__('Toggle commit description'),\"aria-label\":_vm.__('Toggle commit description')}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"committer\"},[_c('a',{class:_vm.authorClass,attrs:{\"href\":_vm.authorUrl,\"data-user-id\":_vm.authorId},domProps:{\"textContent\":_vm._s(_vm.authorName)}}),_vm._v(\"\\n            \"+_vm._s(_vm.s__('CommitWidget|authored'))+\"\\n            \"),_c('time-ago-tooltip',{attrs:{\"time\":_vm.commit.authored_date}})],1)],1)])])]),_vm._v(\" \"),_c('div',[(_vm.commit.description_html)?_c('pre',{directives:[{name:\"safe-html\",rawName:\"v-safe-html:[$options.safeHtmlConfig]\",value:(_vm.commitDescription),expression:\"commitDescription\",arg:_vm.$options.safeHtmlConfig}],staticClass:\"commit-row-description gl-mb-3 gl-whitespace-pre-wrap gl-text-default\",class:{ 'js-toggle-content': _vm.collapsible, '!gl-block': !_vm.collapsible }}):_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!./commit_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./commit_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlButtonGroup, GlButton, GlTooltipDirective, GlFormCheckbox } from '@gitlab/ui';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\n\nimport CommitPipelineStatus from '~/projects/tree/components/commit_pipeline_status.vue';\nimport ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\nimport UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\n\n/**\n * CommitItem\n *\n * -----------------------------------------------------------------\n * WARNING: Please keep changes up-to-date with the following files:\n * - `views/projects/commits/_commit.html.haml`\n * -----------------------------------------------------------------\n *\n * This Component was cloned from a HAML view. For the time being they\n * coexist, but there is an issue to remove the duplication.\n * https://gitlab.com/gitlab-org/gitlab-foss/issues/51613\n *\n */\n\nexport default {\n  components: {\n    UserAvatarLink,\n    ModalCopyButton,\n    TimeAgoTooltip,\n    CommitPipelineStatus,\n    GlButtonGroup,\n    GlButton,\n    GlFormCheckbox,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    SafeHtml,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  props: {\n    isSelectable: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    commit: {\n      type: Object,\n      required: true,\n    },\n    checked: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    collapsible: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    author() {\n      return this.commit.author || {};\n    },\n    authorName() {\n      return this.author.name || this.commit.author_name;\n    },\n    authorClass() {\n      return this.author.name ? 'js-user-link' : '';\n    },\n    authorId() {\n      return this.author.id ? this.author.id : '';\n    },\n    authorUrl() {\n      return this.author.web_url || `mailto:${this.commit.author_email}`;\n    },\n    authorAvatar() {\n      return this.author.avatar_url || this.commit.author_gravatar_url;\n    },\n    commitDescription() {\n      // Strip the newline at the beginning\n      return this.commit.description_html.replace(/^&#x000A;/, '');\n    },\n  },\n  safeHtmlConfig: {\n    ADD_TAGS: ['gl-emoji'],\n  },\n};\n</script>\n\n<template>\n  <li :class=\"{ 'js-toggle-container': collapsible }\" class=\"commit\">\n    <div class=\"gl-block gl-flex-row-reverse gl-items-start gl-justify-between sm:gl-flex\">\n      <div class=\"commit-actions gl-hidden gl-flex-row gl-items-center gl-justify-end sm:gl-flex\">\n        <div\n          v-if=\"commit.signature_html\"\n          v-html=\"commit.signature_html /* eslint-disable-line vue/no-v-html */\"\n        ></div>\n        <commit-pipeline-status\n          v-if=\"commit.pipeline_status_path\"\n          :endpoint=\"commit.pipeline_status_path\"\n          class=\"mb-2 gl-inline-flex\"\n        />\n        <gl-button-group class=\"gl-ml-4\" data-testid=\"commit-sha-group\">\n          <gl-button label class=\"gl-font-monospace\" data-testid=\"commit-sha-short-id\">{{\n            commit.short_id\n          }}</gl-button>\n          <modal-copy-button\n            :text=\"commit.id\"\n            :title=\"__('Copy commit SHA')\"\n            class=\"input-group-text\"\n          />\n        </gl-button-group>\n      </div>\n      <div>\n        <div class=\"float-left align-self-start gl-flex gl-items-center\">\n          <gl-form-checkbox\n            v-if=\"isSelectable\"\n            :checked=\"checked\"\n            class=\"gl-mt-3\"\n            @change=\"$emit('handleCheckboxChange', !checked)\"\n          />\n          <user-avatar-link\n            :link-href=\"authorUrl\"\n            :img-src=\"authorAvatar\"\n            :img-alt=\"authorName\"\n            :img-size=\"32\"\n            class=\"avatar-cell gl-my-2 gl-mr-3 gl-hidden sm:gl-block\"\n          />\n        </div>\n        <div\n          class=\"commit-detail flex-list gl-flex gl-min-w-0 gl-grow gl-items-center gl-justify-between\"\n        >\n          <div class=\"commit-content\" data-testid=\"commit-content\">\n            <a\n              v-safe-html:[$options.safeHtmlConfig]=\"commit.title_html\"\n              :href=\"commit.commit_url\"\n              class=\"commit-row-message item-title\"\n            ></a>\n\n            <span class=\"commit-row-message !gl-block sm:!gl-hidden\"\n              >&middot; {{ commit.short_id }}</span\n            >\n\n            <gl-button\n              v-if=\"commit.description_html && collapsible\"\n              v-gl-tooltip\n              class=\"js-toggle-button\"\n              size=\"small\"\n              icon=\"ellipsis_h\"\n              :title=\"__('Toggle commit description')\"\n              :aria-label=\"__('Toggle commit description')\"\n            />\n\n            <div class=\"committer\">\n              <a\n                :href=\"authorUrl\"\n                :class=\"authorClass\"\n                :data-user-id=\"authorId\"\n                v-text=\"authorName\"\n              ></a>\n              {{ s__('CommitWidget|authored') }}\n              <time-ago-tooltip :time=\"commit.authored_date\" />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <pre\n        v-if=\"commit.description_html\"\n        v-safe-html:[$options.safeHtmlConfig]=\"commitDescription\"\n        :class=\"{ 'js-toggle-content': collapsible, '!gl-block': !collapsible }\"\n        class=\"commit-row-description gl-mb-3 gl-whitespace-pre-wrap gl-text-default\"\n      ></pre>\n    </div>\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./commit_item.vue?vue&type=template&id=4de1d0b3\"\nimport script from \"./commit_item.vue?vue&type=script&lang=js\"\nexport * from \"./commit_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlButtonGroup',\n  props: {\n    /**\n     * When set, rendered the button group in vertical mode.\n     */\n    vertical: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({class:!_vm.vertical ? 'btn-group' : 'btn-group-vertical',attrs:{\"role\":\"group\"}},_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","/* eslint-disable class-methods-use-this */\nimport $ from 'jquery';\nimport Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport createDefaultClient from '~/lib/graphql';\nimport { createAlert } from '~/alert';\nimport { getCookie, isMetaClick, parseBoolean, scrollToElement } from '~/lib/utils/common_utils';\nimport { parseUrlPathname, visitUrl } from '~/lib/utils/url_utility';\nimport createEventHub from '~/helpers/event_hub_factory';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport BlobForkSuggestion from './blob/blob_fork_suggestion';\nimport Diff from './diff';\nimport { initDiffStatsDropdown } from './init_diff_stats_dropdown';\nimport axios from './lib/utils/axios_utils';\n\nimport { localTimeAgo } from './lib/utils/datetime_utility';\nimport { isInVueNoteablePage } from './lib/utils/dom_utils';\nimport { __, s__ } from './locale';\nimport syntaxHighlight from './syntax_highlight';\n\nVue.use(VueApollo);\n\nconst apolloProvider = new VueApollo({\n  defaultClient: createDefaultClient(),\n});\n\n// MergeRequestTabs\n//\n// Handles persisting and restoring the current tab selection and lazily-loading\n// content on the MergeRequests#show page.\n//\n// ### Example Markup\n//\n//   <ul class=\"nav-links merge-request-tabs\">\n//     <li class=\"notes-tab active\">\n//       <a data-action=\"notes\" data-target=\"#notes\" data-toggle=\"tab\" href=\"/foo/bar/-/merge_requests/1\">\n//         Discussion\n//       </a>\n//     </li>\n//     <li class=\"commits-tab\">\n//       <a data-action=\"commits\" data-target=\"#commits\" data-toggle=\"tab\" href=\"/foo/bar/-/merge_requests/1/commits\">\n//         Commits\n//       </a>\n//     </li>\n//     <li class=\"diffs-tab\">\n//       <a data-action=\"diffs\" data-target=\"#diffs\" data-toggle=\"tab\" href=\"/foo/bar/-/merge_requests/1/diffs\">\n//         Diffs\n//       </a>\n//     </li>\n//   </ul>\n//\n//   <div class=\"tab-content\">\n//     <div class=\"notes tab-pane active\" id=\"notes\">\n//       Notes Content\n//     </div>\n//     <div class=\"commits tab-pane\" id=\"commits\">\n//       Commits Content\n//     </div>\n//     <div class=\"diffs tab-pane\" id=\"diffs\">\n//       Diffs Content\n//     </div>\n//   </div>\n//\n//   <div class=\"mr-loading-status\">\n//     <div class=\"loading\">\n//       Loading Animation\n//     </div>\n//   </div>\n//\n\n// <100ms is typically indistinguishable from \"instant\" for users, but allows for re-rendering\nconst FAST_DELAY_FOR_RERENDER = 75;\n// Store the `location` object, allowing for easier stubbing in tests\nlet { location } = window;\n\nfunction scrollToContainer(container) {\n  if (location.hash) {\n    const $el = $(`${container} ${location.hash}:not(.match)`);\n\n    if ($el.length) {\n      scrollToElement($el[0]);\n    }\n  }\n}\n\nfunction mountPipelines() {\n  const pipelineTableViewEl = document.querySelector('#commit-pipeline-table-view');\n  const { mrWidgetData } = gl;\n  const table = new Vue({\n    components: {\n      MergeRequestPipelinesTable: () => {\n        return gon.features.mrPipelinesGraphql\n          ? import('~/ci/merge_requests/components/pipelines_table_wrapper.vue')\n          : import('~/commit/pipelines/legacy_pipelines_table_wrapper.vue');\n      },\n    },\n    apolloProvider,\n    provide: {\n      artifactsEndpoint: pipelineTableViewEl.dataset.artifactsEndpoint,\n      artifactsEndpointPlaceholder: pipelineTableViewEl.dataset.artifactsEndpointPlaceholder,\n      targetProjectFullPath: mrWidgetData?.target_project_full_path || '',\n      fullPath: pipelineTableViewEl.dataset.fullPath,\n      graphqlPath: pipelineTableViewEl.dataset.graphqlPath,\n      manualActionsLimit: 50,\n      mergeRequestId: mrWidgetData ? mrWidgetData.iid : null,\n      sourceProjectFullPath: mrWidgetData?.source_project_full_path || '',\n      useFailedJobsWidget: true,\n    },\n    render(createElement) {\n      return createElement('merge-request-pipelines-table', {\n        props: {\n          endpoint: pipelineTableViewEl.dataset.endpoint,\n          emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,\n          errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,\n          canCreatePipelineInTargetProject: Boolean(\n            mrWidgetData?.can_create_pipeline_in_target_project,\n          ),\n          sourceProjectFullPath: mrWidgetData?.source_project_full_path || '',\n          targetProjectFullPath: mrWidgetData?.target_project_full_path || '',\n          projectId: pipelineTableViewEl.dataset.projectId,\n          mergeRequestId: mrWidgetData ? mrWidgetData.iid : null,\n          isMergeRequestTable: true,\n        },\n      });\n    },\n  }).$mount();\n\n  // $mount(el) replaces the el with the new rendered component. We need it in order to mount\n  // it everytime this tab is clicked - https://vuejs.org/v2/api/#vm-mount\n  pipelineTableViewEl.appendChild(table.$el);\n\n  return table;\n}\n\nexport function destroyPipelines(app) {\n  if (app && app.$destroy) {\n    app.$destroy();\n\n    document.querySelector('#commit-pipeline-table-view').innerHTML = '';\n  }\n\n  return null;\n}\n\nfunction loadDiffs({ url, tabs }) {\n  return axios.get(url).then(({ data }) => {\n    const $container = $('#diffs');\n    $container.html(data.html);\n    initDiffStatsDropdown();\n\n    localTimeAgo(document.querySelectorAll('#diffs .js-timeago'));\n    syntaxHighlight($('#diffs .js-syntax-highlight'));\n\n    tabs.createDiff();\n    tabs.setHubToDiff();\n\n    scrollToContainer('#diffs');\n\n    $('.diff-file').each((i, el) => {\n      new BlobForkSuggestion({\n        openButtons: $(el).find('.js-edit-blob-link-fork-toggler'),\n        forkButtons: $(el).find('.js-fork-suggestion-button'),\n        cancelButtons: $(el).find('.js-cancel-fork-suggestion-button'),\n        suggestionSections: $(el).find('.js-file-fork-suggestion-section'),\n        actionTextPieces: $(el).find('.js-file-fork-suggestion-section-action'),\n      }).init();\n    });\n  });\n}\n\nexport function toggleLoader(state) {\n  $('.mr-loading-status .loading').toggleClass('hide', !state);\n}\n\nexport function getActionFromHref(pathName) {\n  let action = pathName.match(/\\/(\\d+)\\/(commits|diffs|pipelines|reports).*$/);\n\n  if (action) {\n    action = action.at(-1).replace(/(^\\/|\\.html)/g, '');\n  } else {\n    action = 'show';\n  }\n\n  return action;\n}\n\nexport const pageBundles = {\n  show: () => import(/* webpackPrefetch: true */ '~/mr_notes/mount_app'),\n  diffs: () => import(/* webpackPrefetch: true */ '~/diffs'),\n  reports: () => import('~/merge_requests/reports'),\n};\n\nexport default class MergeRequestTabs {\n  constructor({ action, setUrl, stubLocation } = {}) {\n    const containers = document.querySelectorAll('.content-wrapper .container-fluid');\n    this.contentWrapper = containers[containers.length - 1];\n    this.mergeRequestTabs = document.querySelector('.merge-request-tabs-container');\n    this.mergeRequestTabsAll =\n      this.mergeRequestTabs && this.mergeRequestTabs.querySelectorAll\n        ? this.mergeRequestTabs.querySelectorAll('.merge-request-tabs li')\n        : null;\n    this.mergeRequestTabPanes = document.querySelector('#diff-notes-app');\n    this.mergeRequestTabPanesAll =\n      this.mergeRequestTabPanes && this.mergeRequestTabPanes.querySelectorAll\n        ? this.mergeRequestTabPanes.querySelectorAll('.tab-pane')\n        : null;\n    this.navbar = document.querySelector('.navbar-gitlab');\n    this.peek = document.getElementById('js-peek');\n    this.sidebar = document.querySelector('.js-right-sidebar');\n    this.pageLayout = document.querySelector('.layout-page');\n    this.expandSidebar = document.querySelectorAll('.js-expand-sidebar, .js-sidebar-toggle');\n    this.paddingTop = 16;\n    this.actionRegex = /\\/(commits|diffs|pipelines|reports)(\\.html)?\\/?$/;\n\n    this.scrollPositions = {};\n\n    this.commitsTab = document.querySelector('.tab-content .commits.tab-pane');\n\n    this.currentTab = null;\n    this.diffsLoaded = false;\n    this.diffsClass = null;\n    this.commitsLoaded = false;\n    this.isFixedLayoutPreferred = this.contentWrapper.classList.contains('container-limited');\n    this.eventHub = createEventHub();\n    this.loadedPages = { [action]: true };\n\n    this.setUrl = setUrl !== undefined ? setUrl : true;\n    this.setCurrentAction = this.setCurrentAction.bind(this);\n    this.switchViewType = this.switchViewType.bind(this);\n    this.tabShown = this.tabShown.bind(this);\n    this.clickTab = this.clickTab.bind(this);\n\n    if (stubLocation) {\n      location = stubLocation;\n    }\n\n    this.bindEvents();\n    this.mergeRequestTabs?.querySelector(`a[data-action='${action}']`)?.click?.();\n  }\n\n  bindEvents() {\n    $('.merge-request-tabs a[data-toggle=\"tabvue\"]').on('click', this.clickTab);\n    window.addEventListener('popstate', (event) => {\n      if (event?.state?.skipScrolling) return;\n      const action = getActionFromHref(window.location.pathname);\n\n      this.tabShown(action, location.href);\n      this.eventHub.$emit('MergeRequestTabChange', action);\n    });\n    this.eventHub.$on('diff:switch-view-type', this.switchViewType);\n  }\n\n  // Used in tests\n  unbindEvents() {\n    $('.merge-request-tabs a[data-toggle=\"tabvue\"]').off('click', this.clickTab);\n    this.eventHub.$off('diff:switch-view-type', this.switchViewType);\n  }\n\n  storeScroll() {\n    if (this.currentTab) {\n      this.scrollPositions[this.currentTab] = document.documentElement.scrollTop;\n    }\n  }\n  recallScroll(action) {\n    const storedPosition = this.scrollPositions[action];\n    if (storedPosition == null) return;\n\n    setTimeout(() => {\n      window.scrollTo({\n        top: storedPosition > 0 ? storedPosition : 0,\n        left: 0,\n        behavior: 'auto',\n      });\n    }, FAST_DELAY_FOR_RERENDER);\n  }\n\n  clickTab(e) {\n    if (e.currentTarget) {\n      e.stopImmediatePropagation();\n      e.preventDefault();\n\n      this.storeScroll();\n\n      const { action } = e.currentTarget.dataset || {};\n\n      if (isMetaClick(e)) {\n        const targetLink = e.currentTarget.getAttribute('href');\n        visitUrl(targetLink, true);\n      } else if (action) {\n        const href = e.currentTarget.getAttribute('href');\n        this.tabShown(action, href);\n      }\n    }\n  }\n\n  tabShown(action, href, shouldScroll = true) {\n    toggleLoader(false);\n\n    if (action !== this.currentTab && this.mergeRequestTabs) {\n      this.currentTab = action;\n      if (this.setUrl) {\n        this.setCurrentAction(action);\n      }\n\n      if (this.mergeRequestTabPanesAll) {\n        this.mergeRequestTabPanesAll.forEach((el) => {\n          const tabPane = el;\n          tabPane.style.display = 'none';\n        });\n      }\n\n      if (this.mergeRequestTabsAll) {\n        this.mergeRequestTabsAll.forEach((el) => {\n          el.classList.remove('active');\n        });\n      }\n\n      const tabPane = this.mergeRequestTabPanes.querySelector(`#${action}`);\n      if (tabPane) tabPane.style.display = 'block';\n      const tab = this.mergeRequestTabs.querySelector(`.${action}-tab`);\n      if (tab) tab.classList.add('active');\n\n      if (isInVueNoteablePage() && !this.loadedPages[action] && action in pageBundles) {\n        toggleLoader(true);\n        pageBundles[action]()\n          .then(({ default: init }) => {\n            toggleLoader(false);\n            init();\n            this.loadedPages[action] = true;\n          })\n          .catch(() => {\n            toggleLoader(false);\n            createAlert({ message: s__('MergeRequest|Failed to load the page') });\n          });\n      }\n\n      this.expandSidebar?.forEach((el) => el.classList.toggle('!gl-hidden', action !== 'show'));\n\n      if (action === 'commits') {\n        if (!this.commitsLoaded) {\n          this.loadCommits(href);\n        }\n        // this.hideSidebar();\n        this.resetViewContainer();\n        this.mergeRequestPipelinesTable = destroyPipelines(this.mergeRequestPipelinesTable);\n      } else if (action === 'new') {\n        this.expandView();\n        this.resetViewContainer();\n        this.mergeRequestPipelinesTable = destroyPipelines(this.mergeRequestPipelinesTable);\n      } else if (this.isDiffAction(action)) {\n        if (!isInVueNoteablePage()) {\n          /*\n            for pages where we have not yet converted to the new vue\n            implementation we load the diff tab content the old way,\n            inserting html rendered by the backend.\n\n            in practice, this only occurs when comparing commits in\n            the new merge request form page.\n          */\n          this.loadDiff({ endpoint: href, strip: true });\n        }\n        // this.hideSidebar();\n        this.expandViewContainer();\n        this.mergeRequestPipelinesTable = destroyPipelines(this.mergeRequestPipelinesTable);\n        this.commitsTab.classList.remove('active');\n      } else if (action === 'pipelines') {\n        // this.hideSidebar();\n        this.resetViewContainer();\n        this.mountPipelinesView();\n      } else if (action === 'reports') {\n        this.resetViewContainer();\n      } else {\n        const notesTab = this.mergeRequestTabs.querySelector('.notes-tab');\n        const notesPane = this.mergeRequestTabPanes.querySelector('#notes');\n        if (notesPane) {\n          notesPane.style.display = 'block';\n        }\n        if (notesTab) {\n          notesTab.classList.add('active');\n        }\n\n        // this.showSidebar();\n        this.resetViewContainer();\n        this.mergeRequestPipelinesTable = destroyPipelines(this.mergeRequestPipelinesTable);\n      }\n\n      renderGFM(document.querySelector('.detail-page-description'));\n\n      if (shouldScroll) this.recallScroll(action);\n    } else if (action === this.currentAction) {\n      // ContentTop is used to handle anything at the top of the page before the main content\n      const mainContentContainer = document.querySelector('.content-wrapper');\n      const tabContentContainer = document.querySelector('.tab-content');\n\n      if (mainContentContainer && tabContentContainer) {\n        const mainContentTop = mainContentContainer.getBoundingClientRect().top;\n        const tabContentTop = tabContentContainer.getBoundingClientRect().top;\n\n        // 51px is the height of the navbar buttons, e.g. `Discussion | Commits | Changes`\n        const scrollDestination = tabContentTop - mainContentTop - 51;\n\n        // scrollBehavior is only available in browsers that support scrollToOptions\n        if ('scrollBehavior' in document.documentElement.style && shouldScroll) {\n          window.scrollTo({\n            top: scrollDestination,\n            behavior: 'smooth',\n          });\n        } else {\n          window.scrollTo(0, scrollDestination);\n        }\n      }\n    }\n\n    this.eventHub.$emit('MergeRequestTabChange', action);\n  }\n\n  // Replaces the current merge request-specific action in the URL with a new one\n  //\n  // If the action is \"notes\", the URL is reset to the standard\n  // `MergeRequests#show` route.\n  //\n  // Examples:\n  //\n  //   location.pathname # => \"/namespace/project/-/merge_requests/1\"\n  //   setCurrentAction('diffs')\n  //   location.pathname # => \"/namespace/project/-/merge_requests/1/diffs\"\n  //\n  //   location.pathname # => \"/namespace/project/-/merge_requests/1/diffs\"\n  //   setCurrentAction('show')\n  //   location.pathname # => \"/namespace/project/-/merge_requests/1\"\n  //\n  //   location.pathname # => \"/namespace/project/-/merge_requests/1/diffs\"\n  //   setCurrentAction('commits')\n  //   location.pathname # => \"/namespace/project/-/merge_requests/1/commits\"\n  //\n  // Returns the new URL String\n  setCurrentAction(action) {\n    this.currentAction = action;\n\n    const pathname = location.pathname.replace(/\\/*$/, '');\n\n    // Remove a trailing '/commits' '/diffs' '/pipelines'\n    let newStatePathname = pathname.replace(this.actionRegex, '');\n\n    // Append the new action if we're on a tab other than 'notes'\n    if (this.currentAction !== 'show' && this.currentAction !== 'new') {\n      newStatePathname += `/${this.currentAction}`;\n    }\n\n    // Ensure parameters and hash come along for the ride\n    const newState = newStatePathname + location.search + location.hash;\n\n    if (pathname !== newStatePathname) {\n      window.history.pushState(\n        {\n          url: newState,\n          action: this.currentAction,\n        },\n        document.title,\n        newState,\n      );\n    } else {\n      window.history.replaceState(\n        {\n          url: window.location.href,\n          action,\n        },\n        document.title,\n        window.location.href,\n      );\n    }\n\n    return newState;\n  }\n\n  getCurrentAction() {\n    return this.currentAction;\n  }\n\n  loadCommits(source, page = 1) {\n    toggleLoader(true);\n\n    axios\n      .get(`${source}.json`, { params: { page, per_page: 100 } })\n      .then(({ data: { html, count, next_page: nextPage } }) => {\n        toggleLoader(false);\n\n        document.querySelector('.js-commits-count').textContent = count;\n\n        const commitsDiv = document.querySelector('div#commits');\n        // eslint-disable-next-line no-unsanitized/property\n        commitsDiv.innerHTML += html;\n        localTimeAgo(commitsDiv.querySelectorAll('.js-timeago'));\n        this.commitsLoaded = true;\n        scrollToContainer('#commits');\n\n        const loadMoreButton = document.querySelector('.js-load-more-commits');\n\n        if (loadMoreButton) {\n          loadMoreButton.addEventListener('click', (e) => {\n            e.preventDefault();\n\n            loadMoreButton.remove();\n            this.loadCommits(source, loadMoreButton.dataset.nextPage);\n          });\n        }\n\n        if (!nextPage) {\n          return import('./add_context_commits_modal');\n        }\n\n        return null;\n      })\n      .then((m) => m?.default())\n      .catch(() => {\n        toggleLoader(false);\n        createAlert({\n          message: __('An error occurred while fetching this tab.'),\n        });\n      });\n  }\n\n  mountPipelinesView() {\n    this.mergeRequestPipelinesTable = mountPipelines();\n  }\n\n  // load the diff tab content from the backend\n  loadDiff({ endpoint, strip = true }) {\n    if (this.diffsLoaded) {\n      document.dispatchEvent(new CustomEvent('scroll'));\n      return;\n    }\n\n    // We extract pathname for the current Changes tab anchor href\n    // some pages like MergeRequestsController#new has query parameters on that anchor\n    const diffUrl = strip ? `${parseUrlPathname(endpoint)}.json${location.search}` : endpoint;\n\n    loadDiffs({\n      url: diffUrl,\n      tabs: this,\n    })\n      .then(() => {\n        if (this.isDiffAction(this.currentAction)) {\n          this.expandViewContainer();\n        }\n\n        this.diffsLoaded = true;\n      })\n      .catch(() => {\n        createAlert({\n          message: __('An error occurred while fetching this tab.'),\n        });\n      });\n  }\n  switchViewType({ source }) {\n    this.diffsLoaded = false;\n\n    this.loadDiff({ endpoint: source, strip: false });\n  }\n  createDiff() {\n    if (!this.diffsClass) {\n      this.diffsClass = new Diff({ mergeRequestEventHub: this.eventHub });\n    }\n  }\n  setHubToDiff() {\n    if (this.diffsClass) {\n      this.diffsClass.mrHub = this.eventHub;\n    }\n  }\n\n  diffViewType() {\n    return $('.js-diff-view-buttons button.active').data('viewType');\n  }\n\n  isDiffAction(action) {\n    return action === 'diffs' || action === 'new/diffs';\n  }\n\n  expandViewContainer() {\n    this.contentWrapper.classList.remove('container-limited');\n    this.contentWrapper.classList.add('diffs-container-limited');\n  }\n\n  resetViewContainer() {\n    this.contentWrapper.classList.toggle('container-limited', this.isFixedLayoutPreferred);\n    this.contentWrapper.classList.remove('diffs-container-limited');\n  }\n\n  // Expand the issuable sidebar unless the user explicitly collapsed it\n  expandView() {\n    if (parseBoolean(getCookie('collapsed_gutter'))) {\n      return;\n    }\n    const $gutterBtn = $('.js-sidebar-toggle');\n    const $collapseSvg = $gutterBtn.find('.js-sidebar-collapse');\n\n    // Wait until listeners are set\n    setTimeout(() => {\n      // Only when sidebar is collapsed\n      if ($collapseSvg.length && !$collapseSvg.hasClass('hidden')) {\n        $gutterBtn.trigger('click', [true]);\n      }\n    }, 0);\n  }\n\n  hideSidebar() {\n    if (!isInVueNoteablePage() || this.cachedPageLayoutClasses) return;\n\n    this.cachedPageLayoutClasses = this.pageLayout.className;\n    this.pageLayout.classList.remove('right-sidebar-collapsed', 'right-sidebar-expanded');\n    this.sidebar.style.width = '0px';\n  }\n\n  showSidebar() {\n    if (!isInVueNoteablePage() || !this.cachedPageLayoutClasses) return;\n\n    this.pageLayout.className = this.cachedPageLayoutClasses;\n    this.sidebar.style.width = '';\n    delete this.cachedPageLayoutClasses;\n  }\n}\n","/* eslint-disable func-names, no-underscore-dangle, consistent-return */\n\nimport $ from 'jquery';\nimport { createAlert } from '~/alert';\nimport { TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { __ } from '~/locale';\nimport { loadingIconForLegacyJS } from '~/loading_icon_for_legacy_js';\nimport MergeRequestTabs from 'jh_else_ce/merge_request_tabs';\nimport axios from './lib/utils/axios_utils';\nimport { addDelimiter } from './lib/utils/text_utility';\nimport { getParameterValues, setUrlParams } from './lib/utils/url_utility';\nimport TaskList from './task_list';\n\nfunction MergeRequest(opts) {\n  // Initialize MergeRequest behavior\n  //\n  // Options:\n  //   action - String, current controller action\n  //\n  this.opts = opts != null ? opts : {};\n  this.submitNoteForm = this.submitNoteForm.bind(this);\n  this.$el = $('.merge-request');\n\n  this.initTabs();\n  this.initMRBtnListeners();\n\n  if ($('.description.js-task-list-container').length) {\n    this.taskList = new TaskList({\n      dataType: TYPE_MERGE_REQUEST,\n      fieldName: 'description',\n      selector: '.detail-page-description',\n      lockVersion: this.$el.data('lockVersion'),\n      onSuccess: (result) => {\n        const taskStatus = document.querySelector('#task_status');\n        const taskStatusShort = document.querySelector('#task_status_short');\n\n        if (taskStatus) {\n          taskStatus.innerText = result.task_status;\n        }\n\n        if (taskStatusShort) {\n          document.querySelector('#task_status_short').innerText = result.task_status_short;\n        }\n      },\n      onError: () => {\n        createAlert({\n          message: __(\n            'Someone edited this merge request at the same time you did. Please refresh the page to see changes.',\n          ),\n        });\n      },\n    });\n  }\n}\n\n// Local jQuery finder\nMergeRequest.prototype.$ = function (selector) {\n  return this.$el.find(selector);\n};\n\nMergeRequest.prototype.initTabs = function () {\n  if (window.mrTabs) {\n    window.mrTabs.unbindEvents();\n  }\n\n  window.mrTabs = new MergeRequestTabs(this.opts);\n};\n\nMergeRequest.prototype.initMRBtnListeners = function () {\n  const _this = this;\n  const draftToggles = document.querySelectorAll('.js-draft-toggle-button');\n\n  if (draftToggles.length) {\n    draftToggles.forEach((draftToggle) => {\n      draftToggle.addEventListener('click', (e) => {\n        e.preventDefault();\n        e.stopImmediatePropagation();\n\n        const url = draftToggle.href;\n        const wipEvent = getParameterValues('merge_request[wip_event]', url)[0];\n        const mobileDropdown = draftToggle.closest('.dropdown.show');\n\n        const loader = loadingIconForLegacyJS({ inline: true, classes: ['gl-mr-3'] });\n\n        if (mobileDropdown) {\n          $(mobileDropdown.firstElementChild).dropdown('toggle');\n        }\n\n        draftToggle.setAttribute('disabled', 'disabled');\n        draftToggle.prepend(loader);\n\n        axios\n          .put(draftToggle.href, null, { params: { format: 'json' } })\n          .then(({ data }) => {\n            draftToggle.removeAttribute('disabled');\n\n            MergeRequest.toggleDraftStatus(data.title, wipEvent === 'ready');\n          })\n          .catch(() => {\n            createAlert({\n              message: __('Something went wrong. Please try again.'),\n            });\n          })\n          .finally(() => {\n            draftToggle.removeAttribute('disabled');\n            loader.remove();\n          });\n      });\n    });\n  }\n\n  return $('.btn-close, .btn-reopen').on('click', function (e) {\n    const $this = $(this);\n    const shouldSubmit = $this.hasClass('btn-comment');\n    if (shouldSubmit && $this.data('submitted')) {\n      return;\n    }\n\n    if (shouldSubmit) {\n      if ($this.hasClass('btn-comment-and-close') || $this.hasClass('btn-comment-and-reopen')) {\n        e.preventDefault();\n        e.stopImmediatePropagation();\n\n        _this.submitNoteForm($this.closest('form'), $this);\n      }\n    }\n  });\n};\n\nMergeRequest.prototype.submitNoteForm = function (form, $button) {\n  const noteText = form.find('textarea.js-note-text').val();\n  if (noteText.trim().length > 0) {\n    form.submit();\n    $button.data('submitted', true);\n    return $button.trigger('click');\n  }\n};\n\nMergeRequest.decreaseCounter = function (by = 1) {\n  const $el = $('.js-merge-counter');\n  const count = Math.max(parseInt($el.first().text().replace(/[^\\d]/, ''), 10) - by, 0);\n\n  $el.text(addDelimiter(count));\n};\n\nMergeRequest.toggleDraftStatus = function (title, isReady) {\n  if (isReady) {\n    toast(__('Marked as ready. Merging is now allowed.'));\n  } else {\n    toast(__('Marked as draft. Can only be merged when marked as ready.'));\n  }\n  const titleEl = document.querySelector(`.merge-request .detail-page-header .title`);\n\n  if (titleEl) {\n    titleEl.textContent = title;\n  }\n\n  const draftToggles = document.querySelectorAll('.js-draft-toggle-button');\n\n  if (draftToggles.length) {\n    draftToggles.forEach((el) => {\n      const draftToggle = el;\n      const url = setUrlParams(\n        { 'merge_request[wip_event]': isReady ? 'draft' : 'ready' },\n        draftToggle.href,\n      );\n\n      draftToggle.setAttribute('href', url);\n      draftToggle.querySelector('.gl-dropdown-item-text-wrapper').textContent = isReady\n        ? __('Mark as draft')\n        : __('Mark as ready');\n    });\n  }\n};\n\nexport default MergeRequest;\n","import { getSel, isElement } from '../../../utils/dom';\n\n// Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\nconst textSelectionActive = function () {\n  let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  const sel = getSel();\n  return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ? /* istanbul ignore next */sel.containsNode(el, true) : false;\n};\n\nexport { textSelectionActive };\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"PromoteTimelineEvent\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"TimelineEventPromoteFromNoteInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timelineEventPromoteFromNote\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timelineEvent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":176}};\n    doc.loc.source = {\"body\":\"mutation PromoteTimelineEvent($input: TimelineEventPromoteFromNoteInput!) {\\n  timelineEventPromoteFromNote(input: $input) {\\n    timelineEvent {\\n      id\\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[\"PromoteTimelineEvent\"] = oneQuery(doc, \"PromoteTimelineEvent\");\n        \n","var baseClamp = require('./_baseClamp'),\n    toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n  if (upper === undefined) {\n    upper = lower;\n    lower = undefined;\n  }\n  if (upper !== undefined) {\n    upper = toNumber(upper);\n    upper = upper === upper ? upper : 0;\n  }\n  if (lower !== undefined) {\n    lower = toNumber(lower);\n    lower = lower === lower ? lower : 0;\n  }\n  return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"issueSetWeight\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssueSetWeightInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuableSetWeight\"},\"name\":{\"kind\":\"Name\",\"value\":\"issueSetWeight\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuable\"},\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":176}};\n    doc.loc.source = {\"body\":\"mutation issueSetWeight($input: IssueSetWeightInput!) {\\n  issuableSetWeight: issueSetWeight(input: $input) {\\n    issuable: issue {\\n      id\\n      weight\\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[\"issueSetWeight\"] = oneQuery(doc, \"issueSetWeight\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueCrmContacts\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssueID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CrmContacts\"},\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":133}};\n    doc.loc.source = {\"body\":\"#import \\\"./issue_crm_contacts.fragment.graphql\\\"\\n\\nquery issueCrmContacts($id: IssueID!) {\\n  issue(id: $id) {\\n    ...CrmContacts\\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(\"./issue_crm_contacts.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[\"issueCrmContacts\"] = oneQuery(doc, \"issueCrmContacts\");\n        \n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n  if (typeof num === 'number') {\n    return num - num === 0;\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n  }\n  return false;\n};\n","import isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nconst isOption = item => Boolean(item) && (isString(item.value) || isNumber(item.value));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isGroup = function () {\n  let {\n    options\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return Array.isArray(options) && options.every(isOption);\n};\nconst hasNoDuplicates = array => array.length === new Set(array).size;\nconst flattenedOptions = items => items.flatMap(item => isOption(item) ? item : item.options);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isAllOptionsOrAllGroups = items => items.every(isOption) || items.every(isGroup);\nconst hasUniqueValues = items => hasNoDuplicates(flattenedOptions(items).map(_ref => {\n  let {\n    value\n  } = _ref;\n  return value;\n}));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst hasUniqueGroups = items => hasNoDuplicates(items.filter(isGroup).map(_ref2 => {\n  let {\n    text\n  } = _ref2;\n  return text;\n}));\nconst itemsValidator = items => isAllOptionsOrAllGroups(items) && hasUniqueValues(items) && hasUniqueGroups(items);\n\nexport { flattenedOptions, isOption, itemsValidator };\n","import { localeDateFormat } from '~/lib/utils/datetime_utility';\nimport { newDate } from '~/lib/utils/datetime/date_calculation_utility';\n\n/**\n * The first argument is two date strings in formatted in ISO 8601 (YYYY-MM-DD)\n * If the startDate year is the same as the current year, the start date\n * year is omitted.\n *\n * The second argument is a boolean switch that determines whether the\n * iteration period should be formatted for use in an issue or not. There are\n * intended design differences in the way the period is formatted for uses like\n * a board issue card or the issue sidebar. This argument is optional and\n * defaults to false.\n *\n * @returns {string}\n *\n * ex. \"Oct 1, 2021 - Oct 10, 2022\" if start and due dates have different years, regardless of current year.\n *\n * \"Oct 1 - 10, 2021\" if start and due dates are both in 2021, current year === 2021.\n */\nexport function getIterationPeriod({ startDate, dueDate }) {\n  return localeDateFormat.asDate.formatRange(newDate(startDate), newDate(dueDate));\n}\n\n/**\n * Sort iteration cadences by the specified field\n */\nconst sortCadences = (cadences, sortBy) => {\n  return cadences.sort((a, b) => {\n    const titleA = a[sortBy].toLowerCase();\n    const titleB = b[sortBy].toLowerCase();\n    return titleA.localeCompare(titleB);\n  });\n};\n\n/**\n * Group a list of iterations by cadence.\n *\n * @param iterations A list of iterations\n * @return {Array} A list of cadences\n */\nexport function groupByIterationCadences(iterations) {\n  const cadences = [];\n  iterations.forEach((iteration) => {\n    if (!iteration.iterationCadence) {\n      return;\n    }\n    const { title, id } = iteration.iterationCadence;\n    const cadenceIteration = {\n      id: iteration.id,\n      title: iteration.title,\n      period: getIterationPeriod(iteration),\n    };\n    const cadence = cadences.find((c) => c.title === title);\n    if (cadence) {\n      cadence.iterations.push(cadenceIteration);\n    } else {\n      cadences.push({ title, iterations: [cadenceIteration], id });\n    }\n  });\n  return sortCadences(cadences, 'title');\n}\n\nexport function groupOptionsByIterationCadences(iterations) {\n  const cadences = [];\n  iterations.forEach((iteration) => {\n    if (!iteration.iterationCadence) {\n      return;\n    }\n    const { title } = iteration.iterationCadence;\n    const cadenceIteration = {\n      value: iteration.id,\n      title: iteration.title,\n      text: getIterationPeriod(iteration),\n    };\n    const cadence = cadences.find((c) => c.text === title);\n    if (cadence) {\n      cadence.options.push(cadenceIteration);\n    } else {\n      cadences.push({ text: title, options: [cadenceIteration] });\n    }\n  });\n  return sortCadences(cadences, 'text');\n}\n","import vulnerabilityConfirm from './mutations/vulnerability_confirm.mutation.graphql';\nimport vulnerabilityDismiss from './mutations/vulnerability_dismiss.mutation.graphql';\nimport vulnerabilityResolve from './mutations/vulnerability_resolve.mutation.graphql';\nimport vulnerabilityRevertToDetected from './mutations/vulnerability_revert_to_detected.mutation.graphql';\n\nexport default {\n  revert: vulnerabilityRevertToDetected,\n  dismiss: vulnerabilityDismiss,\n  confirm: vulnerabilityConfirm,\n  resolve: vulnerabilityResolve,\n};\n","export const CHANGES_TAB = 'diffs';\nexport const DISCUSSION_TAB = 'notes';\nexport const SHOW_TAB = 'show';\n\nexport const REVIEW_BAR_VISIBLE_CLASS_NAME = 'review-bar-visible';\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"issueCrmContactsUpdated\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issueCrmContactsUpdated\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Issue\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CrmContacts\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":203}};\n    doc.loc.source = {\"body\":\"#import \\\"./issue_crm_contacts.fragment.graphql\\\"\\n\\nsubscription issueCrmContactsUpdated($id: IssuableID!) {\\n  issueCrmContactsUpdated(issuableId: $id) {\\n    ... on Issue {\\n      ...CrmContacts\\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(\"./issue_crm_contacts.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[\"issueCrmContactsUpdated\"] = oneQuery(doc, \"issueCrmContactsUpdated\");\n        \n","import { __ } from '~/locale';\nimport {\n  MATCH_LINE_TYPE,\n  CONTEXT_LINE_TYPE,\n  LINE_HOVER_CLASS_NAME,\n  OLD_NO_NEW_LINE_TYPE,\n  NEW_NO_NEW_LINE_TYPE,\n  EMPTY_CELL_TYPE,\n  CONFLICT_MARKER_OUR,\n  CONFLICT_MARKER_THEIR,\n  CONFLICT_THEIR,\n  CONFLICT_OUR,\n  EXPANDED_LINE_TYPE,\n} from '../constants';\n\nexport const isHighlighted = (highlightedRow, line, isCommented) => {\n  if (isCommented) return true;\n\n  const lineCode = line?.line_code;\n  return lineCode ? lineCode === highlightedRow : false;\n};\n\nexport const isContextLine = (type) => type === CONTEXT_LINE_TYPE;\n\nexport const isMatchLine = (type) => type === MATCH_LINE_TYPE;\n\nexport const isMetaLine = (type) =>\n  [OLD_NO_NEW_LINE_TYPE, NEW_NO_NEW_LINE_TYPE, EMPTY_CELL_TYPE].includes(type);\n\nexport const shouldRenderCommentButton = (isLoggedIn, isCommentButtonRendered) => {\n  return isCommentButtonRendered && isLoggedIn;\n};\n\nexport const hasDiscussions = (line) => line?.discussions?.length > 0;\n\nexport const fileContentsId = (diffFile) => {\n  return `diff-content-${diffFile.file_hash}`;\n};\n\nconst createDiffUrl = (diffFile) => {\n  const url = new URL(window.location);\n  url.searchParams.set('file', diffFile.file_hash);\n  return url;\n};\n\nexport const createFileUrl = (diffFile) => {\n  const url = createDiffUrl(diffFile);\n  url.hash = fileContentsId(diffFile);\n  return url;\n};\n\nexport const lineHref = (line, diffFile) => {\n  if (!line || !line.line_code) return '';\n  const url = createDiffUrl(diffFile);\n  url.hash = line.line_code;\n  return url.toString();\n};\n\nexport const lineCode = (line) => {\n  if (!line) return undefined;\n  return line.line_code || line.left?.line_code || line.right?.line_code;\n};\n\nexport const classNameMapCell = ({\n  line,\n  highlighted,\n  commented,\n  selectionStart,\n  selectionEnd,\n  isLoggedIn,\n  isHover,\n}) => {\n  const classes = {\n    'highlight-top': highlighted || selectionStart,\n    'highlight-bottom': highlighted || selectionEnd,\n    hll: highlighted,\n    commented,\n  };\n\n  if (line) {\n    const { type } = line;\n    Object.assign(classes, {\n      [type]: true,\n      [LINE_HOVER_CLASS_NAME]: isLoggedIn && isHover && !isContextLine(type) && !isMetaLine(type),\n      old_line: type === 'old',\n      new_line: type === 'new',\n    });\n  }\n\n  return [classes];\n};\n\nexport const addCommentTooltip = (line) => {\n  let tooltip;\n  if (!line) {\n    return tooltip;\n  }\n\n  tooltip = __('Add a comment to this line or drag for multiple lines');\n\n  if (!line.problems) {\n    return tooltip;\n  }\n\n  const { brokenSymlink, brokenLineCode, fileOnlyMoved } = line.problems;\n\n  if (brokenSymlink) {\n    if (brokenSymlink.wasSymbolic || brokenSymlink.isSymbolic) {\n      tooltip = __(\n        'Commenting on symbolic links that replace or are replaced by files is not supported',\n      );\n    } else if (brokenSymlink.wasReal || brokenSymlink.isReal) {\n      tooltip = __(\n        'Commenting on files that replace or are replaced by symbolic links is not supported',\n      );\n    }\n  } else if (fileOnlyMoved) {\n    tooltip = __('Commenting on files that are only moved or renamed is not supported');\n  } else if (brokenLineCode) {\n    tooltip = __('Commenting on this line is not supported');\n  }\n\n  return tooltip;\n};\n\nexport const parallelViewLeftLineType = ({\n  line,\n  highlighted,\n  commented,\n  selectionStart,\n  selectionEnd,\n}) => {\n  if (line?.right?.type === NEW_NO_NEW_LINE_TYPE) {\n    return OLD_NO_NEW_LINE_TYPE;\n  }\n\n  const lineTypeClass = line?.left ? line.left.type : EMPTY_CELL_TYPE;\n\n  return [\n    lineTypeClass,\n    {\n      hll: highlighted,\n      commented,\n      'highlight-top': highlighted || selectionStart,\n      'highlight-bottom': highlighted || selectionEnd,\n    },\n  ];\n};\n\n// eslint-disable-next-line max-params\nexport const shouldShowCommentButton = (hover, context, meta, discussions) => {\n  return hover && !context && !meta && !discussions;\n};\n\nexport const mapParallel =\n  ({ diffFile, hasParallelDraftLeft, hasParallelDraftRight, draftsForLine }) =>\n  (line) => {\n    let { left, right } = line;\n\n    // Dicussions/Comments\n    const hasExpandedDiscussionOnLeft =\n      left?.discussions?.length > 0 ? left?.discussionsExpanded : false;\n    const hasExpandedDiscussionOnRight =\n      right?.discussions?.length > 0 ? right?.discussionsExpanded : false;\n\n    const renderCommentRow =\n      hasExpandedDiscussionOnLeft ||\n      hasExpandedDiscussionOnRight ||\n      left?.hasForm ||\n      right?.hasForm;\n\n    if (left) {\n      left = {\n        ...left,\n        renderDiscussion: hasExpandedDiscussionOnLeft,\n        hasDraft: hasParallelDraftLeft(diffFile.file_hash, line),\n        lineDrafts: draftsForLine(diffFile.file_hash, line, 'left'),\n        hasCommentForm: left.hasForm,\n        isConflictMarker:\n          line.left.type === CONFLICT_MARKER_OUR || line.left.type === CONFLICT_MARKER_THEIR,\n        emptyCellClassMap: { conflict_our: line.right?.type === CONFLICT_THEIR },\n        addCommentTooltip: addCommentTooltip(line.left),\n      };\n    }\n    if (right) {\n      right = {\n        ...right,\n        renderDiscussion: Boolean(\n          hasExpandedDiscussionOnRight && right.type && right.type !== EXPANDED_LINE_TYPE,\n        ),\n        hasDraft: hasParallelDraftRight(diffFile.file_hash, line),\n        lineDrafts: draftsForLine(diffFile.file_hash, line, 'right'),\n        hasCommentForm: Boolean(right.hasForm && right.type && right.type !== EXPANDED_LINE_TYPE),\n        emptyCellClassMap: { conflict_their: line.left?.type === CONFLICT_OUR },\n        addCommentTooltip: addCommentTooltip(line.right),\n      };\n    }\n\n    return {\n      ...line,\n      left,\n      right,\n      isMatchLineLeft: isMatchLine(left?.type),\n      isMatchLineRight: isMatchLine(right?.type),\n      isContextLineLeft: isContextLine(left?.type),\n      isContextLineRight: isContextLine(right?.type),\n      hasDiscussionsLeft: hasDiscussions(left),\n      hasDiscussionsRight: hasDiscussions(right),\n      lineHrefOld: lineHref(left, diffFile),\n      lineHrefNew: lineHref(right, diffFile),\n      lineCode: lineCode(line),\n      isMetaLineLeft: isMetaLine(left?.type),\n      isMetaLineRight: isMetaLine(right?.type),\n      draftRowClasses: left?.hasDraft || right?.hasDraft ? '' : 'js-temp-notes-holder',\n      renderCommentRow,\n      commentRowClasses:\n        hasDiscussions(left) || hasDiscussions(right) ? '' : 'js-temp-notes-holder',\n    };\n  };\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","import { extend } from '../../vue';\nimport { NAME_FORM_RADIO_GROUP } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as props$1, formRadioCheckGroupMixin } from '../../mixins/form-radio-check-group';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(props$1, NAME_FORM_RADIO_GROUP);\n\n// --- Main component ---\n\n// @vue/component\nconst BFormRadioGroup = /*#__PURE__*/extend({\n  name: NAME_FORM_RADIO_GROUP,\n  mixins: [formRadioCheckGroupMixin],\n  provide() {\n    return {\n      getBvRadioGroup: () => this\n    };\n  },\n  props,\n  computed: {\n    isRadioGroup() {\n      return true;\n    }\n  }\n});\n\nexport { BFormRadioGroup, props };\n","import { formOptionsMixin } from '../../../../vendor/bootstrap-vue/src/mixins/form-options';\nimport { BFormRadioGroup } from '../../../../vendor/bootstrap-vue/src/components/form-radio/form-radio-group';\nimport { SafeHtmlDirective } from '../../../../directives/safe_html/safe_html';\nimport GlFormRadio from '../form_radio/form_radio';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  model\n} = BFormRadioGroup.options;\nvar script = {\n  name: 'GlFormRadioGroup',\n  components: {\n    BFormRadioGroup,\n    GlFormRadio\n  },\n  directives: {\n    SafeHtml: SafeHtmlDirective\n  },\n  mixins: [formOptionsMixin],\n  inheritAttrs: false,\n  model,\n  methods: {\n    onInput(e) {\n      /**\n       * Emitted when the selected value is changed.\n       *\n       * @event input\n       */\n      this.$emit('input', e);\n    },\n    onChange(e) {\n      /**\n       * Emitted when the selected value is changed.\n       *\n       * @event change\n       */\n      this.$emit('change', e);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-radio-group',_vm._g(_vm._b({staticClass:\"gl-form-checkbox-group\",attrs:{\"stacked\":\"\"},on:{\"input\":_vm.onInput,\"change\":_vm.onChange}},'b-form-radio-group',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"first\"),_vm._v(\" \"),_vm._l((_vm.formOptions),function(option,idx){return _c('gl-form-radio',{key:idx,attrs:{\"value\":option.value,\"disabled\":option.disabled}},[(option.html)?_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(option.html),expression:\"option.html\"}]}):_c('span',[_vm._v(_vm._s(option.text))])])}),_vm._v(\" \"),_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { joinPaths } from '~/lib/utils/url_utility';\n\n/**\n * Tell webpack to load assets from origin so that web workers don't break\n * See https://gitlab.com/gitlab-org/gitlab/-/issues/321656 for a fix\n */\nexport function resetServiceWorkersPublicPath() {\n  // No-op if we're running Vite instead of Webpack\n  if (typeof __webpack_public_path__ === 'undefined') return; // eslint-disable-line camelcase\n  // __webpack_public_path__ is a global variable that can be used to adjust\n  // the webpack publicPath setting at runtime.\n  // see: https://webpack.js.org/guides/public-path/\n  const relativeRootPath = (gon && gon.relative_url_root) || '';\n  __webpack_public_path__ = joinPaths(relativeRootPath, '/assets/webpack/'); // eslint-disable-line camelcase\n}\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nmodule.exports = isNil;\n","import { extend } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Supported values: 'lite', 'dark', or null\n  footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTfoot = /*#__PURE__*/extend({\n  name: NAME_TFOOT,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTfoot() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    tfootClasses() {\n      return [this.footVariant ? `thead-${this.footVariant}` : null];\n    },\n    tfootAttrs() {\n      return {\n        ...this.bvAttrs,\n        role: 'rowgroup'\n      };\n    }\n  },\n  render(h) {\n    return h('tfoot', {\n      class: this.tfootClasses,\n      attrs: this.tfootAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTfoot, props };\n","import {\n  getTimeago,\n  localeDateFormat,\n  newDate,\n  timeagoLanguageCode,\n} from '~/lib/utils/datetime_utility';\n\n/**\n * Mixin with time ago methods used in some vue components\n */\nexport default {\n  methods: {\n    timeFormatted(time, format) {\n      const timeago = getTimeago(format);\n\n      return timeago.format(newDate(time), timeagoLanguageCode);\n    },\n\n    tooltipTitle(time) {\n      return localeDateFormat.asDateTimeFull.format(newDate(time));\n    },\n  },\n};\n","export const LOADING = 'LOADING';\nexport const ERROR = 'ERROR';\nexport const SUCCESS = 'SUCCESS';\n\nexport const STATUS_FAILED = 'failed';\nexport const STATUS_SUCCESS = 'success';\nexport const STATUS_NEUTRAL = 'neutral';\nexport const STATUS_NOT_FOUND = 'not_found';\n\nexport const status = {\n  LOADING,\n  ERROR,\n  SUCCESS,\n};\n\n/**\n * Slot names for the ReportSection component, corresponding to the success,\n * loading and error statuses.\n */\nexport const SLOT_SUCCESS = 'success';\nexport const SLOT_LOADING = 'loading';\nexport const SLOT_ERROR = 'error';\n\nexport const CODE_QUALITY_SCALE_KEY = 'codeQuality';\nexport const SAST_SCALE_KEY = 'sast';\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasPreviousPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startCursor\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":92}};\n    doc.loc.source = {\"body\":\"fragment PageInfo on PageInfo {\\n  hasNextPage\\n  hasPreviousPage\\n  startCursor\\n  endCursor\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"PageInfo\"] = oneQuery(doc, \"PageInfo\");\n        \n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n  var result = reUnicode.lastIndex = 0;\n  while (reUnicode.test(string)) {\n    ++result;\n  }\n  return result;\n}\n\nmodule.exports = unicodeSize;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n  if (number === number) {\n    if (upper !== undefined) {\n      number = number <= upper ? number : upper;\n    }\n    if (lower !== undefined) {\n      number = number >= lower ? number : lower;\n    }\n  }\n  return number;\n}\n\nmodule.exports = baseClamp;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueParents\"},\"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\":\"title\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableState\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableSearchableField\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iidStartsWith\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssueType\"}}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"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\":\"attributes\"},\"name\":{\"kind\":\"Name\",\"value\":\"workItems\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iidStartsWith\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeAncestors\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeDescendants\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"workItemType\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":571}};\n    doc.loc.source = {\"body\":\"query issueParents(\\n  $fullPath: ID!\\n  $title: String\\n  $state: IssuableState\\n  $in: [IssuableSearchableField!]\\n  $iidStartsWith: String\\n  $types: [IssueType!]\\n) {\\n  workspace: group(fullPath: $fullPath) {\\n    id\\n    attributes: workItems(\\n      search: $title\\n      iid: $iidStartsWith\\n      in: $in\\n      state: $state\\n      types: $types\\n      includeAncestors: true\\n      includeDescendants: false\\n    ) {\\n      nodes {\\n        id\\n        iid\\n        title\\n        webUrl\\n        state\\n        workItemType {\\n          id\\n          name\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"issueParents\"] = oneQuery(doc, \"issueParents\");\n        \n","(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([\"jquery\"], function ($) {\n      return (root.returnExportsGlobal = factory($));\n    });\n  } else if (typeof exports === 'object') {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like enviroments that support module.exports,\n    // like Node.\n    module.exports = factory(require(\"jquery\"));\n  } else {\n    factory(jQuery);\n  }\n}(this, function ($) {\n\n/*\n  Implement Github like autocomplete mentions\n  http://ichord.github.com/At.js\n\n  Copyright (c) 2013 chord.luo@gmail.com\n  Licensed under the MIT license.\n*/\n\n/*\n本插件操作 textarea 或者 input 内的插入符\n只实现了获得插入符在文本框中的位置,我设置\n插入符的位置.\n*/\n\n\"use strict\";\nvar EditableCaret, InputCaret, Mirror, Utils, discoveryIframeOf, methods, oDocument, oFrame, oWindow, pluginName, setContextBy;\n\npluginName = 'caret';\n\nEditableCaret = (function() {\n  function EditableCaret($inputor) {\n    this.$inputor = $inputor;\n    this.domInputor = this.$inputor[0];\n  }\n\n  EditableCaret.prototype.setPos = function(pos) {\n    var fn, found, offset, sel;\n    if (sel = oWindow.getSelection()) {\n      offset = 0;\n      found = false;\n      (fn = function(pos, parent) {\n        var node, range, _i, _len, _ref, _results;\n        _ref = parent.childNodes;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          node = _ref[_i];\n          if (found) {\n            break;\n          }\n          if (node.nodeType === 3) {\n            if (offset + node.length >= pos) {\n              found = true;\n              range = oDocument.createRange();\n              range.setStart(node, pos - offset);\n              sel.removeAllRanges();\n              sel.addRange(range);\n              break;\n            } else {\n              _results.push(offset += node.length);\n            }\n          } else {\n            _results.push(fn(pos, node));\n          }\n        }\n        return _results;\n      })(pos, this.domInputor);\n    }\n    return this.domInputor;\n  };\n\n  EditableCaret.prototype.getIEPosition = function() {\n    return this.getPosition();\n  };\n\n  EditableCaret.prototype.getPosition = function() {\n    var inputor_offset, offset;\n    offset = this.getOffset();\n    inputor_offset = this.$inputor.offset();\n    offset.left -= inputor_offset.left;\n    offset.top -= inputor_offset.top;\n    return offset;\n  };\n\n  EditableCaret.prototype.getOldIEPos = function() {\n    var preCaretTextRange, textRange;\n    textRange = oDocument.selection.createRange();\n    preCaretTextRange = oDocument.body.createTextRange();\n    preCaretTextRange.moveToElementText(this.domInputor);\n    preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n    return preCaretTextRange.text.length;\n  };\n\n  EditableCaret.prototype.getPos = function() {\n    var clonedRange, pos, range;\n    if (range = this.range()) {\n      clonedRange = range.cloneRange();\n      clonedRange.selectNodeContents(this.domInputor);\n      clonedRange.setEnd(range.endContainer, range.endOffset);\n      pos = clonedRange.toString().length;\n      clonedRange.detach();\n      return pos;\n    } else if (oDocument.selection) {\n      return this.getOldIEPos();\n    }\n  };\n\n  EditableCaret.prototype.getOldIEOffset = function() {\n    var range, rect;\n    range = oDocument.selection.createRange().duplicate();\n    range.moveStart(\"character\", -1);\n    rect = range.getBoundingClientRect();\n    return {\n      height: rect.bottom - rect.top,\n      left: rect.left,\n      top: rect.top\n    };\n  };\n\n  EditableCaret.prototype.getOffset = function(pos) {\n    var clonedRange, offset, range, rect, shadowCaret;\n    if (oWindow.getSelection && (range = this.range())) {\n      if (range.endOffset - 1 > 0 && range.endContainer !== this.domInputor) {\n        clonedRange = range.cloneRange();\n        clonedRange.setStart(range.endContainer, range.endOffset - 1);\n        clonedRange.setEnd(range.endContainer, range.endOffset);\n        rect = clonedRange.getBoundingClientRect();\n        offset = {\n          height: rect.height,\n          left: rect.left + rect.width,\n          top: rect.top\n        };\n        clonedRange.detach();\n      }\n      if (!offset || (offset != null ? offset.height : void 0) === 0) {\n        clonedRange = range.cloneRange();\n        shadowCaret = $(oDocument.createTextNode(\"|\"));\n        clonedRange.insertNode(shadowCaret[0]);\n        clonedRange.selectNode(shadowCaret[0]);\n        rect = clonedRange.getBoundingClientRect();\n        offset = {\n          height: rect.height,\n          left: rect.left,\n          top: rect.top\n        };\n        shadowCaret.remove();\n        clonedRange.detach();\n      }\n    } else if (oDocument.selection) {\n      offset = this.getOldIEOffset();\n    }\n    if (offset) {\n      offset.top += $(oWindow).scrollTop();\n      offset.left += $(oWindow).scrollLeft();\n    }\n    return offset;\n  };\n\n  EditableCaret.prototype.range = function() {\n    var sel;\n    if (!oWindow.getSelection) {\n      return;\n    }\n    sel = oWindow.getSelection();\n    if (sel.rangeCount > 0) {\n      return sel.getRangeAt(0);\n    } else {\n      return null;\n    }\n  };\n\n  return EditableCaret;\n\n})();\n\nInputCaret = (function() {\n  function InputCaret($inputor) {\n    this.$inputor = $inputor;\n    this.domInputor = this.$inputor[0];\n  }\n\n  InputCaret.prototype.getIEPos = function() {\n    var endRange, inputor, len, normalizedValue, pos, range, textInputRange;\n    inputor = this.domInputor;\n    range = oDocument.selection.createRange();\n    pos = 0;\n    if (range && range.parentElement() === inputor) {\n      normalizedValue = inputor.value.replace(/\\r\\n/g, \"\\n\");\n      len = normalizedValue.length;\n      textInputRange = inputor.createTextRange();\n      textInputRange.moveToBookmark(range.getBookmark());\n      endRange = inputor.createTextRange();\n      endRange.collapse(false);\n      if (textInputRange.compareEndPoints(\"StartToEnd\", endRange) > -1) {\n        pos = len;\n      } else {\n        pos = -textInputRange.moveStart(\"character\", -len);\n      }\n    }\n    return pos;\n  };\n\n  InputCaret.prototype.getPos = function() {\n    if (oDocument.selection) {\n      return this.getIEPos();\n    } else {\n      return this.domInputor.selectionStart;\n    }\n  };\n\n  InputCaret.prototype.setPos = function(pos) {\n    var inputor, range;\n    inputor = this.domInputor;\n    if (oDocument.selection) {\n      range = inputor.createTextRange();\n      range.move(\"character\", pos);\n      range.select();\n    } else if (inputor.setSelectionRange) {\n      inputor.setSelectionRange(pos, pos);\n    }\n    return inputor;\n  };\n\n  InputCaret.prototype.getIEOffset = function(pos) {\n    var h, textRange, x, y;\n    textRange = this.domInputor.createTextRange();\n    pos || (pos = this.getPos());\n    textRange.move('character', pos);\n    x = textRange.boundingLeft;\n    y = textRange.boundingTop;\n    h = textRange.boundingHeight;\n    return {\n      left: x,\n      top: y,\n      height: h\n    };\n  };\n\n  InputCaret.prototype.getOffset = function(pos) {\n    var $inputor, offset, position;\n    $inputor = this.$inputor;\n    if (oDocument.selection) {\n      offset = this.getIEOffset(pos);\n      offset.top += $(oWindow).scrollTop() + $inputor.scrollTop();\n      offset.left += $(oWindow).scrollLeft() + $inputor.scrollLeft();\n      return offset;\n    } else {\n      offset = $inputor.offset();\n      position = this.getPosition(pos);\n      return offset = {\n        left: offset.left + position.left - $inputor.scrollLeft(),\n        top: offset.top + position.top - $inputor.scrollTop(),\n        height: position.height\n      };\n    }\n  };\n\n  InputCaret.prototype.getPosition = function(pos) {\n    var $inputor, at_rect, end_range, format, html, mirror, start_range;\n    $inputor = this.$inputor;\n    format = function(value) {\n      value = value.replace(/<|>|`|\"|&/g, '?').replace(/\\r\\n|\\r|\\n/g, \"<br/>\");\n      if (/firefox/i.test(navigator.userAgent)) {\n        value = value.replace(/\\s/g, '&nbsp;');\n      }\n      return value;\n    };\n    if (pos === void 0) {\n      pos = this.getPos();\n    }\n    start_range = $inputor.val().slice(0, pos);\n    end_range = $inputor.val().slice(pos);\n    html = \"<span style='position: relative; display: inline;'>\" + format(start_range) + \"</span>\";\n    html += \"<span id='caret' style='position: relative; display: inline;'>|</span>\";\n    html += \"<span style='position: relative; display: inline;'>\" + format(end_range) + \"</span>\";\n    mirror = new Mirror($inputor);\n    return at_rect = mirror.create(html).rect();\n  };\n\n  InputCaret.prototype.getIEPosition = function(pos) {\n    var h, inputorOffset, offset, x, y;\n    offset = this.getIEOffset(pos);\n    inputorOffset = this.$inputor.offset();\n    x = offset.left - inputorOffset.left;\n    y = offset.top - inputorOffset.top;\n    h = offset.height;\n    return {\n      left: x,\n      top: y,\n      height: h\n    };\n  };\n\n  return InputCaret;\n\n})();\n\nMirror = (function() {\n  Mirror.prototype.css_attr = [\"borderBottomWidth\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderLeftStyle\", \"borderTopWidth\", \"boxSizing\", \"fontFamily\", \"fontSize\", \"fontWeight\", \"height\", \"letterSpacing\", \"lineHeight\", \"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"outlineWidth\", \"overflow\", \"overflowX\", \"overflowY\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"paddingTop\", \"textAlign\", \"textOverflow\", \"textTransform\", \"whiteSpace\", \"wordBreak\", \"wordWrap\"];\n\n  function Mirror($inputor) {\n    this.$inputor = $inputor;\n  }\n\n  Mirror.prototype.mirrorCss = function() {\n    var css,\n      _this = this;\n    css = {\n      position: 'absolute',\n      left: -9999,\n      top: 0,\n      zIndex: -20000\n    };\n    if (this.$inputor.prop('tagName') === 'TEXTAREA') {\n      this.css_attr.push('width');\n    }\n    $.each(this.css_attr, function(i, p) {\n      return css[p] = _this.$inputor.css(p);\n    });\n    return css;\n  };\n\n  Mirror.prototype.create = function(html) {\n    this.$mirror = $('<div></div>');\n    this.$mirror.css(this.mirrorCss());\n    this.$mirror.html(html);\n    this.$inputor.after(this.$mirror);\n    return this;\n  };\n\n  Mirror.prototype.rect = function() {\n    var $flag, pos, rect;\n    $flag = this.$mirror.find(\"#caret\");\n    pos = $flag.position();\n    rect = {\n      left: pos.left,\n      top: pos.top,\n      height: $flag.height()\n    };\n    this.$mirror.remove();\n    return rect;\n  };\n\n  return Mirror;\n\n})();\n\nUtils = {\n  contentEditable: function($inputor) {\n    return !!($inputor[0].contentEditable && $inputor[0].contentEditable === 'true');\n  }\n};\n\nmethods = {\n  pos: function(pos) {\n    if (pos || pos === 0) {\n      return this.setPos(pos);\n    } else {\n      return this.getPos();\n    }\n  },\n  position: function(pos) {\n    if (oDocument.selection) {\n      return this.getIEPosition(pos);\n    } else {\n      return this.getPosition(pos);\n    }\n  },\n  offset: function(pos) {\n    var offset;\n    offset = this.getOffset(pos);\n    return offset;\n  }\n};\n\noDocument = null;\n\noWindow = null;\n\noFrame = null;\n\nsetContextBy = function(settings) {\n  var iframe;\n  if (iframe = settings != null ? settings.iframe : void 0) {\n    oFrame = iframe;\n    oWindow = iframe.contentWindow;\n    return oDocument = iframe.contentDocument || oWindow.document;\n  } else {\n    oFrame = void 0;\n    oWindow = window;\n    return oDocument = document;\n  }\n};\n\ndiscoveryIframeOf = function($dom) {\n  var error;\n  oDocument = $dom[0].ownerDocument;\n  oWindow = oDocument.defaultView || oDocument.parentWindow;\n  try {\n    return oFrame = oWindow.frameElement;\n  } catch (_error) {\n    error = _error;\n  }\n};\n\n$.fn.caret = function(method, value, settings) {\n  var caret;\n  if (methods[method]) {\n    if ($.isPlainObject(value)) {\n      setContextBy(value);\n      value = void 0;\n    } else {\n      setContextBy(settings);\n    }\n    caret = Utils.contentEditable(this) ? new EditableCaret(this) : new InputCaret(this);\n    return methods[method].apply(caret, [value]);\n  } else {\n    return $.error(\"Method \" + method + \" does not exist on jQuery.caret\");\n  }\n};\n\n$.fn.caret.EditableCaret = EditableCaret;\n\n$.fn.caret.InputCaret = InputCaret;\n\n$.fn.caret.Utils = Utils;\n\n$.fn.caret.apis = methods;\n\n\n}));\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Url\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailUrl\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"href\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Diff\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailDiff\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"before\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Code\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCode\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"FileLocation\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailFileLocation\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lineStart\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lineEnd\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ModuleLocation\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailModuleLocation\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"moduleName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Commit\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCommit\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Text\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailText\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Markdown\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailMarkdown\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailBoolean\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailInt\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetail\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FileLocation\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Url\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Diff\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Code\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Commit\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Markdown\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Text\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ModuleLocation\"},\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"List\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"NamedList\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailNamedList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fieldName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Table\"},\"directives\":[]},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailList\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ListFields\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}}]}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlowNode\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCodeFlowNode\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodeType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileLocation\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"FileLocation\"},\"directives\":[]}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlows\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailCodeFlows\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"items\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlowNode\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"TableFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailTable\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rows\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"row\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Table\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDetailTable\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"type\"},\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rows\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"row\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"TableFields\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":2337}};\n    doc.loc.source = {\"body\":\"fragment Url on VulnerabilityDetailUrl {\\n  type: __typename\\n  name\\n  href\\n}\\n\\nfragment Diff on VulnerabilityDetailDiff {\\n  type: __typename\\n  name\\n  before\\n  after\\n}\\n\\nfragment Code on VulnerabilityDetailCode {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment FileLocation on VulnerabilityDetailFileLocation {\\n  type: __typename\\n  name\\n  fileName\\n  lineStart\\n  lineEnd\\n}\\n\\nfragment ModuleLocation on VulnerabilityDetailModuleLocation {\\n  type: __typename\\n  name\\n  moduleName\\n  offset\\n}\\n\\nfragment Commit on VulnerabilityDetailCommit {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Text on VulnerabilityDetailText {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Markdown on VulnerabilityDetailMarkdown {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Boolean on VulnerabilityDetailBoolean {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment Int on VulnerabilityDetailInt {\\n  type: __typename\\n  name\\n  value\\n}\\n\\nfragment NonNestedReportTypes on VulnerabilityDetail {\\n  ...FileLocation\\n  ...Url\\n  ...Diff\\n  ...Code\\n  ...Commit\\n  ...Markdown\\n  ...Text\\n  ...Int\\n  ...Boolean\\n  ...ModuleLocation\\n}\\n\\nfragment ListFields on VulnerabilityDetailList {\\n  type: __typename\\n  name\\n}\\n\\nfragment List on VulnerabilityDetailList {\\n  ...ListFields\\n  items {\\n    ...NonNestedReportTypes\\n    ... on VulnerabilityDetailList {\\n      ...ListFields\\n      items {\\n        ...NonNestedReportTypes\\n      }\\n    }\\n  }\\n}\\n\\nfragment NamedList on VulnerabilityDetailNamedList {\\n  type: __typename\\n  name\\n  items {\\n    name\\n    fieldName\\n    value {\\n      ...NonNestedReportTypes\\n      ...Table\\n      ... on VulnerabilityDetailList {\\n        ...ListFields\\n        items {\\n          ...NonNestedReportTypes\\n        }\\n      }\\n    }\\n  }\\n}\\n\\nfragment CodeFlowNode on VulnerabilityDetailCodeFlowNode {\\n  type: __typename\\n  nodeType\\n  fileLocation {\\n    ...FileLocation\\n  }\\n}\\n\\nfragment CodeFlows on VulnerabilityDetailCodeFlows {\\n  type: __typename\\n  name\\n  items {\\n    ... {\\n      ...CodeFlowNode\\n    }\\n  }\\n}\\n\\nfragment TableFields on VulnerabilityDetailTable {\\n  type: __typename\\n  name\\n  headers {\\n    ...NonNestedReportTypes\\n  }\\n  rows {\\n    row {\\n      ...NonNestedReportTypes\\n    }\\n  }\\n}\\n\\nfragment Table on VulnerabilityDetailTable {\\n  type: __typename\\n  name\\n  headers {\\n    ...NonNestedReportTypes\\n  }\\n  rows {\\n    row {\\n      ...NonNestedReportTypes\\n      ...TableFields\\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[\"Url\"] = oneQuery(doc, \"Url\");\n        \n        module.exports[\"Diff\"] = oneQuery(doc, \"Diff\");\n        \n        module.exports[\"Code\"] = oneQuery(doc, \"Code\");\n        \n        module.exports[\"FileLocation\"] = oneQuery(doc, \"FileLocation\");\n        \n        module.exports[\"ModuleLocation\"] = oneQuery(doc, \"ModuleLocation\");\n        \n        module.exports[\"Commit\"] = oneQuery(doc, \"Commit\");\n        \n        module.exports[\"Text\"] = oneQuery(doc, \"Text\");\n        \n        module.exports[\"Markdown\"] = oneQuery(doc, \"Markdown\");\n        \n        module.exports[\"Boolean\"] = oneQuery(doc, \"Boolean\");\n        \n        module.exports[\"Int\"] = oneQuery(doc, \"Int\");\n        \n        module.exports[\"NonNestedReportTypes\"] = oneQuery(doc, \"NonNestedReportTypes\");\n        \n        module.exports[\"ListFields\"] = oneQuery(doc, \"ListFields\");\n        \n        module.exports[\"List\"] = oneQuery(doc, \"List\");\n        \n        module.exports[\"NamedList\"] = oneQuery(doc, \"NamedList\");\n        \n        module.exports[\"CodeFlowNode\"] = oneQuery(doc, \"CodeFlowNode\");\n        \n        module.exports[\"CodeFlows\"] = oneQuery(doc, \"CodeFlows\");\n        \n        module.exports[\"TableFields\"] = oneQuery(doc, \"TableFields\");\n        \n        module.exports[\"Table\"] = oneQuery(doc, \"Table\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"getTitleSubscription\"},\"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\":\"mergeRequestMergeStatusUpdated\"},\"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\":\"titleHtml\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":185}};\n    doc.loc.source = {\"body\":\"subscription getTitleSubscription($issuableId: IssuableID!) {\\n  mergeRequestMergeStatusUpdated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      id\\n      titleHtml\\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[\"getTitleSubscription\"] = oneQuery(doc, \"getTitleSubscription\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"projectIssueEpic\"},\"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\":\"issue\"},\"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\":\"hasEpic\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasParent\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"attribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"epic\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"EpicFragment\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":282}};\n    doc.loc.source = {\"body\":\"#import \\\"./epic.fragment.graphql\\\"\\n\\nquery projectIssueEpic($fullPath: ID!, $iid: String!) {\\n  workspace: project(fullPath: $fullPath) {\\n    id\\n    issuable: issue(iid: $iid) {\\n      id\\n      hasEpic\\n      hasParent\\n      attribute: epic {\\n        ...EpicFragment\\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(\"./epic.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[\"projectIssueEpic\"] = oneQuery(doc, \"projectIssueEpic\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"updateIssueHealthStatus\"},\"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\":\"healthStatus\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"HealthStatus\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateIssue\"},\"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\":\"healthStatus\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatus\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuable\"},\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatus\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":265}};\n    doc.loc.source = {\"body\":\"mutation updateIssueHealthStatus($projectPath: ID!, $iid: String!, $healthStatus: HealthStatus) {\\n  updateIssue(input: { projectPath: $projectPath, iid: $iid, healthStatus: $healthStatus }) {\\n    issuable: issue {\\n      id\\n      healthStatus\\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[\"updateIssueHealthStatus\"] = oneQuery(doc, \"updateIssueHealthStatus\");\n        \n","import { s__ } from '~/locale';\n\nexport const CATEGORY_OPTIONS = [\n  { value: 'spam', text: s__(\"ReportAbuse|They're posting spam.\") },\n  { value: 'offensive', text: s__(\"ReportAbuse|They're being offensive or abusive.\") },\n  { value: 'phishing', text: s__(\"ReportAbuse|They're phishing.\") },\n  { value: 'crypto', text: s__(\"ReportAbuse|They're crypto mining.\") },\n  {\n    value: 'credentials',\n    text: s__(\"ReportAbuse|They're posting personal information or credentials.\"),\n  },\n  { value: 'copyright', text: s__(\"ReportAbuse|They're violating a copyright or trademark.\") },\n  { value: 'malware', text: s__(\"ReportAbuse|They're posting malware.\") },\n  { value: 'other', text: s__('ReportAbuse|Something else.') },\n];\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"projectIssueIteration\"},\"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\":\"issue\"},\"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\",\"alias\":{\"kind\":\"Name\",\"value\":\"attribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"iteration\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"IterationFragment\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":272}};\n    doc.loc.source = {\"body\":\"#import \\\"./iteration.fragment.graphql\\\"\\n\\nquery projectIssueIteration($fullPath: ID!, $iid: String!) {\\n  workspace: project(fullPath: $fullPath) {\\n    id\\n    issuable: issue(iid: $iid) {\\n      id\\n      attribute: iteration {\\n        ...IterationFragment\\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(\"./iteration.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[\"projectIssueIteration\"] = oneQuery(doc, \"projectIssueIteration\");\n        \n","/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n  if (obj instanceof Map) {\n    obj.clear =\n      obj.delete =\n      obj.set =\n        function () {\n          throw new Error('map is read-only');\n        };\n  } else if (obj instanceof Set) {\n    obj.add =\n      obj.clear =\n      obj.delete =\n        function () {\n          throw new Error('set is read-only');\n        };\n  }\n\n  // Freeze self\n  Object.freeze(obj);\n\n  Object.getOwnPropertyNames(obj).forEach((name) => {\n    const prop = obj[name];\n    const type = typeof prop;\n\n    // Freeze prop if it is an object or function and also not already frozen\n    if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n      deepFreeze(prop);\n    }\n  });\n\n  return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n  /**\n   * @param {CompiledMode} mode\n   */\n  constructor(mode) {\n    // eslint-disable-next-line no-undefined\n    if (mode.data === undefined) mode.data = {};\n\n    this.data = mode.data;\n    this.isMatchIgnored = false;\n  }\n\n  ignoreMatch() {\n    this.isMatchIgnored = true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n  return value\n    .replace(/&/g, '&amp;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;')\n    .replace(/\"/g, '&quot;')\n    .replace(/'/g, '&#x27;');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n  /** @type Record<string,any> */\n  const result = Object.create(null);\n\n  for (const key in original) {\n    result[key] = original[key];\n  }\n  objects.forEach(function(obj) {\n    for (const key in obj) {\n      result[key] = obj[key];\n    }\n  });\n  return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n  // rarely we can have a sublanguage where language is undefined\n  // TODO: track down why\n  return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n  // sub-language\n  if (name.startsWith(\"language:\")) {\n    return name.replace(\"language:\", \"language-\");\n  }\n  // tiered scope: comment.line\n  if (name.includes(\".\")) {\n    const pieces = name.split(\".\");\n    return [\n      `${prefix}${pieces.shift()}`,\n      ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n    ].join(\" \");\n  }\n  // simple scope\n  return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n  /**\n   * Creates a new HTMLRenderer\n   *\n   * @param {Tree} parseTree - the parse tree (must support `walk` API)\n   * @param {{classPrefix: string}} options\n   */\n  constructor(parseTree, options) {\n    this.buffer = \"\";\n    this.classPrefix = options.classPrefix;\n    parseTree.walk(this);\n  }\n\n  /**\n   * Adds texts to the output stream\n   *\n   * @param {string} text */\n  addText(text) {\n    this.buffer += escapeHTML(text);\n  }\n\n  /**\n   * Adds a node open to the output stream (if needed)\n   *\n   * @param {Node} node */\n  openNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    const className = scopeToCSSClass(node.scope,\n      { prefix: this.classPrefix });\n    this.span(className);\n  }\n\n  /**\n   * Adds a node close to the output stream (if needed)\n   *\n   * @param {Node} node */\n  closeNode(node) {\n    if (!emitsWrappingTags(node)) return;\n\n    this.buffer += SPAN_CLOSE;\n  }\n\n  /**\n   * returns the accumulated buffer\n  */\n  value() {\n    return this.buffer;\n  }\n\n  // helpers\n\n  /**\n   * Builds a span element\n   *\n   * @param {string} className */\n  span(className) {\n    this.buffer += `<span class=\"${className}\">`;\n  }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/**  */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n  /** @type DataNode */\n  const result = { children: [] };\n  Object.assign(result, opts);\n  return result;\n};\n\nclass TokenTree {\n  constructor() {\n    /** @type DataNode */\n    this.rootNode = newNode();\n    this.stack = [this.rootNode];\n  }\n\n  get top() {\n    return this.stack[this.stack.length - 1];\n  }\n\n  get root() { return this.rootNode; }\n\n  /** @param {Node} node */\n  add(node) {\n    this.top.children.push(node);\n  }\n\n  /** @param {string} scope */\n  openNode(scope) {\n    /** @type Node */\n    const node = newNode({ scope });\n    this.add(node);\n    this.stack.push(node);\n  }\n\n  closeNode() {\n    if (this.stack.length > 1) {\n      return this.stack.pop();\n    }\n    // eslint-disable-next-line no-undefined\n    return undefined;\n  }\n\n  closeAllNodes() {\n    while (this.closeNode());\n  }\n\n  toJSON() {\n    return JSON.stringify(this.rootNode, null, 4);\n  }\n\n  /**\n   * @typedef { import(\"./html_renderer\").Renderer } Renderer\n   * @param {Renderer} builder\n   */\n  walk(builder) {\n    // this does not\n    return this.constructor._walk(builder, this.rootNode);\n    // this works\n    // return TokenTree._walk(builder, this.rootNode);\n  }\n\n  /**\n   * @param {Renderer} builder\n   * @param {Node} node\n   */\n  static _walk(builder, node) {\n    if (typeof node === \"string\") {\n      builder.addText(node);\n    } else if (node.children) {\n      builder.openNode(node);\n      node.children.forEach((child) => this._walk(builder, child));\n      builder.closeNode(node);\n    }\n    return builder;\n  }\n\n  /**\n   * @param {Node} node\n   */\n  static _collapse(node) {\n    if (typeof node === \"string\") return;\n    if (!node.children) return;\n\n    if (node.children.every(el => typeof el === \"string\")) {\n      // node.text = node.children.join(\"\");\n      // delete node.children;\n      node.children = [node.children.join(\"\")];\n    } else {\n      node.children.forEach((child) => {\n        TokenTree._collapse(child);\n      });\n    }\n  }\n}\n\n/**\n  Currently this is all private API, but this is the minimal API necessary\n  that an Emitter must implement to fully support the parser.\n\n  Minimal interface:\n\n  - addText(text)\n  - __addSublanguage(emitter, subLanguageName)\n  - startScope(scope)\n  - endScope()\n  - finalize()\n  - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n  /**\n   * @param {*} options\n   */\n  constructor(options) {\n    super();\n    this.options = options;\n  }\n\n  /**\n   * @param {string} text\n   */\n  addText(text) {\n    if (text === \"\") { return; }\n\n    this.add(text);\n  }\n\n  /** @param {string} scope */\n  startScope(scope) {\n    this.openNode(scope);\n  }\n\n  endScope() {\n    this.closeNode();\n  }\n\n  /**\n   * @param {Emitter & {root: DataNode}} emitter\n   * @param {string} name\n   */\n  __addSublanguage(emitter, name) {\n    /** @type DataNode */\n    const node = emitter.root;\n    if (name) node.scope = `language:${name}`;\n\n    this.add(node);\n  }\n\n  toHTML() {\n    const renderer = new HTMLRenderer(this, this.options);\n    return renderer.value();\n  }\n\n  finalize() {\n    this.closeAllNodes();\n    return true;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n  if (!re) return null;\n  if (typeof re === \"string\") return re;\n\n  return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n  return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n  return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n  return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n  const joined = args.map((x) => source(x)).join(\"\");\n  return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n  const opts = args[args.length - 1];\n\n  if (typeof opts === 'object' && opts.constructor === Object) {\n    args.splice(args.length - 1, 1);\n    return opts;\n  } else {\n    return {};\n  }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n  /** @type { object & {capture?: boolean} }  */\n  const opts = stripOptionsFromArgs(args);\n  const joined = '('\n    + (opts.capture ? \"\" : \"?:\")\n    + args.map((x) => source(x)).join(\"|\") + \")\";\n  return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n  return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n  const match = re && re.exec(lexeme);\n  return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n//   interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n//   follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n  let numCaptures = 0;\n\n  return regexps.map((regex) => {\n    numCaptures += 1;\n    const offset = numCaptures;\n    let re = source(regex);\n    let out = '';\n\n    while (re.length > 0) {\n      const match = BACKREF_RE.exec(re);\n      if (!match) {\n        out += re;\n        break;\n      }\n      out += re.substring(0, match.index);\n      re = re.substring(match.index + match[0].length);\n      if (match[0][0] === '\\\\' && match[1]) {\n        // Adjust the backreference.\n        out += '\\\\' + String(Number(match[1]) + offset);\n      } else {\n        out += match[0];\n        if (match[0] === '(') {\n          numCaptures++;\n        }\n      }\n    }\n    return out;\n  }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n  const beginShebang = /^#![ ]*\\//;\n  if (opts.binary) {\n    opts.begin = concat(\n      beginShebang,\n      /.*\\b/,\n      opts.binary,\n      /\\b.*/);\n  }\n  return inherit$1({\n    scope: 'meta',\n    begin: beginShebang,\n    end: /$/,\n    relevance: 0,\n    /** @type {ModeCallback} */\n    \"on:begin\": (m, resp) => {\n      if (m.index !== 0) resp.ignoreMatch();\n    }\n  }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n  begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n  scope: 'string',\n  begin: '\\'',\n  end: '\\'',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n  scope: 'string',\n  begin: '\"',\n  end: '\"',\n  illegal: '\\\\n',\n  contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n  begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n  const mode = inherit$1(\n    {\n      scope: 'comment',\n      begin,\n      end,\n      contains: []\n    },\n    modeOptions\n  );\n  mode.contains.push({\n    scope: 'doctag',\n    // hack to avoid the space from being included. the space is necessary to\n    // match here to prevent the plain text rule below from gobbling up doctags\n    begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n    end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n    excludeBegin: true,\n    relevance: 0\n  });\n  const ENGLISH_WORD = either(\n    // list of common 1 and 2 letter words in English\n    \"I\",\n    \"a\",\n    \"is\",\n    \"so\",\n    \"us\",\n    \"to\",\n    \"at\",\n    \"if\",\n    \"in\",\n    \"it\",\n    \"on\",\n    // note: this is not an exhaustive list of contractions, just popular ones\n    /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n    /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n    /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n  );\n  // looking like plain text, more likely to be a comment\n  mode.contains.push(\n    {\n      // TODO: how to include \", (, ) without breaking grammars that use these for\n      // comment delimiters?\n      // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n      // ---\n\n      // this tries to find sequences of 3 english words in a row (without any\n      // \"programming\" type syntax) this gives us a strong signal that we've\n      // TRULY found a comment - vs perhaps scanning with the wrong language.\n      // It's possible to find something that LOOKS like the start of the\n      // comment - but then if there is no readable text - good chance it is a\n      // false match and not a comment.\n      //\n      // for a visual example please see:\n      // https://github.com/highlightjs/highlight.js/issues/2827\n\n      begin: concat(\n        /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n        '(',\n        ENGLISH_WORD,\n        /[.]?[:]?([.][ ]|[ ])/,\n        '){3}') // look for 3 words in a row\n    }\n  );\n  return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n  scope: 'number',\n  begin: NUMBER_RE,\n  relevance: 0\n};\nconst C_NUMBER_MODE = {\n  scope: 'number',\n  begin: C_NUMBER_RE,\n  relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n  scope: 'number',\n  begin: BINARY_NUMBER_RE,\n  relevance: 0\n};\nconst REGEXP_MODE = {\n  scope: \"regexp\",\n  begin: /\\/(?=[^/\\n]*\\/)/,\n  end: /\\/[gimuy]*/,\n  contains: [\n    BACKSLASH_ESCAPE,\n    {\n      begin: /\\[/,\n      end: /\\]/,\n      relevance: 0,\n      contains: [BACKSLASH_ESCAPE]\n    }\n  ]\n};\nconst TITLE_MODE = {\n  scope: 'title',\n  begin: IDENT_RE,\n  relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n  scope: 'title',\n  begin: UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\nconst METHOD_GUARD = {\n  // excludes method names from keyword processing\n  begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n  relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n  return Object.assign(mode,\n    {\n      /** @type {ModeCallback} */\n      'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n      /** @type {ModeCallback} */\n      'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n    });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  APOS_STRING_MODE: APOS_STRING_MODE,\n  BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n  BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n  BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n  COMMENT: COMMENT,\n  C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n  C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n  C_NUMBER_MODE: C_NUMBER_MODE,\n  C_NUMBER_RE: C_NUMBER_RE,\n  END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n  HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n  IDENT_RE: IDENT_RE,\n  MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n  METHOD_GUARD: METHOD_GUARD,\n  NUMBER_MODE: NUMBER_MODE,\n  NUMBER_RE: NUMBER_RE,\n  PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n  QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n  REGEXP_MODE: REGEXP_MODE,\n  RE_STARTERS_RE: RE_STARTERS_RE,\n  SHEBANG: SHEBANG,\n  TITLE_MODE: TITLE_MODE,\n  UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n  UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`.  The extension then just moves `match` into\n// `begin` when it runs.  Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n  const before = match.input[match.index - 1];\n  if (before === \".\") {\n    response.ignoreMatch();\n  }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.className !== undefined) {\n    mode.scope = mode.className;\n    delete mode.className;\n  }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n  if (!parent) return;\n  if (!mode.beginKeywords) return;\n\n  // for languages with keywords that include non-word characters checking for\n  // a word boundary is not sufficient, so instead we check for a word boundary\n  // or whitespace - this does no harm in any case since our keyword engine\n  // doesn't allow spaces in keywords anyways and we still check for the boundary\n  // first\n  mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n  mode.__beforeBegin = skipIfHasPrecedingDot;\n  mode.keywords = mode.keywords || mode.beginKeywords;\n  delete mode.beginKeywords;\n\n  // prevents double relevance, the keywords themselves provide\n  // relevance, the mode doesn't need to double it\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n  if (!Array.isArray(mode.illegal)) return;\n\n  mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n  if (!mode.match) return;\n  if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n  mode.begin = mode.match;\n  delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n  // eslint-disable-next-line no-undefined\n  if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n  if (!mode.beforeMatch) return;\n  // starts conflicts with endsParent which we need to make sure the child\n  // rule is not matched multiple times\n  if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n  const originalMode = Object.assign({}, mode);\n  Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n  mode.keywords = originalMode.keywords;\n  mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n  mode.starts = {\n    relevance: 0,\n    contains: [\n      Object.assign(originalMode, { endsParent: true })\n    ]\n  };\n  mode.relevance = 0;\n\n  delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n  'of',\n  'and',\n  'for',\n  'in',\n  'not',\n  'or',\n  'if',\n  'then',\n  'parent', // common variable name\n  'list', // common variable name\n  'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n  /** @type {import(\"highlight.js/private\").KeywordDict} */\n  const compiledKeywords = Object.create(null);\n\n  // input can be a string of keywords, an array of keywords, or a object with\n  // named keys representing scopeName (which can then point to a string or array)\n  if (typeof rawKeywords === 'string') {\n    compileList(scopeName, rawKeywords.split(\" \"));\n  } else if (Array.isArray(rawKeywords)) {\n    compileList(scopeName, rawKeywords);\n  } else {\n    Object.keys(rawKeywords).forEach(function(scopeName) {\n      // collapse all our objects back into the parent object\n      Object.assign(\n        compiledKeywords,\n        compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n      );\n    });\n  }\n  return compiledKeywords;\n\n  // ---\n\n  /**\n   * Compiles an individual list of keywords\n   *\n   * Ex: \"for if when while|5\"\n   *\n   * @param {string} scopeName\n   * @param {Array<string>} keywordList\n   */\n  function compileList(scopeName, keywordList) {\n    if (caseInsensitive) {\n      keywordList = keywordList.map(x => x.toLowerCase());\n    }\n    keywordList.forEach(function(keyword) {\n      const pair = keyword.split('|');\n      compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n    });\n  }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n  // manual scores always win over common keywords\n  // so you can force a score of 1 if you really insist\n  if (providedScore) {\n    return Number(providedScore);\n  }\n\n  return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n  return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n  console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n  console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n  if (seenDeprecations[`${version}/${message}`]) return;\n\n  console.log(`Deprecated as of ${version}. ${message}`);\n  seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n *   { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n *   (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n *   { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5.  This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n  let offset = 0;\n  const scopeNames = mode[key];\n  /** @type Record<number,boolean> */\n  const emit = {};\n  /** @type Record<number,string> */\n  const positions = {};\n\n  for (let i = 1; i <= regexes.length; i++) {\n    positions[i + offset] = scopeNames[i];\n    emit[i + offset] = true;\n    offset += countMatchGroups(regexes[i - 1]);\n  }\n  // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n  // output from inside match groups\n  mode[key] = positions;\n  mode[key]._emit = emit;\n  mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n  if (!Array.isArray(mode.begin)) return;\n\n  if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n    error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n    error(\"beginScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n  mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n  if (!Array.isArray(mode.end)) return;\n\n  if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n    error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n    throw MultiClassError;\n  }\n\n  if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n    error(\"endScope must be object\");\n    throw MultiClassError;\n  }\n\n  remapScopeNames(mode, mode.end, { key: \"endScope\" });\n  mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n  {\n    match: [ /def/, /\\w+/ ]\n    scope: { 1: \"keyword\" , 2: \"title\" }\n  }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n  if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n    mode.beginScope = mode.scope;\n    delete mode.scope;\n  }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n  scopeSugar(mode);\n\n  if (typeof mode.beginScope === \"string\") {\n    mode.beginScope = { _wrap: mode.beginScope };\n  }\n  if (typeof mode.endScope === \"string\") {\n    mode.endScope = { _wrap: mode.endScope };\n  }\n\n  beginMultiClass(mode);\n  endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n  /**\n   * Builds a regex with the case sensitivity of the current language\n   *\n   * @param {RegExp | string} value\n   * @param {boolean} [global]\n   */\n  function langRe(value, global) {\n    return new RegExp(\n      source(value),\n      'm'\n      + (language.case_insensitive ? 'i' : '')\n      + (language.unicodeRegex ? 'u' : '')\n      + (global ? 'g' : '')\n    );\n  }\n\n  /**\n    Stores multiple regular expressions and allows you to quickly search for\n    them all in a string simultaneously - returning the first match.  It does\n    this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n    and joined by `|` - using match groups to track position.  When a match is\n    found checking which position in the array has content allows us to figure\n    out which of the original regexes / match groups triggered the match.\n\n    The match object itself (the result of `Regex.exec`) is returned but also\n    enhanced by merging in any meta-data that was registered with the regex.\n    This is how we keep track of which mode matched, and what type of rule\n    (`illegal`, `begin`, end, etc).\n  */\n  class MultiRegex {\n    constructor() {\n      this.matchIndexes = {};\n      // @ts-ignore\n      this.regexes = [];\n      this.matchAt = 1;\n      this.position = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      opts.position = this.position++;\n      // @ts-ignore\n      this.matchIndexes[this.matchAt] = opts;\n      this.regexes.push([opts, re]);\n      this.matchAt += countMatchGroups(re) + 1;\n    }\n\n    compile() {\n      if (this.regexes.length === 0) {\n        // avoids the need to check length every time exec is called\n        // @ts-ignore\n        this.exec = () => null;\n      }\n      const terminators = this.regexes.map(el => el[1]);\n      this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n      this.lastIndex = 0;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      this.matcherRe.lastIndex = this.lastIndex;\n      const match = this.matcherRe.exec(s);\n      if (!match) { return null; }\n\n      // eslint-disable-next-line no-undefined\n      const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n      // @ts-ignore\n      const matchData = this.matchIndexes[i];\n      // trim off any earlier non-relevant match groups (ie, the other regex\n      // match groups that make up the multi-matcher)\n      match.splice(0, i);\n\n      return Object.assign(match, matchData);\n    }\n  }\n\n  /*\n    Created to solve the key deficiently with MultiRegex - there is no way to\n    test for multiple matches at a single location.  Why would we need to do\n    that?  In the future a more dynamic engine will allow certain matches to be\n    ignored.  An example: if we matched say the 3rd regex in a large group but\n    decided to ignore it - we'd need to started testing again at the 4th\n    regex... but MultiRegex itself gives us no real way to do that.\n\n    So what this class creates MultiRegexs on the fly for whatever search\n    position they are needed.\n\n    NOTE: These additional MultiRegex objects are created dynamically.  For most\n    grammars most of the time we will never actually need anything more than the\n    first MultiRegex - so this shouldn't have too much overhead.\n\n    Say this is our search group, and we match regex3, but wish to ignore it.\n\n      regex1 | regex2 | regex3 | regex4 | regex5    ' ie, startAt = 0\n\n    What we need is a new MultiRegex that only includes the remaining\n    possibilities:\n\n      regex4 | regex5                               ' ie, startAt = 3\n\n    This class wraps all that complexity up in a simple API... `startAt` decides\n    where in the array of expressions to start doing the matching. It\n    auto-increments, so if a match is found at position 2, then startAt will be\n    set to 3.  If the end is reached startAt will return to 0.\n\n    MOST of the time the parser will be setting startAt manually to 0.\n  */\n  class ResumableMultiRegex {\n    constructor() {\n      // @ts-ignore\n      this.rules = [];\n      // @ts-ignore\n      this.multiRegexes = [];\n      this.count = 0;\n\n      this.lastIndex = 0;\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    getMatcher(index) {\n      if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n      const matcher = new MultiRegex();\n      this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n      matcher.compile();\n      this.multiRegexes[index] = matcher;\n      return matcher;\n    }\n\n    resumingScanAtSamePosition() {\n      return this.regexIndex !== 0;\n    }\n\n    considerAll() {\n      this.regexIndex = 0;\n    }\n\n    // @ts-ignore\n    addRule(re, opts) {\n      this.rules.push([re, opts]);\n      if (opts.type === \"begin\") this.count++;\n    }\n\n    /** @param {string} s */\n    exec(s) {\n      const m = this.getMatcher(this.regexIndex);\n      m.lastIndex = this.lastIndex;\n      let result = m.exec(s);\n\n      // The following is because we have no easy way to say \"resume scanning at the\n      // existing position but also skip the current rule ONLY\". What happens is\n      // all prior rules are also skipped which can result in matching the wrong\n      // thing. Example of matching \"booger\":\n\n      // our matcher is [string, \"booger\", number]\n      //\n      // ....booger....\n\n      // if \"booger\" is ignored then we'd really need a regex to scan from the\n      // SAME position for only: [string, number] but ignoring \"booger\" (if it\n      // was the first match), a simple resume would scan ahead who knows how\n      // far looking only for \"number\", ignoring potential string matches (or\n      // future \"booger\" matches that might be valid.)\n\n      // So what we do: We execute two matchers, one resuming at the same\n      // position, but the second full matcher starting at the position after:\n\n      //     /--- resume first regex match here (for [number])\n      //     |/---- full match here for [string, \"booger\", number]\n      //     vv\n      // ....booger....\n\n      // Which ever results in a match first is then used. So this 3-4 step\n      // process essentially allows us to say \"match at this position, excluding\n      // a prior rule that was ignored\".\n      //\n      // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n      // 2. Resume matching for [number]\n      // 3. Match at index + 1 for [string, \"booger\", number]\n      // 4. If #2 and #3 result in matches, which came first?\n      if (this.resumingScanAtSamePosition()) {\n        if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n          const m2 = this.getMatcher(0);\n          m2.lastIndex = this.lastIndex + 1;\n          result = m2.exec(s);\n        }\n      }\n\n      if (result) {\n        this.regexIndex += result.position + 1;\n        if (this.regexIndex === this.count) {\n          // wrap-around to considering all matches again\n          this.considerAll();\n        }\n      }\n\n      return result;\n    }\n  }\n\n  /**\n   * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n   * the content and find matches.\n   *\n   * @param {CompiledMode} mode\n   * @returns {ResumableMultiRegex}\n   */\n  function buildModeRegex(mode) {\n    const mm = new ResumableMultiRegex();\n\n    mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n    if (mode.terminatorEnd) {\n      mm.addRule(mode.terminatorEnd, { type: \"end\" });\n    }\n    if (mode.illegal) {\n      mm.addRule(mode.illegal, { type: \"illegal\" });\n    }\n\n    return mm;\n  }\n\n  /** skip vs abort vs ignore\n   *\n   * @skip   - The mode is still entered and exited normally (and contains rules apply),\n   *           but all content is held and added to the parent buffer rather than being\n   *           output when the mode ends.  Mostly used with `sublanguage` to build up\n   *           a single large buffer than can be parsed by sublanguage.\n   *\n   *             - The mode begin ands ends normally.\n   *             - Content matched is added to the parent mode buffer.\n   *             - The parser cursor is moved forward normally.\n   *\n   * @abort  - A hack placeholder until we have ignore.  Aborts the mode (as if it\n   *           never matched) but DOES NOT continue to match subsequent `contains`\n   *           modes.  Abort is bad/suboptimal because it can result in modes\n   *           farther down not getting applied because an earlier rule eats the\n   *           content but then aborts.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is added to the mode buffer.\n   *             - The parser cursor is moved forward accordingly.\n   *\n   * @ignore - Ignores the mode (as if it never matched) and continues to match any\n   *           subsequent `contains` modes.  Ignore isn't technically possible with\n   *           the current parser implementation.\n   *\n   *             - The mode does not begin.\n   *             - Content matched by `begin` is ignored.\n   *             - The parser cursor is not moved forward.\n   */\n\n  /**\n   * Compiles an individual mode\n   *\n   * This can raise an error if the mode contains certain detectable known logic\n   * issues.\n   * @param {Mode} mode\n   * @param {CompiledMode | null} [parent]\n   * @returns {CompiledMode | never}\n   */\n  function compileMode(mode, parent) {\n    const cmode = /** @type CompiledMode */ (mode);\n    if (mode.isCompiled) return cmode;\n\n    [\n      scopeClassName,\n      // do this early so compiler extensions generally don't have to worry about\n      // the distinction between match/begin\n      compileMatch,\n      MultiClass,\n      beforeMatchExt\n    ].forEach(ext => ext(mode, parent));\n\n    language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n    // __beforeBegin is considered private API, internal use only\n    mode.__beforeBegin = null;\n\n    [\n      beginKeywords,\n      // do this later so compiler extensions that come earlier have access to the\n      // raw array if they wanted to perhaps manipulate it, etc.\n      compileIllegal,\n      // default to 1 relevance if not specified\n      compileRelevance\n    ].forEach(ext => ext(mode, parent));\n\n    mode.isCompiled = true;\n\n    let keywordPattern = null;\n    if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n      // we need a copy because keywords might be compiled multiple times\n      // so we can't go deleting $pattern from the original on the first\n      // pass\n      mode.keywords = Object.assign({}, mode.keywords);\n      keywordPattern = mode.keywords.$pattern;\n      delete mode.keywords.$pattern;\n    }\n    keywordPattern = keywordPattern || /\\w+/;\n\n    if (mode.keywords) {\n      mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n    }\n\n    cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n    if (parent) {\n      if (!mode.begin) mode.begin = /\\B|\\b/;\n      cmode.beginRe = langRe(cmode.begin);\n      if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n      if (mode.end) cmode.endRe = langRe(cmode.end);\n      cmode.terminatorEnd = source(cmode.end) || '';\n      if (mode.endsWithParent && parent.terminatorEnd) {\n        cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n      }\n    }\n    if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n    if (!mode.contains) mode.contains = [];\n\n    mode.contains = [].concat(...mode.contains.map(function(c) {\n      return expandOrCloneMode(c === 'self' ? mode : c);\n    }));\n    mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n    if (mode.starts) {\n      compileMode(mode.starts, parent);\n    }\n\n    cmode.matcher = buildModeRegex(cmode);\n    return cmode;\n  }\n\n  if (!language.compilerExtensions) language.compilerExtensions = [];\n\n  // self is not valid at the top-level\n  if (language.contains && language.contains.includes('self')) {\n    throw new Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\");\n  }\n\n  // we need a null object, which inherit will guarantee\n  language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n  return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n  if (!mode) return false;\n\n  return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n  if (mode.variants && !mode.cachedVariants) {\n    mode.cachedVariants = mode.variants.map(function(variant) {\n      return inherit$1(mode, { variants: null }, variant);\n    });\n  }\n\n  // EXPAND\n  // if we have variants then essentially \"replace\" the mode with the variants\n  // this happens in compileMode, where this function is called from\n  if (mode.cachedVariants) {\n    return mode.cachedVariants;\n  }\n\n  // CLONE\n  // if we have dependencies on parents then we need a unique\n  // instance of ourselves, so we can be reused with many\n  // different parents without issue\n  if (dependencyOnParent(mode)) {\n    return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n  }\n\n  if (Object.isFrozen(mode)) {\n    return inherit$1(mode);\n  }\n\n  // no special dependency issues, just return ourselves\n  return mode;\n}\n\nvar version = \"11.11.1\";\n\nclass HTMLInjectionError extends Error {\n  constructor(reason, html) {\n    super(reason);\n    this.name = \"HTMLInjectionError\";\n    this.html = html;\n  }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n  // Global internal variables used within the highlight.js library.\n  /** @type {Record<string, Language>} */\n  const languages = Object.create(null);\n  /** @type {Record<string, string>} */\n  const aliases = Object.create(null);\n  /** @type {HLJSPlugin[]} */\n  const plugins = [];\n\n  // safe/production mode - swallows more errors, tries to keep running\n  // even if a single syntax or parse hits a fatal error\n  let SAFE_MODE = true;\n  const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n  /** @type {Language} */\n  const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n  // Global options used when within external APIs. This is modified when\n  // calling the `hljs.configure` function.\n  /** @type HLJSOptions */\n  let options = {\n    ignoreUnescapedHTML: false,\n    throwUnescapedHTML: false,\n    noHighlightRe: /^(no-?highlight)$/i,\n    languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n    classPrefix: 'hljs-',\n    cssSelector: 'pre code',\n    languages: null,\n    // beta configuration options, subject to change, welcome to discuss\n    // https://github.com/highlightjs/highlight.js/issues/1086\n    __emitter: TokenTreeEmitter\n  };\n\n  /* Utility functions */\n\n  /**\n   * Tests a language name to see if highlighting should be skipped\n   * @param {string} languageName\n   */\n  function shouldNotHighlight(languageName) {\n    return options.noHighlightRe.test(languageName);\n  }\n\n  /**\n   * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n   */\n  function blockLanguage(block) {\n    let classes = block.className + ' ';\n\n    classes += block.parentNode ? block.parentNode.className : '';\n\n    // language-* takes precedence over non-prefixed class names.\n    const match = options.languageDetectRe.exec(classes);\n    if (match) {\n      const language = getLanguage(match[1]);\n      if (!language) {\n        warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n        warn(\"Falling back to no-highlight mode for this block.\", block);\n      }\n      return language ? match[1] : 'no-highlight';\n    }\n\n    return classes\n      .split(/\\s+/)\n      .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n  }\n\n  /**\n   * Core highlighting function.\n   *\n   * OLD API\n   * highlight(lang, code, ignoreIllegals, continuation)\n   *\n   * NEW API\n   * highlight(code, {lang, ignoreIllegals})\n   *\n   * @param {string} codeOrLanguageName - the language to use for highlighting\n   * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n   * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   *\n   * @returns {HighlightResult} Result - an object that represents the result\n   * @property {string} language - the language name\n   * @property {number} relevance - the relevance score\n   * @property {string} value - the highlighted HTML code\n   * @property {string} code - the original raw code\n   * @property {CompiledMode} top - top of the current mode stack\n   * @property {boolean} illegal - indicates whether any illegal matches were found\n  */\n  function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n    let code = \"\";\n    let languageName = \"\";\n    if (typeof optionsOrCode === \"object\") {\n      code = codeOrLanguageName;\n      ignoreIllegals = optionsOrCode.ignoreIllegals;\n      languageName = optionsOrCode.language;\n    } else {\n      // old API\n      deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n      deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n      languageName = codeOrLanguageName;\n      code = optionsOrCode;\n    }\n\n    // https://github.com/highlightjs/highlight.js/issues/3149\n    // eslint-disable-next-line no-undefined\n    if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n    /** @type {BeforeHighlightContext} */\n    const context = {\n      code,\n      language: languageName\n    };\n    // the plugin can change the desired language or the code to be highlighted\n    // just be changing the object it was passed\n    fire(\"before:highlight\", context);\n\n    // a before plugin can usurp the result completely by providing it's own\n    // in which case we don't even need to call highlight\n    const result = context.result\n      ? context.result\n      : _highlight(context.language, context.code, ignoreIllegals);\n\n    result.code = context.code;\n    // the plugin can change anything in result to suite it\n    fire(\"after:highlight\", result);\n\n    return result;\n  }\n\n  /**\n   * private highlight that's used internally and does not fire callbacks\n   *\n   * @param {string} languageName - the language to use for highlighting\n   * @param {string} codeToHighlight - the code to highlight\n   * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n   * @param {CompiledMode?} [continuation] - current continuation mode, if any\n   * @returns {HighlightResult} - result of the highlight operation\n  */\n  function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n    const keywordHits = Object.create(null);\n\n    /**\n     * Return keyword data if a match is a keyword\n     * @param {CompiledMode} mode - current mode\n     * @param {string} matchText - the textual match\n     * @returns {KeywordData | false}\n     */\n    function keywordData(mode, matchText) {\n      return mode.keywords[matchText];\n    }\n\n    function processKeywords() {\n      if (!top.keywords) {\n        emitter.addText(modeBuffer);\n        return;\n      }\n\n      let lastIndex = 0;\n      top.keywordPatternRe.lastIndex = 0;\n      let match = top.keywordPatternRe.exec(modeBuffer);\n      let buf = \"\";\n\n      while (match) {\n        buf += modeBuffer.substring(lastIndex, match.index);\n        const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n        const data = keywordData(top, word);\n        if (data) {\n          const [kind, keywordRelevance] = data;\n          emitter.addText(buf);\n          buf = \"\";\n\n          keywordHits[word] = (keywordHits[word] || 0) + 1;\n          if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n          if (kind.startsWith(\"_\")) {\n            // _ implied for relevance only, do not highlight\n            // by applying a class name\n            buf += match[0];\n          } else {\n            const cssClass = language.classNameAliases[kind] || kind;\n            emitKeyword(match[0], cssClass);\n          }\n        } else {\n          buf += match[0];\n        }\n        lastIndex = top.keywordPatternRe.lastIndex;\n        match = top.keywordPatternRe.exec(modeBuffer);\n      }\n      buf += modeBuffer.substring(lastIndex);\n      emitter.addText(buf);\n    }\n\n    function processSubLanguage() {\n      if (modeBuffer === \"\") return;\n      /** @type HighlightResult */\n      let result = null;\n\n      if (typeof top.subLanguage === 'string') {\n        if (!languages[top.subLanguage]) {\n          emitter.addText(modeBuffer);\n          return;\n        }\n        result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n        continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n      } else {\n        result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n      }\n\n      // Counting embedded language score towards the host language may be disabled\n      // with zeroing the containing mode relevance. Use case in point is Markdown that\n      // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n      // score.\n      if (top.relevance > 0) {\n        relevance += result.relevance;\n      }\n      emitter.__addSublanguage(result._emitter, result.language);\n    }\n\n    function processBuffer() {\n      if (top.subLanguage != null) {\n        processSubLanguage();\n      } else {\n        processKeywords();\n      }\n      modeBuffer = '';\n    }\n\n    /**\n     * @param {string} text\n     * @param {string} scope\n     */\n    function emitKeyword(keyword, scope) {\n      if (keyword === \"\") return;\n\n      emitter.startScope(scope);\n      emitter.addText(keyword);\n      emitter.endScope();\n    }\n\n    /**\n     * @param {CompiledScope} scope\n     * @param {RegExpMatchArray} match\n     */\n    function emitMultiClass(scope, match) {\n      let i = 1;\n      const max = match.length - 1;\n      while (i <= max) {\n        if (!scope._emit[i]) { i++; continue; }\n        const klass = language.classNameAliases[scope[i]] || scope[i];\n        const text = match[i];\n        if (klass) {\n          emitKeyword(text, klass);\n        } else {\n          modeBuffer = text;\n          processKeywords();\n          modeBuffer = \"\";\n        }\n        i++;\n      }\n    }\n\n    /**\n     * @param {CompiledMode} mode - new mode to start\n     * @param {RegExpMatchArray} match\n     */\n    function startNewMode(mode, match) {\n      if (mode.scope && typeof mode.scope === \"string\") {\n        emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n      }\n      if (mode.beginScope) {\n        // beginScope just wraps the begin match itself in a scope\n        if (mode.beginScope._wrap) {\n          emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n          modeBuffer = \"\";\n        } else if (mode.beginScope._multi) {\n          // at this point modeBuffer should just be the match\n          emitMultiClass(mode.beginScope, match);\n          modeBuffer = \"\";\n        }\n      }\n\n      top = Object.create(mode, { parent: { value: top } });\n      return top;\n    }\n\n    /**\n     * @param {CompiledMode } mode - the mode to potentially end\n     * @param {RegExpMatchArray} match - the latest match\n     * @param {string} matchPlusRemainder - match plus remainder of content\n     * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n     */\n    function endOfMode(mode, match, matchPlusRemainder) {\n      let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n      if (matched) {\n        if (mode[\"on:end\"]) {\n          const resp = new Response(mode);\n          mode[\"on:end\"](match, resp);\n          if (resp.isMatchIgnored) matched = false;\n        }\n\n        if (matched) {\n          while (mode.endsParent && mode.parent) {\n            mode = mode.parent;\n          }\n          return mode;\n        }\n      }\n      // even if on:end fires an `ignore` it's still possible\n      // that we might trigger the end node because of a parent mode\n      if (mode.endsWithParent) {\n        return endOfMode(mode.parent, match, matchPlusRemainder);\n      }\n    }\n\n    /**\n     * Handle matching but then ignoring a sequence of text\n     *\n     * @param {string} lexeme - string containing full match text\n     */\n    function doIgnore(lexeme) {\n      if (top.matcher.regexIndex === 0) {\n        // no more regexes to potentially match here, so we move the cursor forward one\n        // space\n        modeBuffer += lexeme[0];\n        return 1;\n      } else {\n        // no need to move the cursor, we still have additional regexes to try and\n        // match at this very spot\n        resumeScanAtSamePosition = true;\n        return 0;\n      }\n    }\n\n    /**\n     * Handle the start of a new potential mode match\n     *\n     * @param {EnhancedMatch} match - the current match\n     * @returns {number} how far to advance the parse cursor\n     */\n    function doBeginMatch(match) {\n      const lexeme = match[0];\n      const newMode = match.rule;\n\n      const resp = new Response(newMode);\n      // first internal before callbacks, then the public ones\n      const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n      for (const cb of beforeCallbacks) {\n        if (!cb) continue;\n        cb(match, resp);\n        if (resp.isMatchIgnored) return doIgnore(lexeme);\n      }\n\n      if (newMode.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (newMode.excludeBegin) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (!newMode.returnBegin && !newMode.excludeBegin) {\n          modeBuffer = lexeme;\n        }\n      }\n      startNewMode(newMode, match);\n      return newMode.returnBegin ? 0 : lexeme.length;\n    }\n\n    /**\n     * Handle the potential end of mode\n     *\n     * @param {RegExpMatchArray} match - the current match\n     */\n    function doEndMatch(match) {\n      const lexeme = match[0];\n      const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n      const endMode = endOfMode(top, match, matchPlusRemainder);\n      if (!endMode) { return NO_MATCH; }\n\n      const origin = top;\n      if (top.endScope && top.endScope._wrap) {\n        processBuffer();\n        emitKeyword(lexeme, top.endScope._wrap);\n      } else if (top.endScope && top.endScope._multi) {\n        processBuffer();\n        emitMultiClass(top.endScope, match);\n      } else if (origin.skip) {\n        modeBuffer += lexeme;\n      } else {\n        if (!(origin.returnEnd || origin.excludeEnd)) {\n          modeBuffer += lexeme;\n        }\n        processBuffer();\n        if (origin.excludeEnd) {\n          modeBuffer = lexeme;\n        }\n      }\n      do {\n        if (top.scope) {\n          emitter.closeNode();\n        }\n        if (!top.skip && !top.subLanguage) {\n          relevance += top.relevance;\n        }\n        top = top.parent;\n      } while (top !== endMode.parent);\n      if (endMode.starts) {\n        startNewMode(endMode.starts, match);\n      }\n      return origin.returnEnd ? 0 : lexeme.length;\n    }\n\n    function processContinuations() {\n      const list = [];\n      for (let current = top; current !== language; current = current.parent) {\n        if (current.scope) {\n          list.unshift(current.scope);\n        }\n      }\n      list.forEach(item => emitter.openNode(item));\n    }\n\n    /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n    let lastMatch = {};\n\n    /**\n     *  Process an individual match\n     *\n     * @param {string} textBeforeMatch - text preceding the match (since the last match)\n     * @param {EnhancedMatch} [match] - the match itself\n     */\n    function processLexeme(textBeforeMatch, match) {\n      const lexeme = match && match[0];\n\n      // add non-matched text to the current mode buffer\n      modeBuffer += textBeforeMatch;\n\n      if (lexeme == null) {\n        processBuffer();\n        return 0;\n      }\n\n      // we've found a 0 width match and we're stuck, so we need to advance\n      // this happens when we have badly behaved rules that have optional matchers to the degree that\n      // sometimes they can end up matching nothing at all\n      // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n      if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n        // spit the \"skipped\" character that our regex choked on back into the output sequence\n        modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n        if (!SAFE_MODE) {\n          /** @type {AnnotatedError} */\n          const err = new Error(`0 width match regex (${languageName})`);\n          err.languageName = languageName;\n          err.badRule = lastMatch.rule;\n          throw err;\n        }\n        return 1;\n      }\n      lastMatch = match;\n\n      if (match.type === \"begin\") {\n        return doBeginMatch(match);\n      } else if (match.type === \"illegal\" && !ignoreIllegals) {\n        // illegal match, we do not continue processing\n        /** @type {AnnotatedError} */\n        const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n        err.mode = top;\n        throw err;\n      } else if (match.type === \"end\") {\n        const processed = doEndMatch(match);\n        if (processed !== NO_MATCH) {\n          return processed;\n        }\n      }\n\n      // edge case for when illegal matches $ (end of line) which is technically\n      // a 0 width match but not a begin/end match so it's not caught by the\n      // first handler (when ignoreIllegals is true)\n      if (match.type === \"illegal\" && lexeme === \"\") {\n        // advance so we aren't stuck in an infinite loop\n        modeBuffer += \"\\n\";\n        return 1;\n      }\n\n      // infinite loops are BAD, this is a last ditch catch all. if we have a\n      // decent number of iterations yet our index (cursor position in our\n      // parsing) still 3x behind our index then something is very wrong\n      // so we bail\n      if (iterations > 100000 && iterations > match.index * 3) {\n        const err = new Error('potential infinite loop, way more iterations than matches');\n        throw err;\n      }\n\n      /*\n      Why might be find ourselves here?  An potential end match that was\n      triggered but could not be completed.  IE, `doEndMatch` returned NO_MATCH.\n      (this could be because a callback requests the match be ignored, etc)\n\n      This causes no real harm other than stopping a few times too many.\n      */\n\n      modeBuffer += lexeme;\n      return lexeme.length;\n    }\n\n    const language = getLanguage(languageName);\n    if (!language) {\n      error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n      throw new Error('Unknown language: \"' + languageName + '\"');\n    }\n\n    const md = compileLanguage(language);\n    let result = '';\n    /** @type {CompiledMode} */\n    let top = continuation || md;\n    /** @type Record<string,CompiledMode> */\n    const continuations = {}; // keep continuations for sub-languages\n    const emitter = new options.__emitter(options);\n    processContinuations();\n    let modeBuffer = '';\n    let relevance = 0;\n    let index = 0;\n    let iterations = 0;\n    let resumeScanAtSamePosition = false;\n\n    try {\n      if (!language.__emitTokens) {\n        top.matcher.considerAll();\n\n        for (;;) {\n          iterations++;\n          if (resumeScanAtSamePosition) {\n            // only regexes not matched previously will now be\n            // considered for a potential match\n            resumeScanAtSamePosition = false;\n          } else {\n            top.matcher.considerAll();\n          }\n          top.matcher.lastIndex = index;\n\n          const match = top.matcher.exec(codeToHighlight);\n          // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n          if (!match) break;\n\n          const beforeMatch = codeToHighlight.substring(index, match.index);\n          const processedCount = processLexeme(beforeMatch, match);\n          index = match.index + processedCount;\n        }\n        processLexeme(codeToHighlight.substring(index));\n      } else {\n        language.__emitTokens(codeToHighlight, emitter);\n      }\n\n      emitter.finalize();\n      result = emitter.toHTML();\n\n      return {\n        language: languageName,\n        value: result,\n        relevance,\n        illegal: false,\n        _emitter: emitter,\n        _top: top\n      };\n    } catch (err) {\n      if (err.message && err.message.includes('Illegal')) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: true,\n          relevance: 0,\n          _illegalBy: {\n            message: err.message,\n            index,\n            context: codeToHighlight.slice(index - 100, index + 100),\n            mode: err.mode,\n            resultSoFar: result\n          },\n          _emitter: emitter\n        };\n      } else if (SAFE_MODE) {\n        return {\n          language: languageName,\n          value: escape(codeToHighlight),\n          illegal: false,\n          relevance: 0,\n          errorRaised: err,\n          _emitter: emitter,\n          _top: top\n        };\n      } else {\n        throw err;\n      }\n    }\n  }\n\n  /**\n   * returns a valid highlight result, without actually doing any actual work,\n   * auto highlight starts with this and it's possible for small snippets that\n   * auto-detection may not find a better match\n   * @param {string} code\n   * @returns {HighlightResult}\n   */\n  function justTextHighlightResult(code) {\n    const result = {\n      value: escape(code),\n      illegal: false,\n      relevance: 0,\n      _top: PLAINTEXT_LANGUAGE,\n      _emitter: new options.__emitter(options)\n    };\n    result._emitter.addText(code);\n    return result;\n  }\n\n  /**\n  Highlighting with language detection. Accepts a string with the code to\n  highlight. Returns an object with the following properties:\n\n  - language (detected language)\n  - relevance (int)\n  - value (an HTML string with highlighting markup)\n  - secondBest (object with the same structure for second-best heuristically\n    detected language, may be absent)\n\n    @param {string} code\n    @param {Array<string>} [languageSubset]\n    @returns {AutoHighlightResult}\n  */\n  function highlightAuto(code, languageSubset) {\n    languageSubset = languageSubset || options.languages || Object.keys(languages);\n    const plaintext = justTextHighlightResult(code);\n\n    const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n      _highlight(name, code, false)\n    );\n    results.unshift(plaintext); // plaintext is always an option\n\n    const sorted = results.sort((a, b) => {\n      // sort base on relevance\n      if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n      // always award the tie to the base language\n      // ie if C++ and Arduino are tied, it's more likely to be C++\n      if (a.language && b.language) {\n        if (getLanguage(a.language).supersetOf === b.language) {\n          return 1;\n        } else if (getLanguage(b.language).supersetOf === a.language) {\n          return -1;\n        }\n      }\n\n      // otherwise say they are equal, which has the effect of sorting on\n      // relevance while preserving the original ordering - which is how ties\n      // have historically been settled, ie the language that comes first always\n      // wins in the case of a tie\n      return 0;\n    });\n\n    const [best, secondBest] = sorted;\n\n    /** @type {AutoHighlightResult} */\n    const result = best;\n    result.secondBest = secondBest;\n\n    return result;\n  }\n\n  /**\n   * Builds new class name for block given the language name\n   *\n   * @param {HTMLElement} element\n   * @param {string} [currentLang]\n   * @param {string} [resultLang]\n   */\n  function updateClassName(element, currentLang, resultLang) {\n    const language = (currentLang && aliases[currentLang]) || resultLang;\n\n    element.classList.add(\"hljs\");\n    element.classList.add(`language-${language}`);\n  }\n\n  /**\n   * Applies highlighting to a DOM node containing code.\n   *\n   * @param {HighlightedHTMLElement} element - the HTML element to highlight\n  */\n  function highlightElement(element) {\n    /** @type HTMLElement */\n    let node = null;\n    const language = blockLanguage(element);\n\n    if (shouldNotHighlight(language)) return;\n\n    fire(\"before:highlightElement\",\n      { el: element, language });\n\n    if (element.dataset.highlighted) {\n      console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n      return;\n    }\n\n    // we should be all text, no child nodes (unescaped HTML) - this is possibly\n    // an HTML injection attack - it's likely too late if this is already in\n    // production (the code has likely already done its damage by the time\n    // we're seeing it)... but we yell loudly about this so that hopefully it's\n    // more likely to be caught in development before making it to production\n    if (element.children.length > 0) {\n      if (!options.ignoreUnescapedHTML) {\n        console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n        console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n        console.warn(\"The element with unescaped HTML:\");\n        console.warn(element);\n      }\n      if (options.throwUnescapedHTML) {\n        const err = new HTMLInjectionError(\n          \"One of your code blocks includes unescaped HTML.\",\n          element.innerHTML\n        );\n        throw err;\n      }\n    }\n\n    node = element;\n    const text = node.textContent;\n    const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n    element.innerHTML = result.value;\n    element.dataset.highlighted = \"yes\";\n    updateClassName(element, language, result.language);\n    element.result = {\n      language: result.language,\n      // TODO: remove with version 11.0\n      re: result.relevance,\n      relevance: result.relevance\n    };\n    if (result.secondBest) {\n      element.secondBest = {\n        language: result.secondBest.language,\n        relevance: result.secondBest.relevance\n      };\n    }\n\n    fire(\"after:highlightElement\", { el: element, result, text });\n  }\n\n  /**\n   * Updates highlight.js global options with the passed options\n   *\n   * @param {Partial<HLJSOptions>} userOptions\n   */\n  function configure(userOptions) {\n    options = inherit(options, userOptions);\n  }\n\n  // TODO: remove v12, deprecated\n  const initHighlighting = () => {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlighting() deprecated.  Use highlightAll() now.\");\n  };\n\n  // TODO: remove v12, deprecated\n  function initHighlightingOnLoad() {\n    highlightAll();\n    deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated.  Use highlightAll() now.\");\n  }\n\n  let wantsHighlight = false;\n\n  /**\n   * auto-highlights all pre>code elements on the page\n   */\n  function highlightAll() {\n    function boot() {\n      // if a highlight was requested before DOM was loaded, do now\n      highlightAll();\n    }\n\n    // if we are called too early in the loading process\n    if (document.readyState === \"loading\") {\n      // make sure the event listener is only added once\n      if (!wantsHighlight) {\n        window.addEventListener('DOMContentLoaded', boot, false);\n      }\n      wantsHighlight = true;\n      return;\n    }\n\n    const blocks = document.querySelectorAll(options.cssSelector);\n    blocks.forEach(highlightElement);\n  }\n\n  /**\n   * Register a language grammar module\n   *\n   * @param {string} languageName\n   * @param {LanguageFn} languageDefinition\n   */\n  function registerLanguage(languageName, languageDefinition) {\n    let lang = null;\n    try {\n      lang = languageDefinition(hljs);\n    } catch (error$1) {\n      error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n      // hard or soft error\n      if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n      // languages that have serious errors are replaced with essentially a\n      // \"plaintext\" stand-in so that the code blocks will still get normal\n      // css classes applied to them - and one bad language won't break the\n      // entire highlighter\n      lang = PLAINTEXT_LANGUAGE;\n    }\n    // give it a temporary name if it doesn't have one in the meta-data\n    if (!lang.name) lang.name = languageName;\n    languages[languageName] = lang;\n    lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n    if (lang.aliases) {\n      registerAliases(lang.aliases, { languageName });\n    }\n  }\n\n  /**\n   * Remove a language grammar module\n   *\n   * @param {string} languageName\n   */\n  function unregisterLanguage(languageName) {\n    delete languages[languageName];\n    for (const alias of Object.keys(aliases)) {\n      if (aliases[alias] === languageName) {\n        delete aliases[alias];\n      }\n    }\n  }\n\n  /**\n   * @returns {string[]} List of language internal names\n   */\n  function listLanguages() {\n    return Object.keys(languages);\n  }\n\n  /**\n   * @param {string} name - name of the language to retrieve\n   * @returns {Language | undefined}\n   */\n  function getLanguage(name) {\n    name = (name || '').toLowerCase();\n    return languages[name] || languages[aliases[name]];\n  }\n\n  /**\n   *\n   * @param {string|string[]} aliasList - single alias or list of aliases\n   * @param {{languageName: string}} opts\n   */\n  function registerAliases(aliasList, { languageName }) {\n    if (typeof aliasList === 'string') {\n      aliasList = [aliasList];\n    }\n    aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n  }\n\n  /**\n   * Determines if a given language has auto-detection enabled\n   * @param {string} name - name of the language\n   */\n  function autoDetection(name) {\n    const lang = getLanguage(name);\n    return lang && !lang.disableAutodetect;\n  }\n\n  /**\n   * Upgrades the old highlightBlock plugins to the new\n   * highlightElement API\n   * @param {HLJSPlugin} plugin\n   */\n  function upgradePluginAPI(plugin) {\n    // TODO: remove with v12\n    if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n      plugin[\"before:highlightElement\"] = (data) => {\n        plugin[\"before:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n    if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n      plugin[\"after:highlightElement\"] = (data) => {\n        plugin[\"after:highlightBlock\"](\n          Object.assign({ block: data.el }, data)\n        );\n      };\n    }\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function addPlugin(plugin) {\n    upgradePluginAPI(plugin);\n    plugins.push(plugin);\n  }\n\n  /**\n   * @param {HLJSPlugin} plugin\n   */\n  function removePlugin(plugin) {\n    const index = plugins.indexOf(plugin);\n    if (index !== -1) {\n      plugins.splice(index, 1);\n    }\n  }\n\n  /**\n   *\n   * @param {PluginEvent} event\n   * @param {any} args\n   */\n  function fire(event, args) {\n    const cb = event;\n    plugins.forEach(function(plugin) {\n      if (plugin[cb]) {\n        plugin[cb](args);\n      }\n    });\n  }\n\n  /**\n   * DEPRECATED\n   * @param {HighlightedHTMLElement} el\n   */\n  function deprecateHighlightBlock(el) {\n    deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n    deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n    return highlightElement(el);\n  }\n\n  /* Interface definition */\n  Object.assign(hljs, {\n    highlight,\n    highlightAuto,\n    highlightAll,\n    highlightElement,\n    // TODO: Remove with v12 API\n    highlightBlock: deprecateHighlightBlock,\n    configure,\n    initHighlighting,\n    initHighlightingOnLoad,\n    registerLanguage,\n    unregisterLanguage,\n    listLanguages,\n    getLanguage,\n    registerAliases,\n    autoDetection,\n    inherit,\n    addPlugin,\n    removePlugin\n  });\n\n  hljs.debugMode = function() { SAFE_MODE = false; };\n  hljs.safeMode = function() { SAFE_MODE = true; };\n  hljs.versionString = version;\n\n  hljs.regex = {\n    concat: concat,\n    lookahead: lookahead,\n    either: either,\n    optional: optional,\n    anyNumberOfTimes: anyNumberOfTimes\n  };\n\n  for (const key in MODES) {\n    // @ts-ignore\n    if (typeof MODES[key] === \"object\") {\n      // @ts-ignore\n      deepFreeze(MODES[key]);\n    }\n  }\n\n  // merge all the modes/regexes into our main object\n  Object.assign(hljs, MODES);\n\n  return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showParticipantLabel)?_c('div',{staticClass:\"gl-mb-2 gl-flex gl-items-center gl-gap-2 gl-font-bold gl-leading-24 gl-text-default\"},[_vm._v(\"\\n    \"+_vm._s(_vm.participantLabel)+\"\\n    \"),(_vm.loading)?_c('gl-loading-icon',{attrs:{\"inline\":\"\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-gap-3\"},_vm._l((_vm.visibleParticipants),function(participant){return _c('a',{key:participant.id,staticClass:\"author-link js-user-link gl-inline-block gl-rounded-full\",attrs:{\"href\":participant.web_url || participant.webUrl,\"data-user-id\":_vm.getParticipantId(participant.id),\"data-username\":participant.username}},[_c('user-avatar-image',{attrs:{\"lazy\":_vm.lazy,\"img-src\":participant.avatar_url || participant.avatarUrl,\"size\":24,\"img-alt\":participant.name,\"css-classes\":\"!gl-mr-0\",\"tooltip-placement\":\"bottom\"}})],1)}),0),_vm._v(\" \"),(_vm.hasMoreParticipants)?_c('gl-button',{staticClass:\"gl-mt-3\",attrs:{\"category\":\"tertiary\",\"size\":\"small\"},on:{\"click\":_vm.toggleMoreParticipants}},[_vm._v(\"\\n    \"+_vm._s(_vm.toggleLabel)+\"\\n  \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./participants.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!./participants.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { GlButton, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { __, n__, sprintf } from '~/locale';\nimport UserAvatarImage from '~/vue_shared/components/user_avatar/user_avatar_image.vue';\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlButton,\n    GlLoadingIcon,\n    UserAvatarImage,\n  },\n  props: {\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    participants: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    numberOfLessParticipants: {\n      type: Number,\n      required: false,\n      default: 8,\n    },\n    showParticipantLabel: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    lazy: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  data() {\n    return {\n      isShowingMoreParticipants: false,\n    };\n  },\n  computed: {\n    lessParticipants() {\n      return this.participants.slice(0, this.numberOfLessParticipants);\n    },\n    visibleParticipants() {\n      return this.isShowingMoreParticipants ? this.participants : this.lessParticipants;\n    },\n    hasMoreParticipants() {\n      return this.participants.length > this.numberOfLessParticipants;\n    },\n    toggleLabel() {\n      let label = '';\n      if (this.isShowingMoreParticipants) {\n        label = __('- show less');\n      } else {\n        label = sprintf(__('+ %{moreCount} more'), {\n          moreCount: this.participants.length - this.numberOfLessParticipants,\n        });\n      }\n\n      return label;\n    },\n    participantLabel() {\n      return sprintf(\n        n__('%{count} Participant', '%{count} Participants', this.participants.length),\n        { count: this.loading ? '' : this.participantCount },\n      );\n    },\n    participantCount() {\n      return this.participants.length;\n    },\n  },\n  methods: {\n    toggleMoreParticipants() {\n      this.isShowingMoreParticipants = !this.isShowingMoreParticipants;\n    },\n    getParticipantId(participantId) {\n      return getIdFromGraphQLId(participantId);\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div\n      v-if=\"showParticipantLabel\"\n      class=\"gl-mb-2 gl-flex gl-items-center gl-gap-2 gl-font-bold gl-leading-24 gl-text-default\"\n    >\n      {{ participantLabel }}\n      <gl-loading-icon v-if=\"loading\" inline />\n    </div>\n    <div class=\"gl-flex gl-flex-wrap gl-gap-3\">\n      <a\n        v-for=\"participant in visibleParticipants\"\n        :key=\"participant.id\"\n        :href=\"participant.web_url || participant.webUrl\"\n        :data-user-id=\"getParticipantId(participant.id)\"\n        :data-username=\"participant.username\"\n        class=\"author-link js-user-link gl-inline-block gl-rounded-full\"\n      >\n        <user-avatar-image\n          :lazy=\"lazy\"\n          :img-src=\"participant.avatar_url || participant.avatarUrl\"\n          :size=\"24\"\n          :img-alt=\"participant.name\"\n          css-classes=\"!gl-mr-0\"\n          tooltip-placement=\"bottom\"\n        />\n      </a>\n    </div>\n    <gl-button\n      v-if=\"hasMoreParticipants\"\n      class=\"gl-mt-3\"\n      category=\"tertiary\"\n      size=\"small\"\n      @click=\"toggleMoreParticipants\"\n    >\n      {{ toggleLabel }}\n    </gl-button>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./participants.vue?vue&type=template&id=bb540ad4\"\nimport script from \"./participants.vue?vue&type=script&lang=js\"\nexport * from \"./participants.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';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\n\nconst itemValidator = item => {\n  var _item$text;\n  return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);\n};\nconst isItem = item => Boolean(item) && itemValidator(item);\nconst isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) &&\n// eslint-disable-next-line unicorn/no-array-callback-reference\ngroup.items.every(isItem);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst itemsValidator = items => items.every(isItem) || items.every(isGroup);\nconst isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);\nconst isValidSlotTagVue2 = vNode => {\n  var _vNode$componentOptio;\n  return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);\n};\nconst isValidSlotTagVue3 = vNode => {\n  var _vNode$type;\n  return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';\n};\nconst hasOnlyListItemsVue2 = defaultSlot => {\n  const nodes = defaultSlot();\n  if (!Array.isArray(nodes)) {\n    return false;\n  }\n  const tags = nodes.filter(vNode => vNode.tag);\n  return tags.length && tags.every(tag => isValidSlotTagVue2(tag));\n};\nconst hasOnlyListItemsVue3 = defaultSlot => {\n  const nodes = defaultSlot();\n  const fragment = nodes.find(node => Array.isArray(node.children) && node.children.length);\n  const targetNodes = fragment ? fragment.children : nodes;\n  return targetNodes\n  // Remove empty text vNodes\n  .filter(vNode => !isString(vNode.text) || vNode.text.trim().length > 0).every(vNode => isValidSlotTagVue3(vNode));\n};\nconst hasOnlyListItems = defaultSlot => {\n  if (!isFunction(defaultSlot)) {\n    return false;\n  }\n  if (Vue.version.startsWith('3')) {\n    return hasOnlyListItemsVue3(defaultSlot);\n  }\n  return hasOnlyListItemsVue2(defaultSlot);\n};\n\nexport { hasOnlyListItems, isGroup, isItem, itemsValidator };\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  CHAR_BACKSLASH, /* \\ */\n  CHAR_BACKTICK, /* ` */\n  CHAR_COMMA, /* , */\n  CHAR_DOT, /* . */\n  CHAR_LEFT_PARENTHESES, /* ( */\n  CHAR_RIGHT_PARENTHESES, /* ) */\n  CHAR_LEFT_CURLY_BRACE, /* { */\n  CHAR_RIGHT_CURLY_BRACE, /* } */\n  CHAR_LEFT_SQUARE_BRACKET, /* [ */\n  CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n  CHAR_DOUBLE_QUOTE, /* \" */\n  CHAR_SINGLE_QUOTE, /* ' */\n  CHAR_NO_BREAK_SPACE,\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  const opts = options || {};\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  if (input.length > max) {\n    throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n  }\n\n  const ast = { type: 'root', input, nodes: [] };\n  const stack = [ast];\n  let block = ast;\n  let prev = ast;\n  let brackets = 0;\n  const length = input.length;\n  let index = 0;\n  let depth = 0;\n  let value;\n\n  /**\n   * Helpers\n   */\n\n  const advance = () => input[index++];\n  const push = node => {\n    if (node.type === 'text' && prev.type === 'dot') {\n      prev.type = 'text';\n    }\n\n    if (prev && prev.type === 'text' && node.type === 'text') {\n      prev.value += node.value;\n      return;\n    }\n\n    block.nodes.push(node);\n    node.parent = block;\n    node.prev = prev;\n    prev = node;\n    return node;\n  };\n\n  push({ type: 'bos' });\n\n  while (index < length) {\n    block = stack[stack.length - 1];\n    value = advance();\n\n    /**\n     * Invalid chars\n     */\n\n    if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n      continue;\n    }\n\n    /**\n     * Escaped chars\n     */\n\n    if (value === CHAR_BACKSLASH) {\n      push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n      continue;\n    }\n\n    /**\n     * Right square bracket (literal): ']'\n     */\n\n    if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n      push({ type: 'text', value: '\\\\' + value });\n      continue;\n    }\n\n    /**\n     * Left square bracket: '['\n     */\n\n    if (value === CHAR_LEFT_SQUARE_BRACKET) {\n      brackets++;\n\n      let next;\n\n      while (index < length && (next = advance())) {\n        value += next;\n\n        if (next === CHAR_LEFT_SQUARE_BRACKET) {\n          brackets++;\n          continue;\n        }\n\n        if (next === CHAR_BACKSLASH) {\n          value += advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          brackets--;\n\n          if (brackets === 0) {\n            break;\n          }\n        }\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === CHAR_LEFT_PARENTHESES) {\n      block = push({ type: 'paren', nodes: [] });\n      stack.push(block);\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if (value === CHAR_RIGHT_PARENTHESES) {\n      if (block.type !== 'paren') {\n        push({ type: 'text', value });\n        continue;\n      }\n      block = stack.pop();\n      push({ type: 'text', value });\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Quotes: '|\"|`\n     */\n\n    if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n      const open = value;\n      let next;\n\n      if (options.keepQuotes !== true) {\n        value = '';\n      }\n\n      while (index < length && (next = advance())) {\n        if (next === CHAR_BACKSLASH) {\n          value += next + advance();\n          continue;\n        }\n\n        if (next === open) {\n          if (options.keepQuotes === true) value += next;\n          break;\n        }\n\n        value += next;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Left curly brace: '{'\n     */\n\n    if (value === CHAR_LEFT_CURLY_BRACE) {\n      depth++;\n\n      const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n      const brace = {\n        type: 'brace',\n        open: true,\n        close: false,\n        dollar,\n        depth,\n        commas: 0,\n        ranges: 0,\n        nodes: []\n      };\n\n      block = push(brace);\n      stack.push(block);\n      push({ type: 'open', value });\n      continue;\n    }\n\n    /**\n     * Right curly brace: '}'\n     */\n\n    if (value === CHAR_RIGHT_CURLY_BRACE) {\n      if (block.type !== 'brace') {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      const type = 'close';\n      block = stack.pop();\n      block.close = true;\n\n      push({ type, value });\n      depth--;\n\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Comma: ','\n     */\n\n    if (value === CHAR_COMMA && depth > 0) {\n      if (block.ranges > 0) {\n        block.ranges = 0;\n        const open = block.nodes.shift();\n        block.nodes = [open, { type: 'text', value: stringify(block) }];\n      }\n\n      push({ type: 'comma', value });\n      block.commas++;\n      continue;\n    }\n\n    /**\n     * Dot: '.'\n     */\n\n    if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n      const siblings = block.nodes;\n\n      if (depth === 0 || siblings.length === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      if (prev.type === 'dot') {\n        block.range = [];\n        prev.value += value;\n        prev.type = 'range';\n\n        if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n          block.invalid = true;\n          block.ranges = 0;\n          prev.type = 'text';\n          continue;\n        }\n\n        block.ranges++;\n        block.args = [];\n        continue;\n      }\n\n      if (prev.type === 'range') {\n        siblings.pop();\n\n        const before = siblings[siblings.length - 1];\n        before.value += prev.value + value;\n        prev = before;\n        block.ranges--;\n        continue;\n      }\n\n      push({ type: 'dot', value });\n      continue;\n    }\n\n    /**\n     * Text\n     */\n\n    push({ type: 'text', value });\n  }\n\n  // Mark imbalanced braces and brackets as invalid\n  do {\n    block = stack.pop();\n\n    if (block.type !== 'root') {\n      block.nodes.forEach(node => {\n        if (!node.nodes) {\n          if (node.type === 'open') node.isOpen = true;\n          if (node.type === 'close') node.isClose = true;\n          if (!node.nodes) node.type = 'text';\n          node.invalid = true;\n        }\n      });\n\n      // get the location of the block on parent.nodes (block's siblings)\n      const parent = stack[stack.length - 1];\n      const index = parent.nodes.indexOf(block);\n      // replace the (invalid) block with it's nodes\n      parent.nodes.splice(index, 1, ...block.nodes);\n    }\n  } while (stack.length > 0);\n\n  push({ type: 'eos' });\n  return ast;\n};\n\nmodule.exports = parse;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-collapsible-listbox',{ref:\"dropdown\",attrs:{\"block\":\"\",\"header-text\":_vm.$options.HEALTH_STATUS_I18N_ASSIGN_HEALTH_STATUS,\"toggle-text\":_vm.dropdownText,\"items\":_vm.items},on:{\"select\":_vm.onSelect},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})\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!./health_status_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!./health_status_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport {\n  HEALTH_STATUS_I18N_ASSIGN_HEALTH_STATUS,\n  HEALTH_STATUS_I18N_NO_STATUS,\n  HEALTH_STATUS_I18N_SELECT_HEALTH_STATUS,\n  healthStatusDropdownOptions,\n  healthStatusTextMap,\n} from '../../constants';\n\nexport default {\n  HEALTH_STATUS_I18N_ASSIGN_HEALTH_STATUS,\n  HEALTH_STATUS_I18N_NO_STATUS,\n  HEALTH_STATUS_I18N_SELECT_HEALTH_STATUS,\n  healthStatusDropdownOptions,\n  components: {\n    GlCollapsibleListbox,\n  },\n  props: {\n    /**\n     * `null` represents a user's choice to remove the health status.\n     * `undefined` represents no chosen value.\n     */\n    healthStatus: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n  },\n  data() {\n    return {\n      selected: this.healthStatus === null ? '' : this.healthStatus,\n    };\n  },\n  computed: {\n    items() {\n      return [\n        {\n          text: '',\n          options: [{ text: this.$options.HEALTH_STATUS_I18N_NO_STATUS, value: '' }],\n          textSrOnly: true,\n        },\n        {\n          text: __('Health status'),\n          options: this.$options.healthStatusDropdownOptions,\n          textSrOnly: true,\n        },\n      ];\n    },\n    dropdownText() {\n      if (this.healthStatus === null) {\n        return this.$options.HEALTH_STATUS_I18N_NO_STATUS;\n      }\n      return this.healthStatus\n        ? healthStatusTextMap[this.healthStatus]\n        : this.$options.HEALTH_STATUS_I18N_SELECT_HEALTH_STATUS;\n    },\n  },\n  methods: {\n    onSelect(value) {\n      this.$emit('change', value === '' ? null : value);\n    },\n    show() {\n      this.$refs.dropdown.open();\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-collapsible-listbox\n    ref=\"dropdown\"\n    v-model=\"selected\"\n    block\n    :header-text=\"$options.HEALTH_STATUS_I18N_ASSIGN_HEALTH_STATUS\"\n    :toggle-text=\"dropdownText\"\n    :items=\"items\"\n    @select=\"onSelect\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./health_status_dropdown.vue?vue&type=template&id=19249ed0\"\nimport script from \"./health_status_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./health_status_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 { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst stackedMixin = extend({\n  props,\n  computed: {\n    isStacked() {\n      const {\n        stacked\n      } = this;\n      // `true` when always stacked, or returns breakpoint specified\n      return stacked === '' ? true : stacked;\n    },\n    isStackedAlways() {\n      return this.isStacked === true;\n    },\n    stackedTableClasses() {\n      const {\n        isStackedAlways\n      } = this;\n      return {\n        'b-table-stacked': isStackedAlways,\n        [`b-table-stacked-${this.stacked}`]: !isStackedAlways && this.isStacked\n      };\n    }\n  }\n});\n\nexport { props, stackedMixin };\n","/* eslint-disable no-console */\nexport const LOG_PREFIX = '[gitlab]';\n\nexport const logError = (message = '', ...args) => {\n  console.error(LOG_PREFIX, `${message}\\n`, ...args);\n};\n","import { commitItemIconMap } from './constants';\n\nexport default (file) => {\n  if (file.deleted) {\n    return commitItemIconMap.deleted;\n  }\n  if (file.tempFile && !file.prevPath) {\n    return commitItemIconMap.addition;\n  }\n\n  return commitItemIconMap.modified;\n};\n","export const SEVERITY_CLASSES = {\n  info: 'gl-text-blue-400',\n  low: 'gl-text-orange-300',\n  medium: 'gl-text-orange-400',\n  high: 'gl-text-red-600',\n  critical: 'gl-text-red-800',\n  unknown: 'gl-text-gray-400',\n};\n\nexport const SEVERITY_ICONS = {\n  info: 'severity-info',\n  low: 'severity-low',\n  medium: 'severity-medium',\n  high: 'severity-high',\n  critical: 'severity-critical',\n  unknown: 'severity-unknown',\n};\n\nexport const SEVERITIES = {\n  info: {\n    class: SEVERITY_CLASSES.info,\n    name: SEVERITY_ICONS.info,\n  },\n  low: {\n    class: SEVERITY_CLASSES.low,\n    name: SEVERITY_ICONS.low,\n  },\n  medium: {\n    class: SEVERITY_CLASSES.medium,\n    name: SEVERITY_ICONS.medium,\n  },\n  high: {\n    class: SEVERITY_CLASSES.high,\n    name: SEVERITY_ICONS.high,\n  },\n  critical: {\n    class: SEVERITY_CLASSES.critical,\n    name: SEVERITY_ICONS.critical,\n  },\n  unknown: {\n    class: SEVERITY_CLASSES.unknown,\n    name: SEVERITY_ICONS.unknown,\n  },\n};\n","import { SEVERITIES as SEVERITIES_CODE_QUALITY } from '~/ci/reports/codequality_report/constants';\nimport { SEVERITIES as SEVERITIES_SAST } from '~/ci/reports/sast/constants';\nimport { SAST_SCALE_KEY } from './constants';\n\nfunction mapSeverity(findings) {\n  const severityInfo =\n    findings.scale === SAST_SCALE_KEY ? SEVERITIES_SAST : SEVERITIES_CODE_QUALITY;\n  return {\n    ...findings,\n    class: severityInfo[findings.severity].class,\n    name: severityInfo[findings.severity].name,\n  };\n}\n\nexport function getSeverity(findings) {\n  if (Array.isArray(findings)) {\n    return findings.map((finding) => mapSeverity(finding));\n  }\n  return mapSeverity(findings);\n}\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","const fileExtensionIcons = {\n  html: 'html',\n  htm: 'html',\n  html_vm: 'html',\n  asp: 'html',\n  jade: 'pug',\n  pug: 'pug',\n  md: 'markdown',\n  markdown: 'markdown',\n  mdown: 'markdown',\n  mkd: 'markdown',\n  mkdn: 'markdown',\n  rst: 'markdown',\n  blink: 'blink',\n  css: 'css',\n  scss: 'sass',\n  sass: 'sass',\n  less: 'less',\n  json: 'json',\n  yaml: 'yaml',\n  yml: 'yaml',\n  xml: 'xml',\n  plist: 'xml',\n  xsd: 'xml',\n  dtd: 'xml',\n  xsl: 'xml',\n  xslt: 'xml',\n  resx: 'xml',\n  iml: 'xml',\n  xquery: 'xml',\n  tmLanguage: 'xml',\n  manifest: 'xml',\n  project: 'xml',\n  png: 'image',\n  jpeg: 'image',\n  jpg: 'image',\n  gif: 'image',\n  svg: 'image',\n  ico: 'image',\n  tif: 'image',\n  tiff: 'image',\n  psd: 'image',\n  psb: 'image',\n  ami: 'image',\n  apx: 'image',\n  bmp: 'image',\n  bpg: 'image',\n  brk: 'image',\n  cur: 'image',\n  dds: 'image',\n  dng: 'image',\n  exr: 'image',\n  fpx: 'image',\n  gbr: 'image',\n  img: 'image',\n  jbig2: 'image',\n  jb2: 'image',\n  jng: 'image',\n  jxr: 'image',\n  pbm: 'image',\n  pgf: 'image',\n  pic: 'image',\n  raw: 'image',\n  webp: 'image',\n  js: 'javascript',\n  cjs: 'javascript',\n  ejs: 'javascript',\n  esx: 'javascript',\n  mjs: 'javascript',\n  jsx: 'react',\n  tsx: 'react',\n  ini: 'settings',\n  dlc: 'settings',\n  dll: 'settings',\n  config: 'settings',\n  conf: 'settings',\n  properties: 'settings',\n  prop: 'settings',\n  settings: 'settings',\n  option: 'settings',\n  props: 'settings',\n  toml: 'settings',\n  prefs: 'settings',\n  ts: 'typescript',\n  cts: 'typescript',\n  mts: 'typescript',\n  marko: 'markojs',\n  pdf: 'pdf',\n  xlsx: 'table',\n  xls: 'table',\n  ods: 'table',\n  csv: 'table',\n  tsv: 'table',\n  vscodeignore: 'vscode',\n  vsixmanifest: 'vscode',\n  vsix: 'vscode',\n  suo: 'visualstudio',\n  sln: 'visualstudio',\n  csproj: 'visualstudio',\n  vb: 'visualstudio',\n  pdb: 'database',\n  sql: 'database',\n  pks: 'database',\n  pkb: 'database',\n  accdb: 'database',\n  mdb: 'database',\n  sqlite: 'database',\n  cs: 'csharp',\n  zip: 'zip',\n  tar: 'zip',\n  gz: 'zip',\n  xz: 'zip',\n  bzip2: 'zip',\n  gzip: 'zip',\n  rar: 'zip',\n  tgz: 'zip',\n  exe: 'exe',\n  msi: 'exe',\n  java: 'java',\n  jar: 'java',\n  jsp: 'java',\n  c: 'c',\n  m: 'c',\n  h: 'h',\n  cc: 'cpp',\n  cpp: 'cpp',\n  mm: 'cpp',\n  cxx: 'cpp',\n  hpp: 'hpp',\n  go: 'go',\n  py: 'python',\n  url: 'url',\n  sh: 'console',\n  ksh: 'console',\n  csh: 'console',\n  tcsh: 'console',\n  zsh: 'console',\n  bash: 'console',\n  bat: 'console',\n  cmd: 'console',\n  ps1: 'powershell',\n  psm1: 'powershell',\n  psd1: 'powershell',\n  ps1xml: 'powershell',\n  psc1: 'powershell',\n  pssc: 'powershell',\n  gradle: 'gradle',\n  doc: 'word',\n  docx: 'word',\n  odt: 'word',\n  rtf: 'word',\n  cer: 'certificate',\n  cert: 'certificate',\n  crt: 'certificate',\n  pub: 'key',\n  key: 'key',\n  pem: 'key',\n  asc: 'key',\n  gpg: 'key',\n  woff: 'font',\n  woff2: 'font',\n  ttf: 'font',\n  eot: 'font',\n  suit: 'font',\n  otf: 'font',\n  bmap: 'font',\n  fnt: 'font',\n  odttf: 'font',\n  ttc: 'font',\n  font: 'font',\n  fonts: 'font',\n  sui: 'font',\n  ntf: 'font',\n  mrf: 'font',\n  lib: 'lib',\n  bib: 'lib',\n  rb: 'ruby',\n  erb: 'ruby',\n  fs: 'fsharp',\n  fsx: 'fsharp',\n  fsi: 'fsharp',\n  fsproj: 'fsharp',\n  swift: 'swift',\n  ino: 'arduino',\n  dockerignore: 'docker',\n  dockerfile: 'docker',\n  tex: 'tex',\n  cls: 'tex',\n  sty: 'tex',\n  pptx: 'powerpoint',\n  ppt: 'powerpoint',\n  pptm: 'powerpoint',\n  potx: 'powerpoint',\n  pot: 'powerpoint',\n  potm: 'powerpoint',\n  ppsx: 'powerpoint',\n  ppsm: 'powerpoint',\n  pps: 'powerpoint',\n  ppam: 'powerpoint',\n  ppa: 'powerpoint',\n  odp: 'powerpoint',\n  webm: 'video',\n  mkv: 'video',\n  flv: 'video',\n  vob: 'video',\n  ogv: 'video',\n  ogg: 'audio',\n  gifv: 'video',\n  avi: 'video',\n  mov: 'video',\n  qt: 'video',\n  wmv: 'video',\n  yuv: 'video',\n  rm: 'video',\n  rmvb: 'video',\n  mp4: 'video',\n  m4v: 'video',\n  mpg: 'video',\n  mp2: 'video',\n  mpeg: 'video',\n  mpe: 'video',\n  mpv: 'video',\n  m2v: 'video',\n  vdi: 'virtual',\n  vbox: 'virtual',\n  ics: 'email',\n  mp3: 'audio',\n  flac: 'audio',\n  m4a: 'audio',\n  wma: 'audio',\n  aiff: 'audio',\n  coffee: 'coffee',\n  txt: 'document',\n  graphql: 'graphql',\n  rs: 'rust',\n  raml: 'raml',\n  xaml: 'xaml',\n  hs: 'haskell',\n  kt: 'kotlin',\n  kts: 'kotlin',\n  patch: 'git',\n  lua: 'lua',\n  clj: 'clojure',\n  cljs: 'clojure',\n  groovy: 'groovy',\n  r: 'r',\n  rmd: 'r',\n  dart: 'dart',\n  as: 'actionscript',\n  mxml: 'mxml',\n  ahk: 'autohotkey',\n  swf: 'flash',\n  swc: 'swc',\n  cmake: 'cmake',\n  asm: 'assembly',\n  a51: 'assembly',\n  inc: 'assembly',\n  nasm: 'assembly',\n  s: 'assembly',\n  ms: 'assembly',\n  agc: 'assembly',\n  ags: 'assembly',\n  aea: 'assembly',\n  argus: 'assembly',\n  mitigus: 'assembly',\n  binsource: 'assembly',\n  vue: 'vue',\n  ml: 'ocaml',\n  mli: 'ocaml',\n  cmx: 'ocaml',\n  lock: 'lock',\n  hbs: 'handlebars',\n  mustache: 'handlebars',\n  pl: 'perl',\n  pm: 'perl',\n  hx: 'haxe',\n  pp: 'puppet',\n  ex: 'elixir',\n  exs: 'elixir',\n  ls: 'livescript',\n  erl: 'erlang',\n  twig: 'twig',\n  jl: 'julia',\n  elm: 'elm',\n  pure: 'purescript',\n  tpl: 'smarty',\n  styl: 'stylus',\n  re: 'reason',\n  rei: 'reason',\n  cmj: 'bucklescript',\n  merlin: 'merlin',\n  v: 'verilog',\n  vhd: 'verilog',\n  sv: 'verilog',\n  svh: 'verilog',\n  nb: 'mathematica',\n  wl: 'wolframlanguage',\n  wls: 'wolframlanguage',\n  njk: 'nunjucks',\n  nunjucks: 'nunjucks',\n  robot: 'robot',\n  sol: 'solidity',\n  au3: 'autoit',\n  haml: 'haml',\n  yang: 'yang',\n  tf: 'terraform',\n  tfvars: 'terraform',\n  tfstate: 'terraform',\n  applescript: 'applescript',\n  cake: 'cake',\n  feature: 'cucumber',\n  nim: 'nim',\n  nimble: 'nim',\n  apib: 'apiblueprint',\n  apiblueprint: 'apiblueprint',\n  tag: 'riot',\n  vfl: 'vfl',\n  kl: 'kl',\n  pcss: 'postcss',\n  sss: 'postcss',\n  todo: 'todo',\n  cfml: 'coldfusion',\n  cfc: 'coldfusion',\n  lucee: 'coldfusion',\n  cabal: 'cabal',\n  nix: 'nix',\n  slim: 'slim',\n  http: 'http',\n  rest: 'http',\n  rql: 'restql',\n  restql: 'restql',\n  kv: 'kivy',\n  graphcool: 'graphcool',\n  sbt: 'sbt',\n  cr: 'crystal',\n  cu: 'cuda',\n  cuh: 'cuda',\n  log: 'log',\n};\n\nconst twoFileExtensionIcons = {\n  'gradle.kts': 'gradle',\n  'md.rendered': 'markdown',\n  'markdown.rendered': 'markdown',\n  'mdown.rendered': 'markdown',\n  'mkd.rendered': 'markdown',\n  'mkdn.rendered': 'markdown',\n  'YAML-tmLanguage': 'yaml',\n  'sln.dotsettings': 'settings',\n  'sln.dotsettings.user': 'settings',\n  'd.ts': 'typescript-def',\n  'code-workplace': 'vscode',\n  '7z': 'zip',\n  'c++': 'cpp',\n  'vbox-prev': 'virtual',\n  'js.map': 'javascript-map',\n  'css.map': 'css-map',\n  'spec.ts': 'test-ts',\n  'test.ts': 'test-ts',\n  'ts.snap': 'test-ts',\n  'spec.tsx': 'test-jsx',\n  'test.tsx': 'test-jsx',\n  'tsx.snap': 'test-jsx',\n  'spec.jsx': 'test-jsx',\n  'test.jsx': 'test-jsx',\n  'jsx.snap': 'test-jsx',\n  'spec.js': 'test-js',\n  'test.js': 'test-js',\n  'js.snap': 'test-js',\n  // 'routing.ts': 'angular-routing',\n  // 'routing.js': 'angular-routing',\n  'module.ts': 'angular',\n  'module.js': 'angular',\n  'ng-template': 'angular',\n  'component.ts': 'angular-component',\n  'component.js': 'angular-component',\n  'guard.ts': 'angular-guard',\n  'guard.js': 'angular-guard',\n  'service.ts': 'angular-service',\n  'service.js': 'angular-service',\n  'pipe.ts': 'angular-pipe',\n  'pipe.js': 'angular-pipe',\n  'filter.js': 'angular-pipe',\n  'directive.ts': 'angular-directive',\n  'directive.js': 'angular-directive',\n  'resolver.ts': 'angular-resolver',\n  'resolver.js': 'angular-resolver',\n  'tf.json': 'terraform',\n  'blade.php': 'laravel',\n  'inky.php': 'laravel',\n  'reducer.ts': 'ngrx-reducer',\n  'rootReducer.ts': 'ngrx-reducer',\n  'state.ts': 'ngrx-state',\n  'actions.ts': 'ngrx-actions',\n  'effects.ts': 'ngrx-effects',\n  'drone.yml': 'drone',\n};\n\nconst fileNameIcons = {\n  '.jscsrc': 'json',\n  '.jshintrc': 'json',\n  'tsconfig.json': 'json',\n  'tslint.json': 'json',\n  'composer.lock': 'json',\n  '.jsbeautifyrc': 'json',\n  '.esformatter': 'json',\n  'cdp.pid': 'json',\n  '.htaccess': 'xml',\n  '.jshintignore': 'settings',\n  '.buildignore': 'settings',\n  makefile: 'settings',\n  '.mrconfig': 'settings',\n  '.yardopts': 'settings',\n  'gradle.properties': 'gradle',\n  gradlew: 'gradle',\n  'gradle-wrapper.properties': 'gradle',\n  COPYING: 'certificate',\n  'COPYING.LESSER': 'certificate',\n  LICENSE: 'certificate',\n  LICENCE: 'certificate',\n  'LICENSE.md': 'certificate',\n  'LICENCE.md': 'certificate',\n  'LICENSE.txt': 'certificate',\n  'LICENCE.txt': 'certificate',\n  '.gitlab-license': 'certificate',\n  dockerfile: 'docker',\n  'docker-compose.yml': 'docker',\n  '.mailmap': 'email',\n  '.gitignore': 'git',\n  '.gitconfig': 'git',\n  '.gitattributes': 'git',\n  '.gitmodules': 'git',\n  '.gitkeep': 'git',\n  'git-history': 'git',\n  '.Rhistory': 'r',\n  'cmakelists.txt': 'cmake',\n  'cmakecache.txt': 'cmake',\n  'angular-cli.json': 'angular',\n  '.angular-cli.json': 'angular',\n  '.vfl': 'vfl',\n  '.kl': 'kl',\n  'postcss.config.js': 'postcss',\n  '.postcssrc.js': 'postcss',\n  'project.graphcool': 'graphcool',\n  'webpack.js': 'webpack',\n  'webpack.ts': 'webpack',\n  'webpack.base.js': 'webpack',\n  'webpack.base.ts': 'webpack',\n  'webpack.config.js': 'webpack',\n  'webpack.config.ts': 'webpack',\n  'webpack.common.js': 'webpack',\n  'webpack.common.ts': 'webpack',\n  'webpack.config.common.js': 'webpack',\n  'webpack.config.common.ts': 'webpack',\n  'webpack.config.common.babel.js': 'webpack',\n  'webpack.config.common.babel.ts': 'webpack',\n  'webpack.dev.js': 'webpack',\n  'webpack.dev.ts': 'webpack',\n  'webpack.config.dev.js': 'webpack',\n  'webpack.config.dev.ts': 'webpack',\n  'webpack.config.dev.babel.js': 'webpack',\n  'webpack.config.dev.babel.ts': 'webpack',\n  'webpack.prod.js': 'webpack',\n  'webpack.prod.ts': 'webpack',\n  'webpack.server.js': 'webpack',\n  'webpack.server.ts': 'webpack',\n  'webpack.client.js': 'webpack',\n  'webpack.client.ts': 'webpack',\n  'webpack.config.server.js': 'webpack',\n  'webpack.config.server.ts': 'webpack',\n  'webpack.config.client.js': 'webpack',\n  'webpack.config.client.ts': 'webpack',\n  'webpack.config.production.babel.js': 'webpack',\n  'webpack.config.production.babel.ts': 'webpack',\n  'webpack.config.prod.babel.js': 'webpack',\n  'webpack.config.prod.babel.ts': 'webpack',\n  'webpack.config.prod.js': 'webpack',\n  'webpack.config.prod.ts': 'webpack',\n  'webpack.config.production.js': 'webpack',\n  'webpack.config.production.ts': 'webpack',\n  'webpack.config.staging.js': 'webpack',\n  'webpack.config.staging.ts': 'webpack',\n  'webpack.config.babel.js': 'webpack',\n  'webpack.config.babel.ts': 'webpack',\n  'webpack.config.base.babel.js': 'webpack',\n  'webpack.config.base.babel.ts': 'webpack',\n  'webpack.config.base.js': 'webpack',\n  'webpack.config.base.ts': 'webpack',\n  'webpack.config.staging.babel.js': 'webpack',\n  'webpack.config.staging.babel.ts': 'webpack',\n  'webpack.config.coffee': 'webpack',\n  'webpack.config.test.js': 'webpack',\n  'webpack.config.test.ts': 'webpack',\n  'webpack.config.vendor.js': 'webpack',\n  'webpack.config.vendor.ts': 'webpack',\n  'webpack.config.vendor.production.js': 'webpack',\n  'webpack.config.vendor.production.ts': 'webpack',\n  'webpack.test.js': 'webpack',\n  'webpack.test.ts': 'webpack',\n  'webpack.dist.js': 'webpack',\n  'webpack.dist.ts': 'webpack',\n  'webpackfile.js': 'webpack',\n  'webpackfile.ts': 'webpack',\n  'ionic.config.json': 'ionic',\n  '.io-config.json': 'ionic',\n  'gulpfile.js': 'gulp',\n  'gulpfile.ts': 'gulp',\n  'gulpfile.babel.js': 'gulp',\n  'package.json': 'nodejs',\n  'package-lock.json': 'nodejs',\n  '.nvmrc': 'nodejs',\n  '.npmignore': 'npm',\n  '.npmrc': 'npm',\n  '.yarnrc': 'yarn',\n  '.yarnrc.yml': 'yarn',\n  'yarn.lock': 'yarn',\n  '.yarnclean': 'yarn',\n  '.yarn-integrity': 'yarn',\n  'yarn-error.log': 'yarn',\n  'androidmanifest.xml': 'android',\n  '.env': 'tune',\n  '.env.example': 'tune',\n  '.babelrc': 'babel',\n  'contributing.md': 'contributing',\n  'contributing.md.rendered': 'contributing',\n  'readme.md': 'readme',\n  'readme.md.rendered': 'readme',\n  changelog: 'changelog',\n  'changelog.md': 'changelog',\n  'changelog.md.rendered': 'changelog',\n  CREDITS: 'credits',\n  'credits.txt': 'credits',\n  'credits.md': 'credits',\n  'credits.md.rendered': 'credits',\n  '.flowconfig': 'flow',\n  'favicon.png': 'favicon',\n  'karma.conf.js': 'karma',\n  'karma.conf.ts': 'karma',\n  'karma.conf.coffee': 'karma',\n  'karma.config.js': 'karma',\n  'karma.config.ts': 'karma',\n  'karma-main.js': 'karma',\n  'karma-main.ts': 'karma',\n  '.bithoundrc': 'bithound',\n  'appveyor.yml': 'appveyor',\n  '.travis.yml': 'travis',\n  'protractor.conf.js': 'protractor',\n  'protractor.conf.ts': 'protractor',\n  'protractor.conf.coffee': 'protractor',\n  'protractor.config.js': 'protractor',\n  'protractor.config.ts': 'protractor',\n  'fuse.js': 'fusebox',\n  procfile: 'heroku',\n  '.editorconfig': 'editorconfig',\n  '.gitlab-ci.yml': 'gitlab',\n  '.bowerrc': 'bower',\n  'bower.json': 'bower',\n  '.eslintrc.js': 'eslint',\n  '.eslintrc.yaml': 'eslint',\n  '.eslintrc.yml': 'eslint',\n  '.eslintrc.json': 'eslint',\n  '.eslintrc': 'eslint',\n  '.eslintignore': 'eslint',\n  'code_of_conduct.md': 'conduct',\n  'code_of_conduct.md.rendered': 'conduct',\n  '.watchmanconfig': 'watchman',\n  'aurelia.json': 'aurelia',\n  'mocha.opts': 'mocha',\n  jenkinsfile: 'jenkins',\n  'firebase.json': 'firebase',\n  '.firebaserc': 'firebase',\n  Rakefile: 'ruby',\n  'rollup.config.js': 'rollup',\n  'rollup.config.ts': 'rollup',\n  'rollup-config.js': 'rollup',\n  'rollup-config.ts': 'rollup',\n  'rollup.config.prod.js': 'rollup',\n  'rollup.config.prod.ts': 'rollup',\n  'rollup.config.dev.js': 'rollup',\n  'rollup.config.dev.ts': 'rollup',\n  'rollup.config.prod.vendor.js': 'rollup',\n  'rollup.config.prod.vendor.ts': 'rollup',\n  '.hhconfig': 'hack',\n  '.stylelintrc': 'stylelint',\n  'stylelint.config.js': 'stylelint',\n  '.stylelintrc.json': 'stylelint',\n  '.stylelintrc.yaml': 'stylelint',\n  '.stylelintrc.yml': 'stylelint',\n  '.stylelintrc.js': 'stylelint',\n  '.stylelintignore': 'stylelint',\n  '.codeclimate.yml': 'code-climate',\n  '.prettierrc': 'prettier',\n  'prettier.config.js': 'prettier',\n  '.prettierrc.js': 'prettier',\n  '.prettierrc.json': 'prettier',\n  '.prettierrc.yaml': 'prettier',\n  '.prettierrc.yml': 'prettier',\n  '.prettierignore': 'prettier',\n  'nodemon.json': 'nodemon',\n  // '.sonarrc': 'sonar',\n  browserslist: 'browserlist',\n  '.browserslistrc': 'browserlist',\n  '.snyk': 'snyk',\n  '.drone.yml': 'drone',\n};\n\nfunction getIconForFile(name) {\n  return (\n    fileNameIcons[name] ||\n    twoFileExtensionIcons[name ? name.split('.').slice(-2).join('.') : ''] ||\n    fileExtensionIcons[name ? name.split('.').pop().toLowerCase() : ''] ||\n    ''\n  );\n}\n\nmodule.exports = {\n  fileNameIcons,\n  fileExtensionIcons,\n  twoFileExtensionIcons,\n  getIconForFile,\n};\n","<script>\nimport { GlDisclosureDropdown, GlIcon, GlSearchBoxByType, GlSprintf } from '@gitlab/ui';\nimport fuzzaldrinPlus from 'fuzzaldrin-plus';\nimport { __, n__, s__, sprintf } from '~/locale';\n\nexport const i18n = {\n  messageAdditionsDeletions: s__('Diffs|with %{additions} and %{deletions}'),\n  noFilesFound: __('No files found.'),\n  noFileNameAvailable: s__('Diffs|No file name available'),\n  searchFiles: __('Search files'),\n};\n\nconst variantCssColorMap = {\n  success: 'gl-text-success',\n  danger: 'gl-text-danger',\n};\n\nexport default {\n  i18n,\n  components: {\n    GlDisclosureDropdown,\n    GlIcon,\n    GlSearchBoxByType,\n    GlSprintf,\n  },\n  props: {\n    changed: {\n      type: Number,\n      required: true,\n    },\n    added: {\n      type: Number,\n      required: true,\n    },\n    deleted: {\n      type: Number,\n      required: true,\n    },\n    files: {\n      type: Array,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      search: '',\n    };\n  },\n  computed: {\n    filteredFiles() {\n      return this.search.length > 0\n        ? fuzzaldrinPlus.filter(this.files, this.search, { key: 'name' })\n        : this.files;\n    },\n    dropdownItems() {\n      return this.filteredFiles.map((file) => {\n        return {\n          ...file,\n          text: file.name || this.$options.i18n.noFileNameAvailable,\n          iconColor: variantCssColorMap[file.iconColor],\n        };\n      });\n    },\n    messageChanged() {\n      return sprintf(\n        n__(\n          'Diffs|Showing %{dropdownStart}%{count} changed file%{dropdownEnd}',\n          'Diffs|Showing %{dropdownStart}%{count} changed files%{dropdownEnd}',\n          this.changed,\n        ),\n        { count: this.changed },\n      );\n    },\n  },\n  methods: {\n    focusInput() {\n      this.$refs.search.focusInput();\n    },\n    focusFirstItem() {\n      if (!this.filteredFiles.length) return;\n      this.$el.querySelector('.gl-new-dropdown-item:first-child').focus();\n    },\n    additionsText(numberOfChanges = this.added) {\n      return n__('Diffs|%d addition', 'Diffs|%d additions', numberOfChanges);\n    },\n    deletionsText(numberOfChanges = this.deleted) {\n      return n__('Diffs|%d deletion', 'Diffs|%d deletions', numberOfChanges);\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <gl-sprintf :message=\"messageChanged\">\n      <template #dropdown=\"{ content: dropdownText }\">\n        <gl-disclosure-dropdown\n          :toggle-text=\"dropdownText\"\n          :items=\"dropdownItems\"\n          category=\"tertiary\"\n          variant=\"confirm\"\n          data-testid=\"diff-stats-dropdown\"\n          class=\"gl-align-baseline\"\n          toggle-class=\"!gl-px-0 !gl-font-bold\"\n          fluid-width\n          @shown=\"focusInput\"\n        >\n          <template #header>\n            <gl-search-box-by-type\n              ref=\"search\"\n              v-model.trim=\"search\"\n              :placeholder=\"$options.i18n.searchFiles\"\n              class=\"gl-mx-3 gl-my-4\"\n              @keydown.down=\"focusFirstItem\"\n            />\n            <span v-if=\"!filteredFiles.length\" class=\"gl-mx-3\">\n              {{ $options.i18n.noFilesFound }}\n            </span>\n          </template>\n          <template #list-item=\"{ item }\">\n            <div class=\"gl-flex gl-items-center gl-gap-3 gl-overflow-hidden\">\n              <gl-icon :name=\"item.icon\" :class=\"item.iconColor\" class=\"gl-shrink-0\" />\n              <div class=\"gl-grow gl-overflow-hidden\">\n                <div class=\"gl-flex\">\n                  <span\n                    class=\"gl-mr-3 gl-grow gl-font-bold\"\n                    :class=\"item.name ? 'gl-truncate' : 'gl-italic gl-text-subtle'\"\n                    >{{ item.text }}</span\n                  >\n                  <span class=\"gl-ml-auto gl-whitespace-nowrap\" aria-hidden=\"true\">\n                    <span class=\"gl-text-success\">+{{ item.added }}</span>\n                    <span class=\"gl-text-danger\">-{{ item.removed }}</span>\n                  </span>\n                  <span class=\"gl-sr-only\"\n                    >{{ additionsText(item.added) }}, {{ deletionsText(item.removed) }}</span\n                  >\n                </div>\n                <div class=\"gl-overflow-hidden gl-text-ellipsis gl-text-subtle\">\n                  {{ item.path }}\n                </div>\n              </div>\n            </div>\n          </template>\n        </gl-disclosure-dropdown>\n      </template>\n    </gl-sprintf>\n    <span\n      class=\"diff-stats-additions-deletions-expanded\"\n      data-testid=\"diff-stats-additions-deletions-expanded\"\n    >\n      <gl-sprintf :message=\"$options.i18n.messageAdditionsDeletions\">\n        <template #additions>\n          <span class=\"gl-font-bold gl-text-success\">{{ additionsText() }}</span>\n        </template>\n        <template #deletions>\n          <span class=\"gl-font-bold gl-text-danger\">{{ deletionsText() }}</span>\n        </template>\n      </gl-sprintf>\n    </span>\n  </div>\n</template>\n\n<style scoped>\n/* TODO: Use max-height prop when gitlab-ui got updated.\nSee https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2374 */\n::v-deep .gl-new-dropdown-inner {\n  max-height: 310px;\n}\n</style>\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!./diff_stats_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!./diff_stats_dropdown.vue?vue&type=script&lang=js\"","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--20-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_stats_dropdown.vue?vue&type=style&index=0&id=5fa5a073&prod&scoped=true&lang=css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./diff_stats_dropdown.vue?vue&type=template&id=5fa5a073&scoped=true\"\nimport script from \"./diff_stats_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./diff_stats_dropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./diff_stats_dropdown.vue?vue&type=style&index=0&id=5fa5a073&prod&scoped=true&lang=css\"\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  \"5fa5a073\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('gl-sprintf',{attrs:{\"message\":_vm.messageChanged},scopedSlots:_vm._u([{key:\"dropdown\",fn:function({ content: dropdownText }){return [_c('gl-disclosure-dropdown',{staticClass:\"gl-align-baseline\",attrs:{\"toggle-text\":dropdownText,\"items\":_vm.dropdownItems,\"category\":\"tertiary\",\"variant\":\"confirm\",\"data-testid\":\"diff-stats-dropdown\",\"toggle-class\":\"!gl-px-0 !gl-font-bold\",\"fluid-width\":\"\"},on:{\"shown\":_vm.focusInput},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('gl-search-box-by-type',{ref:\"search\",staticClass:\"gl-mx-3 gl-my-4\",attrs:{\"placeholder\":_vm.$options.i18n.searchFiles},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.focusFirstItem.apply(null, arguments)}},model:{value:(_vm.search),callback:function ($$v) {_vm.search=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"search\"}}),_vm._v(\" \"),(!_vm.filteredFiles.length)?_c('span',{staticClass:\"gl-mx-3\"},[_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.noFilesFound)+\"\\n          \")]):_vm._e()]},proxy:true},{key:\"list-item\",fn:function({ item }){return [_c('div',{staticClass:\"gl-flex gl-items-center gl-gap-3 gl-overflow-hidden\"},[_c('gl-icon',{staticClass:\"gl-shrink-0\",class:item.iconColor,attrs:{\"name\":item.icon}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-grow gl-overflow-hidden\"},[_c('div',{staticClass:\"gl-flex\"},[_c('span',{staticClass:\"gl-mr-3 gl-grow gl-font-bold\",class:item.name ? 'gl-truncate' : 'gl-italic gl-text-subtle'},[_vm._v(_vm._s(item.text))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-ml-auto gl-whitespace-nowrap\",attrs:{\"aria-hidden\":\"true\"}},[_c('span',{staticClass:\"gl-text-success\"},[_vm._v(\"+\"+_vm._s(item.added))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-danger\"},[_vm._v(\"-\"+_vm._s(item.removed))])]),_vm._v(\" \"),_c('span',{staticClass:\"gl-sr-only\"},[_vm._v(_vm._s(_vm.additionsText(item.added))+\", \"+_vm._s(_vm.deletionsText(item.removed)))])]),_vm._v(\" \"),_c('div',{staticClass:\"gl-overflow-hidden gl-text-ellipsis gl-text-subtle\"},[_vm._v(\"\\n                \"+_vm._s(item.path)+\"\\n              \")])])],1)]}}],null,true)})]}}])}),_vm._v(\" \"),_c('span',{staticClass:\"diff-stats-additions-deletions-expanded\",attrs:{\"data-testid\":\"diff-stats-additions-deletions-expanded\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.messageAdditionsDeletions},scopedSlots:_vm._u([{key:\"additions\",fn:function(){return [_c('span',{staticClass:\"gl-font-bold gl-text-success\"},[_vm._v(_vm._s(_vm.additionsText()))])]},proxy:true},{key:\"deletions\",fn:function(){return [_c('span',{staticClass:\"gl-font-bold gl-text-danger\"},[_vm._v(_vm._s(_vm.deletionsText()))])]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport DiffStatsDropdown from '~/vue_shared/components/diff_stats_dropdown.vue';\n\nexport const initDiffStatsDropdown = () => {\n  const el = document.querySelector('.js-diff-stats-dropdown');\n\n  if (!el) {\n    return false;\n  }\n\n  const { changed, added, deleted, files } = el.dataset;\n\n  return new Vue({\n    el,\n    render: (createElement) =>\n      createElement(DiffStatsDropdown, {\n        props: {\n          changed: parseInt(changed, 10),\n          added: parseInt(added, 10),\n          deleted: parseInt(deleted, 10),\n          files: JSON.parse(files),\n        },\n      }),\n  });\n};\n","import { identity } from '../../../utils/identity';\nimport { isArray, isString, isObject, isFunction } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants';\n\n// Private function to massage field entry into common object format\nconst processField = (key, value) => {\n  let field = null;\n  if (isString(value)) {\n    // Label shortcut\n    field = {\n      key,\n      label: value\n    };\n  } else if (isFunction(value)) {\n    // Formatter shortcut\n    field = {\n      key,\n      formatter: value\n    };\n  } else if (isObject(value)) {\n    field = clone(value);\n    field.key = field.key || key;\n  } else if (value !== false) {\n    // Fallback to just key\n    /* istanbul ignore next */\n    field = {\n      key\n    };\n  }\n  return field;\n};\n\n// We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\nconst normalizeFields = (origFields, items) => {\n  const fields = [];\n  if (isArray(origFields)) {\n    // Normalize array Form\n    origFields.filter(identity).forEach(f => {\n      if (isString(f)) {\n        fields.push({\n          key: f,\n          label: startCase(f)\n        });\n      } else if (isObject(f) && f.key && isString(f.key)) {\n        // Full object definition. We use assign so that we don't mutate the original\n        fields.push(clone(f));\n      } else if (isObject(f) && keys(f).length === 1) {\n        // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n        const key = keys(f)[0];\n        const field = processField(key, f[key]);\n        if (field) {\n          fields.push(field);\n        }\n      }\n    });\n  }\n\n  // If no field provided, take a sample from first record (if exits)\n  if (fields.length === 0 && isArray(items) && items.length > 0) {\n    const sample = items[0];\n    keys(sample).forEach(k => {\n      if (!IGNORED_FIELD_KEYS[k]) {\n        fields.push({\n          key: k,\n          label: startCase(k)\n        });\n      }\n    });\n  }\n\n  // Ensure we have a unique array of fields and that they have String labels\n  const memo = {};\n  return fields.filter(f => {\n    if (!memo[f.key]) {\n      memo[f.key] = true;\n      f.label = isString(f.label) ? f.label : startCase(f.key);\n      return true;\n    }\n    return false;\n  });\n};\n\nexport { normalizeFields };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { isArray, isString, isFunction } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { sortKeys, clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { normalizeFields } from './normalize-fields';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_ARRAY,\n  defaultValue: []\n});\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...modelProps,\n  fields: makeProp(PROP_TYPE_ARRAY, null),\n  // Provider mixin adds in `Function` type\n  items: makeProp(PROP_TYPE_ARRAY, []),\n  // Primary key for record\n  // If provided the value in each row must be unique!\n  primaryKey: makeProp(PROP_TYPE_STRING),\n  // `v-model` for retrieving the current displayed rows\n  [MODEL_PROP_NAME]: makeProp(PROP_TYPE_ARRAY, [])\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst itemsMixin = extend({\n  mixins: [modelMixin, useParentMixin],\n  props,\n  data() {\n    const {\n      items\n    } = this;\n    return {\n      // Our local copy of the items\n      // Must be an array\n      localItems: isArray(items) ? items.slice() : []\n    };\n  },\n  computed: {\n    computedFields() {\n      // We normalize fields into an array of objects\n      // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n      return normalizeFields(this.fields, this.localItems);\n    },\n    computedFieldsObj() {\n      // Fields as a simple lookup hash object\n      // Mainly for formatter lookup and use in `scopedSlots` for convenience\n      // If the field has a formatter, it normalizes formatter to a\n      // function ref or `undefined` if no formatter\n      const {\n        bvParent\n      } = this;\n      return this.computedFields.reduce((obj, f) => {\n        // We use object spread here so we don't mutate the original field object\n        obj[f.key] = clone(f);\n        if (f.formatter) {\n          // Normalize formatter to a function ref or `undefined`\n          let formatter = f.formatter;\n          if (isString(formatter) && isFunction(bvParent[formatter])) {\n            formatter = bvParent[formatter];\n          } else if (!isFunction(formatter)) {\n            /* istanbul ignore next */\n            formatter = undefined;\n          }\n          // Return formatter function or `undefined` if none\n          obj[f.key].formatter = formatter;\n        }\n        return obj;\n      }, {});\n    },\n    computedItems() {\n      const {\n        paginatedItems,\n        sortedItems,\n        filteredItems,\n        localItems\n      } = safeVueInstance(this);\n      // Fallback if various mixins not provided\n      return (paginatedItems || sortedItems || filteredItems || localItems || /* istanbul ignore next */\n      []).slice();\n    },\n    context() {\n      const {\n        perPage,\n        currentPage\n      } = safeVueInstance(this);\n      // Current state of sorting, filtering and pagination props/values\n      return {\n        filter: this.localFilter,\n        sortBy: this.localSortBy,\n        sortDesc: this.localSortDesc,\n        perPage: mathMax(toInteger(perPage, 0), 0),\n        currentPage: mathMax(toInteger(currentPage, 0), 1),\n        apiUrl: this.apiUrl\n      };\n    }\n  },\n  watch: {\n    items(newValue) {\n      // Set `localItems`/`filteredItems` to a copy of the provided array\n      this.localItems = isArray(newValue) ? newValue.slice() : [];\n    },\n    // Watch for changes on `computedItems` and update the `v-model`\n    computedItems(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    // Watch for context changes\n    context(newValue, oldValue) {\n      // Emit context information for external paging/filtering/sorting handling\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n      }\n    }\n  },\n  mounted() {\n    // Initially update the `v-model` of displayed items\n    this.$emit(MODEL_EVENT_NAME, this.computedItems);\n  },\n  methods: {\n    // Method to get the formatter method for a given field key\n    getFieldFormatter(key) {\n      const field = this.computedFieldsObj[key];\n      // `this.computedFieldsObj` has pre-normalized the formatter to a\n      // function ref if present, otherwise `undefined`\n      return field ? field.formatter : undefined;\n    }\n  }\n});\n\nexport { MODEL_EVENT_NAME, MODEL_PROP_NAME, itemsMixin, props };\n","/* eslint-disable class-methods-use-this, no-new */\nimport $ from 'jquery';\nimport issuableEventHub from '~/issues/list/eventhub';\nimport LabelsSelect from '~/labels/labels_select';\nimport {\n  mountAssigneesDropdown,\n  mountConfidentialityDropdown,\n  mountMilestoneDropdown,\n  mountMoveIssuesButton,\n  mountStatusDropdown,\n  mountSubscriptionsDropdown,\n} from '~/sidebar/mount_sidebar';\nimport IssuableBulkUpdateActions from './issuable_bulk_update_actions';\n\nconst HIDDEN_CLASS = 'hidden';\nconst DISABLED_CONTENT_CLASS = 'disabled-content';\nconst SIDEBAR_EXPANDED_CLASS = 'right-sidebar-expanded issuable-bulk-update-sidebar';\nconst SIDEBAR_COLLAPSED_CLASS = 'right-sidebar-collapsed issuable-bulk-update-sidebar';\n\nexport default class IssuableBulkUpdateSidebar {\n  constructor() {\n    this.initDomElements();\n    this.bindEvents();\n    this.initDropdowns();\n    this.setupBulkUpdateActions();\n  }\n\n  initDomElements() {\n    this.$page = $('.layout-page');\n    this.$sidebar = $('.right-sidebar');\n    this.$sidebarInnerContainer = this.$sidebar.find('.issuable-sidebar');\n    this.$bulkEditCancelBtn = $('.js-bulk-update-menu-hide');\n    this.$bulkEditSubmitBtn = $('.js-update-selected-issues');\n    this.$bulkUpdateEnableBtn = $('.js-bulk-update-toggle');\n    this.$otherFilters = $('.issues-other-filters');\n    this.$checkAllContainer = $('.check-all-holder');\n    this.$issueChecks = $('.issue-check');\n    this.$issuesList = $('.issuable-list input[type=\"checkbox\"]');\n    this.$issuableIdsInput = $('#update_issuable_ids');\n  }\n\n  bindEvents() {\n    this.$bulkUpdateEnableBtn.on('click', (e) => this.toggleBulkEdit(e, true));\n    this.$bulkEditCancelBtn.on('click', (e) => this.toggleBulkEdit(e, false));\n    this.$checkAllContainer.on('click', (e) => this.selectAll(e));\n    this.$issuesList.on('change', () => this.updateFormState());\n    this.$bulkEditSubmitBtn.on('click', () => this.prepForSubmit());\n    this.$checkAllContainer.on('click', () => this.updateFormState());\n\n    // The event hub connects this bulk update logic with `issues_list_app.vue`.\n    // We can remove it once we've refactored the issues list page bulk edit sidebar to Vue.\n    // https://gitlab.com/gitlab-org/gitlab/-/issues/325874\n    issuableEventHub.$on('issuables:enableBulkEdit', () => this.toggleBulkEdit(null, true));\n    issuableEventHub.$on('issuables:updateBulkEdit', () => this.updateFormState());\n\n    // These events are connected to the logic inside `move_issues_button.vue`,\n    // so that only one action can be performed at a time\n    issuableEventHub.$on('issuables:bulkMoveStarted', () => this.toggleSubmitButtonDisabled(true));\n    issuableEventHub.$on('issuables:bulkMoveEnded', () => this.updateFormState());\n  }\n\n  initDropdowns() {\n    new LabelsSelect();\n    mountMilestoneDropdown();\n    mountMoveIssuesButton();\n    mountStatusDropdown();\n    mountSubscriptionsDropdown();\n    mountAssigneesDropdown();\n    mountConfidentialityDropdown();\n\n    // Checking IS_EE and using ee_else_ce is odd, but we do it here to satisfy\n    // the import/no-unresolved lint rule when FOSS_ONLY=1, even though at\n    // runtime this block won't execute.\n    if (IS_EE) {\n      import('ee_else_ce/sidebar/mount_sidebar')\n        .then(({ mountEpicDropdown, mountHealthStatusDropdown, mountIterationDropdown }) => {\n          mountEpicDropdown();\n          mountHealthStatusDropdown();\n          mountIterationDropdown();\n        })\n        .catch(() => {});\n    }\n  }\n\n  setupBulkUpdateActions() {\n    IssuableBulkUpdateActions.setOriginalDropdownData();\n  }\n\n  updateFormState() {\n    const noCheckedIssues = !$('.issuable-list input[type=\"checkbox\"]:checked').length;\n\n    this.toggleSubmitButtonDisabled(noCheckedIssues);\n    this.updateSelectedIssuableIds();\n\n    IssuableBulkUpdateActions.setOriginalDropdownData();\n\n    issuableEventHub.$emit('issuables:selectionChanged', !noCheckedIssues);\n  }\n\n  prepForSubmit() {\n    // if submit button is disabled, submission is blocked. This ensures we disable after\n    // form submission is carried out\n    setTimeout(() => this.$bulkEditSubmitBtn.disable());\n    this.updateSelectedIssuableIds();\n  }\n\n  toggleBulkEdit(e, enable) {\n    e?.preventDefault();\n\n    issuableEventHub.$emit('issuables:toggleBulkEdit', enable);\n\n    this.toggleSidebarDisplay(enable);\n    this.toggleBulkEditButtonDisabled(enable);\n    this.toggleOtherFiltersDisabled(enable);\n    this.toggleCheckboxDisplay(enable);\n  }\n\n  updateSelectedIssuableIds() {\n    this.$issuableIdsInput.val(IssuableBulkUpdateSidebar.getCheckedIssueIds());\n  }\n\n  selectAll() {\n    const checkAllButtonState = this.$checkAllContainer.find('input').prop('checked');\n\n    this.$issuesList.prop('checked', checkAllButtonState);\n  }\n\n  toggleSidebarDisplay(show) {\n    this.$page.toggleClass(SIDEBAR_EXPANDED_CLASS, show);\n    this.$page.toggleClass(SIDEBAR_COLLAPSED_CLASS, !show);\n    this.$sidebarInnerContainer.toggleClass(HIDDEN_CLASS, !show);\n    this.$sidebar.toggleClass(SIDEBAR_EXPANDED_CLASS, show);\n    this.$sidebar.toggleClass(SIDEBAR_COLLAPSED_CLASS, !show);\n  }\n\n  toggleBulkEditButtonDisabled(disable) {\n    if (disable) {\n      this.$bulkUpdateEnableBtn.disable();\n    } else {\n      this.$bulkUpdateEnableBtn.enable();\n    }\n  }\n\n  toggleCheckboxDisplay(show) {\n    this.$checkAllContainer.toggleClass(HIDDEN_CLASS, !show);\n    this.$issueChecks.toggleClass(HIDDEN_CLASS, !show);\n  }\n\n  toggleOtherFiltersDisabled(disable) {\n    this.$otherFilters.toggleClass(DISABLED_CONTENT_CLASS, disable);\n  }\n\n  toggleSubmitButtonDisabled(disable) {\n    if (disable) {\n      this.$bulkEditSubmitBtn.disable();\n    } else {\n      this.$bulkEditSubmitBtn.enable();\n    }\n  }\n\n  static getCheckedIssueIds() {\n    const $checkedIssues = $('.issuable-list input[type=\"checkbox\"]:checked');\n\n    if ($checkedIssues.length > 0) {\n      return $.map($checkedIssues, (value) => $(value).data('id'));\n    }\n\n    return [];\n  }\n}\n","import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';\nimport $ from 'jquery';\nimport { setCookie } from '~/lib/utils/common_utils';\nimport UsersSelect from '~/users_select';\n\nexport default class IssuableContext {\n  constructor(currentUser) {\n    this.reviewersSelect = new UsersSelect(currentUser, '.js-reviewer-search');\n\n    this.reviewersSelect.dropdowns.forEach((glDropdownInstance) => {\n      const jQueryWrapper = glDropdownInstance.dropdown;\n      const domElement = jQueryWrapper[0];\n      const content = domElement.querySelector('.dropdown-content');\n      const loader = domElement.querySelector('.dropdown-loading');\n      const spinner = loader.querySelector('.gl-spinner-container');\n      const realParent = loader.parentNode;\n\n      domElement.classList.add('non-blocking-loader');\n      spinner.classList.remove('gl-mt-7');\n      spinner.classList.add('gl-mt-2');\n\n      jQueryWrapper.on('shown.bs.dropdown', () => {\n        glDropdownInstance.filterInput.focus();\n      });\n      jQueryWrapper.on('toggle.on.loading.gl.dropdown filtering.gl.dropdown', () => {\n        content.appendChild(loader);\n      });\n      jQueryWrapper.on('done.remote.loading.gl.dropdown done.filtering.gl.dropdown', () => {\n        realParent.appendChild(loader);\n      });\n    });\n\n    $('.issuable-sidebar .inline-update').on('change', 'select', function onClickSelect() {\n      return $(this).submit();\n    });\n    $(document)\n      .off('click', '.issuable-sidebar .dropdown-content a')\n      .on('click', '.issuable-sidebar .dropdown-content a', (e) => e.preventDefault());\n\n    $(document)\n      .off('click', '.edit-link')\n      .on('click', '.edit-link', function onClickEdit(e) {\n        e.preventDefault();\n        const $block = $(this).parents('.block');\n        const $selectbox = $block.find('.selectbox');\n        if ($selectbox.is(':visible')) {\n          $selectbox.hide();\n          $block.find('.value:not(.dont-hide)').show();\n        } else {\n          $selectbox.show();\n          $block.find('.value:not(.dont-hide)').hide();\n        }\n\n        if ($selectbox.is(':visible')) {\n          setTimeout(() => $block.find('.dropdown-menu-toggle').trigger('click'), 0);\n        }\n      });\n\n    window.addEventListener('beforeunload', () => {\n      // collapsed_gutter cookie hides the sidebar\n      const bpBreakpoint = bp.getBreakpointSize();\n      const supportedSizes = ['xs', 'sm', 'md'];\n\n      if (supportedSizes.includes(bpBreakpoint)) {\n        setCookie('collapsed_gutter', true);\n      }\n    });\n  }\n}\n","import { GlToast } from '@gitlab/ui';\nimport Vue from 'vue';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport Sidebar from '~/right_sidebar';\nimport { getSidebarOptions } from '~/sidebar/mount_sidebar';\nimport CsvImportExportButtons from './components/csv_import_export_buttons.vue';\nimport IssuableByEmail from './components/issuable_by_email.vue';\nimport issuableBulkUpdateActions from './issuable_bulk_update_actions';\nimport IssuableBulkUpdateSidebar from './issuable_bulk_update_sidebar';\nimport IssuableContext from './issuable_context';\n\nexport function initBulkUpdateSidebar(prefixId) {\n  const el = document.querySelector('.issues-bulk-update');\n\n  if (!el) {\n    return;\n  }\n\n  issuableBulkUpdateActions.init({ prefixId });\n  new IssuableBulkUpdateSidebar(); // eslint-disable-line no-new\n}\n\nexport function initCsvImportExportButtons() {\n  const el = document.querySelector('.js-csv-import-export-buttons');\n\n  if (!el) {\n    return null;\n  }\n\n  const {\n    showExportButton,\n    showImportButton,\n    issuableType,\n    issuableCount,\n    email,\n    exportCsvPath,\n    importCsvIssuesPath,\n    canEdit,\n    projectImportJiraPath,\n    maxAttachmentSize,\n  } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'CsvImportExportButtonsRoot',\n    provide: {\n      showExportButton: parseBoolean(showExportButton),\n      showImportButton: parseBoolean(showImportButton),\n      issuableType,\n      email,\n      importCsvIssuesPath,\n      canEdit: parseBoolean(canEdit),\n      projectImportJiraPath,\n      maxAttachmentSize,\n    },\n    render: (createElement) =>\n      createElement(CsvImportExportButtons, {\n        props: {\n          exportCsvPath,\n          issuableCount: parseInt(issuableCount, 10),\n        },\n      }),\n  });\n}\n\nexport function initIssuableByEmail() {\n  const el = document.querySelector('.js-issuable-by-email');\n\n  if (!el) {\n    return null;\n  }\n\n  Vue.use(GlToast);\n\n  const {\n    initialEmail,\n    issuableType,\n    emailsHelpPagePath,\n    quickActionsHelpPath,\n    markdownHelpPath,\n    resetPath,\n  } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'IssuableByEmailRoot',\n    provide: {\n      initialEmail,\n      issuableType,\n      emailsHelpPagePath,\n      quickActionsHelpPath,\n      markdownHelpPath,\n      resetPath,\n    },\n    render: (createElement) => createElement(IssuableByEmail),\n  });\n}\n\nexport function initIssuableSidebar() {\n  const el = document.querySelector('.js-sidebar-options');\n\n  if (!el) {\n    return;\n  }\n\n  const sidebarOptions = getSidebarOptions(el);\n\n  new IssuableContext(sidebarOptions.currentUser); // eslint-disable-line no-new\n  Sidebar.initialize();\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[(_vm.loading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"inline\":true}}):(_vm.isSymlink)?_c('gl-icon',{attrs:{\"name\":\"symlink\",\"size\":_vm.size}}):(!_vm.folder)?_c('svg',{key:_vm.spriteHref,class:[_vm.iconSizeClass, _vm.cssClasses]},[_c('use',{attrs:{\"href\":_vm.spriteHref}})]):_c('gl-icon',{staticClass:\"folder-icon\",attrs:{\"name\":_vm.folderIconName,\"size\":_vm.size}})],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!./file_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file_icon.vue?vue&type=script&lang=js\"","<script>\nimport { getIconForFile } from '@gitlab/svgs/src/file_icon_map';\nimport { GlLoadingIcon, GlIcon } from '@gitlab/ui';\nimport { FILE_SYMLINK_MODE } from '../constants';\n\n/* This is a re-usable vue component for rendering a svg sprite\n    icon\n\n    Sample configuration:\n\n    <file-icon\n      name=\"retry\"\n      :size=\"32\"\n      css-classes=\"top\"\n    />\n\n  */\nexport default {\n  components: {\n    GlLoadingIcon,\n    GlIcon,\n  },\n  props: {\n    fileName: {\n      type: String,\n      required: true,\n    },\n    fileMode: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    folder: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    submodule: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    opened: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    size: {\n      type: Number,\n      required: false,\n      default: 16,\n    },\n    cssClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    isSymlink() {\n      return this.fileMode === FILE_SYMLINK_MODE;\n    },\n    spriteHref() {\n      const iconName = this.submodule ? 'folder-git' : getIconForFile(this.fileName) || 'file';\n\n      return `${gon.sprite_file_icons}#${iconName}`;\n    },\n    folderIconName() {\n      return this.opened ? 'folder-open' : 'folder';\n    },\n    iconSizeClass() {\n      return this.size ? `s${this.size}` : '';\n    },\n  },\n};\n</script>\n<template>\n  <span>\n    <gl-loading-icon v-if=\"loading\" size=\"sm\" :inline=\"true\" />\n    <gl-icon v-else-if=\"isSymlink\" name=\"symlink\" :size=\"size\" />\n    <svg v-else-if=\"!folder\" :key=\"spriteHref\" :class=\"[iconSizeClass, cssClasses]\">\n      <use :href=\"spriteHref\" />\n    </svg>\n    <gl-icon v-else :name=\"folderIconName\" :size=\"size\" class=\"folder-icon\" />\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./file_icon.vue?vue&type=template&id=baba2178\"\nimport script from \"./file_icon.vue?vue&type=script&lang=js\"\nexport * from \"./file_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","(function (root, factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define([], factory);\n  } else if (typeof module === \"object\" && module.exports) {\n    module.exports = factory();\n  } else {\n    root.Scrollparent = factory();\n  }\n}(this, function () {\n  var regex = /(auto|scroll)/;\n\n  var parents = function (node, ps) {\n    if (node.parentNode === null) { return ps; }\n\n    return parents(node.parentNode, ps.concat([node]));\n  };\n\n  var style = function (node, prop) {\n    return getComputedStyle(node, null).getPropertyValue(prop);\n  };\n\n  var overflow = function (node) {\n    return style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\");\n  };\n\n  var scroll = function (node) {\n   return regex.test(overflow(node));\n  };\n\n  var scrollParent = function (node) {\n    if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n      return ;\n    }\n\n    var ps = parents(node.parentNode, []);\n\n    for (var i = 0; i < ps.length; i += 1) {\n      if (scroll(ps[i])) {\n        return ps[i];\n      }\n    }\n\n    return document.scrollingElement || document.documentElement;\n  };\n\n  return scrollParent;\n}));\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-gap-5 gl-py-5\"},[(_vm.$apollo.queries.project.loading)?_c('gl-loading-icon',{staticClass:\"flex-fill gl-flex gl-items-center gl-justify-center\",attrs:{\"size\":\"sm\"}}):(_vm.loadingError)?_c('gl-alert',{attrs:{\"dismissible\":false,\"variant\":\"danger\",\"data-testid\":\"loading-error\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.s__('Vulnerability|Something went wrong while trying to get the source file.'))+\"\\n  \")]):[_c('div',{staticClass:\"gl-z-0 gl-flex gl-flex-col gl-overflow-auto gl-pl-2 gl-pr-2\",class:{ 'gl-w-full': !_vm.showCodeFlowFileViewer, 'gl-w-4/10': _vm.showCodeFlowFileViewer },attrs:{\"data-testid\":\"code-flow-steps-section-container\"}},[_c('code-flow-steps-section',{ref:\"codeFlowStepSection\",class:{ 'code-flow-content': !_vm.insideModal, 'code-flow-content-modal': _vm.insideModal },style:({ '--modal-content-height': `${_vm.modalContentHeight}px` }),attrs:{\"description\":_vm.description,\"description-html\":_vm.descriptionHtml,\"details\":_vm.details,\"raw-text-blobs\":_vm.rawTextBlobs},on:{\"onSelectedStep\":_vm.onSelectedStep}})],1),_vm._v(\" \"),(_vm.showCodeFlowFileViewer)?_c('div',{staticClass:\"flex-fill gl-flex gl-w-12/20 gl-flex-col gl-gap-5 gl-overflow-auto gl-pt-2\",class:{ 'code-flow-content': !_vm.insideModal, 'code-flow-content-modal': _vm.insideModal },style:({ '--modal-content-height': `${_vm.modalContentHeight}px` }),attrs:{\"id\":\"code-flows-container\",\"data-testid\":\"code-flows-container\"}},_vm._l((_vm.codeSourceFiles),function(fileName){return _c('code-flow-file-viewer',{key:fileName,attrs:{\"file-path\":fileName,\"branch-ref\":_vm.branchRef,\"hl-info\":_vm.highlightSourcesInfo[fileName],\"blob-info\":_vm.specificBlobInfo(fileName),\"selected-step-number\":_vm.selectedStepNumber}})}),1):_vm._e()]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\n  inlineItemMark,\n  inlineSectionMarker,\n  textMarkerIdPrefix,\n  textSpanMarkerIdPrefix,\n} from 'ee/vue_shared/components/code_flow/utils/constants';\n\n/**\n * Highlight.js plugin for wrapping lines in the correct classes and attributes.\n * Needed to highlight a large amount of lines\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {String} content - represent highlighted line of code\n * @param {number} lineNum - represent highlighted line number\n * @param {Object} markLineInfo - highlighting info for the current line\n */\nfunction markLinesWithDiv(content, lineNum, markLineInfo) {\n  let stepNumberSpan = '';\n  let stepNumberSpanNone = '';\n  let wrappedLine = content;\n\n  // Combines an array of step numbers into a comma-separated string\n  const stepNumbersArr = markLineInfo?.map((markLine) => markLine.stepNumber);\n  const stepNumbers = stepNumbersArr?.map(String).join(',') ?? '';\n\n  markLineInfo?.forEach((markLine) => {\n    stepNumberSpan +=\n      lineNum === markLine.startLine\n        ? `<span id=\"${textSpanMarkerIdPrefix}${markLine.stepNumber}\" class=\"${inlineItemMark}\">${markLine.stepNumber}</span>`\n        : '';\n    stepNumberSpanNone +=\n      lineNum !== markLine.startLine\n        ? `<span id=\"${textSpanMarkerIdPrefix}${markLine.stepNumber}\" class=\"${inlineItemMark} gl-opacity-0\">${markLine.stepNumber}</span>`\n        : '';\n  });\n\n  if (markLineInfo) {\n    const contentStartIndex = content.indexOf(content.trimStart());\n    wrappedLine = `${content.slice(\n      0,\n      contentStartIndex,\n    )}${stepNumberSpanNone}<span id=\"${textMarkerIdPrefix}${\n      stepNumbers\n    }-L${lineNum}\" class=\"${inlineSectionMarker}\">${stepNumberSpan}${content.slice(contentStartIndex)}</span>`;\n  }\n  return `<div class=\"line\">${wrappedLine}</div>`;\n}\n\nexport default (result, lineToMarkersInfo) => {\n  // eslint-disable-next-line no-param-reassign\n  result.value = result.value\n    .split(/\\r?\\n/)\n    .map((content, index) => markLinesWithDiv(content, index + 1, lineToMarkersInfo?.[index + 1]))\n    .join('\\n');\n};\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./code_flow_file_viewer.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!./code_flow_file_viewer.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlButton, GlSprintf } from '@gitlab/ui';\nimport { isEmpty } from 'lodash';\nimport VulnerabilityFileContentViewer from 'ee/vue_shared/vulnerabilities/components/vulnerability_file_content_viewer.vue';\nimport BlobFilepath from '~/blob/components/blob_header_filepath.vue';\nimport { __, s__ } from '~/locale';\nimport { highlightContent } from '~/highlight_js';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport {\n  updateCodeBlocks,\n  updateLinesToMarker,\n} from 'ee/vue_shared/components/code_flow/utils/utils';\nimport markMultipleLines from './plugins/mark_multiple_lines';\n\nexport default {\n  name: 'CodeFlowFileViewer',\n  components: {\n    BlobFilepath,\n    VulnerabilityFileContentViewer,\n    GlButton,\n    GlSprintf,\n    GlAlert,\n    WebIdeLink: () => import('ee_else_ce/vue_shared/components/web_ide_link.vue'),\n  },\n  props: {\n    hlInfo: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    blobInfo: {\n      type: Object,\n      required: true,\n      default: () => {},\n    },\n    filePath: {\n      type: String,\n      required: true,\n      default: undefined,\n    },\n    branchRef: {\n      type: String,\n      required: true,\n    },\n    selectedStepNumber: {\n      type: Number,\n      required: false,\n      default: undefined,\n    },\n  },\n  data() {\n    return {\n      loadingError: false,\n      codeBlocks: [],\n      linesToMarker: {},\n      expanded: true,\n      highlightedContent: '',\n      blobContent: '',\n    };\n  },\n  computed: {\n    userColorScheme() {\n      return gon.user_color_scheme;\n    },\n    totalLines() {\n      return this.content?.split('\\n').length;\n    },\n    labelToggleFile() {\n      return this.expanded ? __('Hide file contents') : __('Show file contents');\n    },\n    collapseIcon() {\n      return this.expanded ? 'chevron-down' : 'chevron-right';\n    },\n    isHighlighted() {\n      return Boolean(this.highlightedContent);\n    },\n    content() {\n      return this.highlightedContent || this.blobContent;\n    },\n  },\n  created() {\n    this.getContent();\n    this.mergeCodeBlocks(this.hlInfo);\n  },\n  methods: {\n    getContent() {\n      if (!this.blobInfo || isEmpty(this.blobInfo)) {\n        this.loadingError = true;\n        return;\n      }\n      const { rawTextBlob, language } = this.blobInfo;\n      const plugins = [(result) => markMultipleLines(result, this.linesToMarker)];\n      highlightContent(language, rawTextBlob, plugins)\n        .then((res) => {\n          // res is undefined when the file language is not recognized.\n          // we need to mark the step in the viewer even if the language is not recognized.\n          if (!res) {\n            const markResult = { value: rawTextBlob };\n            markMultipleLines(markResult, this.linesToMarker);\n            this.highlightedContent = markResult.value;\n          } else {\n            this.highlightedContent = res;\n          }\n        })\n        .catch((error) => {\n          Sentry.captureException(error);\n        });\n      this.blobContent = rawTextBlob;\n    },\n    mergeCodeBlocks(codeBlocks) {\n      const newCodeBlocks = updateCodeBlocks(codeBlocks);\n      this.codeBlocks = newCodeBlocks;\n      this.linesToMarker = updateLinesToMarker(newCodeBlocks);\n    },\n    handleToggleFile() {\n      this.expanded = !this.expanded;\n    },\n    handleExpandLines(index) {\n      if (index === 0) {\n        // expand until line 1\n        this.codeBlocks[index].blockStartLine = 1;\n      } else if (index === this.codeBlocks.length) {\n        // expand until total lines\n        this.codeBlocks[this.codeBlocks.length - 1].blockEndLine = this.totalLines;\n      } else {\n        // expand in-between lines\n        this.codeBlocks[index].blockStartLine = this.codeBlocks[index - 1].blockEndLine;\n      }\n      this.mergeCodeBlocks(this.codeBlocks);\n    },\n    getExpandedIcon(index) {\n      return index !== 0 ? 'expand' : 'expand-up';\n    },\n    isEndOfCodeBlock(index) {\n      return (\n        index === this.codeBlocks.length - 1 &&\n        this.codeBlocks[index].blockEndLine !== this.totalLines\n      );\n    },\n  },\n  i18n: {\n    vulnerabilityNotFound: s__('Vulnerability|%{file} was not found in ref %{ref}'),\n    expandAllLines: __('Expand all lines'),\n  },\n};\n</script>\n\n<template>\n  <div class=\"file-holder\">\n    <gl-alert v-if=\"loadingError\" :dismissible=\"false\" variant=\"warning\">\n      <gl-sprintf :message=\"$options.i18n.vulnerabilityNotFound\">\n        <template #file>\n          <code>{{ filePath }}</code>\n        </template>\n        <template #ref>\n          <code>{{ branchRef }}</code>\n        </template>\n      </gl-sprintf>\n    </gl-alert>\n\n    <template v-else>\n      <div class=\"file-title-flex-parent\">\n        <div class=\"gl-flex\">\n          <blob-filepath\n            :blob=\"blobInfo\"\n            :show-path=\"true\"\n            :show-as-link=\"true\"\n            :show-blob-size=\"false\"\n          >\n            <template #filepath-prepend>\n              <gl-button\n                class=\"gl-mr-2\"\n                category=\"tertiary\"\n                size=\"small\"\n                :icon=\"collapseIcon\"\n                :aria-label=\"labelToggleFile\"\n                data-testid=\"collapse-expand-file\"\n                @click=\"handleToggleFile\"\n              />\n            </template>\n          </blob-filepath>\n        </div>\n\n        <div class=\"file-actions gl-flex gl-flex-wrap\">\n          <web-ide-link\n            button-variant=\"default\"\n            class=\"gl-mr-3\"\n            :edit-url=\"blobInfo.editBlobPath\"\n            :web-ide-url=\"blobInfo.ideEditPath\"\n            show-edit-button\n            is-blob\n            disable-fork-modal\n            v-on=\"$listeners\"\n          />\n        </div>\n      </div>\n\n      <div\n        v-if=\"expanded\"\n        class=\"file-content code js-syntax-highlight blob-content blob-viewer gl-flex gl-w-full gl-flex-col gl-overflow-auto\"\n        :class=\"userColorScheme\"\n        data-type=\"simple\"\n        data-testid=\"file-content\"\n      >\n        <div v-for=\"(highlightSectionInfo, index) in codeBlocks\" :key=\"index\">\n          <div\n            v-if=\"highlightSectionInfo.blockStartLine !== 1\"\n            class=\"expansion-line gl-bg-gray-50 gl-p-1\"\n          >\n            <gl-button\n              data-testid=\"expand-top-lines\"\n              :title=\"$options.i18n.expandAllLines\"\n              :aria-label=\"$options.i18n.expandAllLines\"\n              :icon=\"getExpandedIcon(index)\"\n              category=\"tertiary\"\n              size=\"small\"\n              class=\"mark-multiple-line-expand-button gl-border-0\"\n              @click=\"handleExpandLines(index)\"\n            />\n          </div>\n\n          <vulnerability-file-content-viewer\n            class=\"gl-border-none\"\n            :is-highlighted=\"isHighlighted\"\n            :content=\"content\"\n            :start-line=\"highlightSectionInfo.blockStartLine\"\n            :end-line=\"highlightSectionInfo.blockEndLine\"\n            :highlight-info=\"highlightSectionInfo.highlightInfo\"\n            :selected-step-number=\"selectedStepNumber\"\n          />\n\n          <div v-if=\"isEndOfCodeBlock(index)\" class=\"expansion-line gl-bg-gray-50 gl-p-1\">\n            <gl-button\n              data-testid=\"expand-bottom-lines\"\n              :title=\"$options.i18n.expandAllLines\"\n              :aria-label=\"$options.i18n.expandAllLines\"\n              icon=\"expand-down\"\n              category=\"tertiary\"\n              size=\"small\"\n              class=\"mark-multiple-line-expand-button gl-border-0\"\n              @click=\"handleExpandLines(codeBlocks.length)\"\n            />\n          </div>\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./code_flow_file_viewer.vue?vue&type=template&id=5e91f75a\"\nimport script from \"./code_flow_file_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./code_flow_file_viewer.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:\"file-holder\"},[(_vm.loadingError)?_c('gl-alert',{attrs:{\"dismissible\":false,\"variant\":\"warning\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.vulnerabilityNotFound},scopedSlots:_vm._u([{key:\"file\",fn:function(){return [_c('code',[_vm._v(_vm._s(_vm.filePath))])]},proxy:true},{key:\"ref\",fn:function(){return [_c('code',[_vm._v(_vm._s(_vm.branchRef))])]},proxy:true}],null,false,2038684176)})],1):[_c('div',{staticClass:\"file-title-flex-parent\"},[_c('div',{staticClass:\"gl-flex\"},[_c('blob-filepath',{attrs:{\"blob\":_vm.blobInfo,\"show-path\":true,\"show-as-link\":true,\"show-blob-size\":false},scopedSlots:_vm._u([{key:\"filepath-prepend\",fn:function(){return [_c('gl-button',{staticClass:\"gl-mr-2\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"icon\":_vm.collapseIcon,\"aria-label\":_vm.labelToggleFile,\"data-testid\":\"collapse-expand-file\"},on:{\"click\":_vm.handleToggleFile}})]},proxy:true}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"file-actions gl-flex gl-flex-wrap\"},[_c('web-ide-link',_vm._g({staticClass:\"gl-mr-3\",attrs:{\"button-variant\":\"default\",\"edit-url\":_vm.blobInfo.editBlobPath,\"web-ide-url\":_vm.blobInfo.ideEditPath,\"show-edit-button\":\"\",\"is-blob\":\"\",\"disable-fork-modal\":\"\"}},_vm.$listeners))],1)]),_vm._v(\" \"),(_vm.expanded)?_c('div',{staticClass:\"file-content code js-syntax-highlight blob-content blob-viewer gl-flex gl-w-full gl-flex-col gl-overflow-auto\",class:_vm.userColorScheme,attrs:{\"data-type\":\"simple\",\"data-testid\":\"file-content\"}},_vm._l((_vm.codeBlocks),function(highlightSectionInfo,index){return _c('div',{key:index},[(highlightSectionInfo.blockStartLine !== 1)?_c('div',{staticClass:\"expansion-line gl-bg-gray-50 gl-p-1\"},[_c('gl-button',{staticClass:\"mark-multiple-line-expand-button gl-border-0\",attrs:{\"data-testid\":\"expand-top-lines\",\"title\":_vm.$options.i18n.expandAllLines,\"aria-label\":_vm.$options.i18n.expandAllLines,\"icon\":_vm.getExpandedIcon(index),\"category\":\"tertiary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleExpandLines(index)}}})],1):_vm._e(),_vm._v(\" \"),_c('vulnerability-file-content-viewer',{staticClass:\"gl-border-none\",attrs:{\"is-highlighted\":_vm.isHighlighted,\"content\":_vm.content,\"start-line\":highlightSectionInfo.blockStartLine,\"end-line\":highlightSectionInfo.blockEndLine,\"highlight-info\":highlightSectionInfo.highlightInfo,\"selected-step-number\":_vm.selectedStepNumber}}),_vm._v(\" \"),(_vm.isEndOfCodeBlock(index))?_c('div',{staticClass:\"expansion-line gl-bg-gray-50 gl-p-1\"},[_c('gl-button',{staticClass:\"mark-multiple-line-expand-button gl-border-0\",attrs:{\"data-testid\":\"expand-bottom-lines\",\"title\":_vm.$options.i18n.expandAllLines,\"aria-label\":_vm.$options.i18n.expandAllLines,\"icon\":\"expand-down\",\"category\":\"tertiary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleExpandLines(_vm.codeBlocks.length)}}})],1):_vm._e()],1)}),0):_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!./code_flow_steps_section.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!./code_flow_steps_section.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlBadge,\n  GlButton,\n  GlButtonGroup,\n  GlCollapse,\n  GlLink,\n  GlPopover,\n  GlTruncate,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { flattenDeep } from 'lodash';\nimport { __, s__, sprintf } from '~/locale';\n\nexport default {\n  name: 'CodeFlowStepsSection',\n  components: {\n    GlPopover,\n    GlButton,\n    GlButtonGroup,\n    GlCollapse,\n    GlBadge,\n    GlLink,\n    GlTruncate,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    description: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    descriptionHtml: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    details: {\n      type: Object,\n      required: true,\n    },\n    rawTextBlobs: {\n      type: Object,\n      required: false,\n      default: () => {},\n    },\n  },\n  data() {\n    return {\n      stepsExpanded: [],\n      selectedStepNumber: 1,\n      selectedVulnerability: this.details?.items[0][0],\n    };\n  },\n  computed: {\n    vulnerabilityFlowDetails() {\n      const groupedItems = this.details.items[0].reduce((acc, item, index) => {\n        const { fileName } = item.fileLocation;\n        if (!acc[fileName]) {\n          acc[fileName] = [];\n        }\n        const fileDescription = this.getDescription(\n          this.rawTextBlobs[item.fileLocation.fileName],\n          item.fileLocation.lineStart - 1,\n        );\n\n        acc[fileName].push({\n          ...item,\n          nodeType: item.nodeType.toLowerCase(),\n          stepNumber: index + 1,\n          rawTextBlob: this.rawTextBlobs[item.fileLocation.fileName],\n          fileDescription,\n        });\n        return acc;\n      }, {});\n      const vulnerabilityFlow = [{ items: Object.values(groupedItems) }];\n      return vulnerabilityFlow[0].items;\n    },\n    numOfSteps() {\n      return this.details.items[0].length;\n    },\n    numOfFiles() {\n      return this.vulnerabilityFlowDetails.length;\n    },\n    stepsHeader() {\n      return sprintf(__('%{numOfSteps} steps across %{numOfFiles} files'), {\n        numOfSteps: this.numOfSteps,\n        numOfFiles: this.numOfFiles,\n      });\n    },\n  },\n  mounted() {\n    this.stepsExpanded = Array(this.vulnerabilityFlowDetails.length).fill(true);\n  },\n  created() {\n    this.$emit('onSelectedStep', this.selectedStepNumber);\n  },\n  methods: {\n    openFileSteps(index) {\n      const copyStepsExpanded = [...this.stepsExpanded];\n      copyStepsExpanded[index] = !this.stepsExpanded[index];\n      this.stepsExpanded = copyStepsExpanded;\n    },\n    getPathIcon(index) {\n      return this.stepsExpanded[index] ? 'chevron-down' : 'chevron-right';\n    },\n    fileName(fileName) {\n      return fileName.split('/').pop();\n    },\n    filePath(fileName) {\n      return fileName.slice(0, fileName.lastIndexOf('/') + 1);\n    },\n    selectStep(vulnerabilityItem) {\n      this.selectedStepNumber = vulnerabilityItem.stepNumber;\n      this.selectedVulnerability = vulnerabilityItem;\n      this.$emit('onSelectedStep', this.selectedStepNumber);\n    },\n    getNextIndex(isNext) {\n      return isNext ? this.selectedStepNumber + 1 : this.selectedStepNumber - 1;\n    },\n    isOutOfRange(isNext) {\n      const calculation = this.getNextIndex(isNext);\n      return calculation > this.numOfSteps || calculation <= 0;\n    },\n    changeSelectedVulnerability(isNextVulnerability) {\n      if (this.isOutOfRange(isNextVulnerability)) return;\n      this.selectedVulnerability = flattenDeep(this.vulnerabilityFlowDetails).find(\n        (item) => item.stepNumber === this.getNextIndex(isNextVulnerability),\n      );\n      this.selectedStepNumber = this.selectedVulnerability.stepNumber;\n      this.$emit('onSelectedStep', this.selectedStepNumber);\n    },\n    showNodeTypePopover(nodeType) {\n      return nodeType === 'source'\n        ? this.$options.i18n.sourceNodeTypePopover\n        : this.$options.i18n.sinkNodeTypePopover;\n    },\n    toggleAriaLabel(index) {\n      return this.stepsExpanded[index] ? __('Collapse') : __('Expand');\n    },\n    getDescription(rawTextBlob, startLine) {\n      return rawTextBlob?.split(/\\r?\\n/)[startLine];\n    },\n    isVisibleCollapse(index) {\n      return Boolean(this.stepsExpanded[index]);\n    },\n  },\n  i18n: {\n    codeFlowInfoButton: s__('Vulnerability|What is code flow?'),\n    codeFlowInfoAnswer: s__(\n      \"Vulnerability|Code flow helps trace and flag risky data ('tainted data') as it moves through your software. Vulnerabilities are detected by pinpointing how untrusted inputs, like user data or network traffic, are utilized. This technique finds and fixes data handling flaws, securing software from injection and cross-site scripting attacks.\",\n    ),\n    steps: s__('Vulnerability|Steps'),\n    sourceNodeTypePopover: s__(\n      \"Vulnerability|A 'source' refers to untrusted inputs like user data or external data sources. These inputs can introduce security risks into the software system and are monitored to prevent vulnerabilities.\",\n    ),\n    sinkNodeTypePopover: s__(\n      \"Vulnerability|A 'sink' is where untrusted data is used in a potentially risky way, such as in SQL queries or HTML output. Sink points are monitored to prevent security vulnerabilities in the software.\",\n    ),\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"gl-flex gl-justify-between gl-pt-2\">\n      <div>\n        <div class=\"item-title gl-text-lg\">{{ $options.i18n.steps }}</div>\n        <div class=\"gl-pt-2\" data-testid=\"steps-header\">{{ stepsHeader }}</div>\n      </div>\n      <gl-button-group>\n        <gl-button\n          icon=\"chevron-up\"\n          :aria-label=\"__(`Previous step`)\"\n          :disabled=\"isOutOfRange(false)\"\n          @click=\"changeSelectedVulnerability(false)\"\n        />\n        <gl-button\n          icon=\"chevron-down\"\n          :aria-label=\"__(`Next step`)\"\n          :disabled=\"isOutOfRange(true)\"\n          @click=\"changeSelectedVulnerability(true)\"\n        />\n      </gl-button-group>\n    </div>\n    <div class=\"gl-ml-4 gl-pt-3\">\n      <div\n        v-for=\"(vulnerabilityFlow, index) in vulnerabilityFlowDetails\"\n        :key=\"index\"\n        class=\"-gl-ml-4\"\n        :data-testid=\"`file-steps-${index}`\"\n      >\n        <div\n          v-gl-tooltip\n          :title=\"vulnerabilityFlow[0].fileLocation.fileName\"\n          class=\"gl-inline-flex gl-max-w-full gl-items-center\"\n          :data-testid=\"`file-name-${index}`\"\n        >\n          <gl-button\n            :icon=\"getPathIcon(index)\"\n            category=\"tertiary\"\n            :aria-label=\"toggleAriaLabel(index)\"\n            @click=\"openFileSteps(index)\"\n          />\n          <gl-truncate\n            class=\"gl-min-w-0 gl-flex-shrink\"\n            :text=\"filePath(vulnerabilityFlow[0].fileLocation.fileName)\"\n            position=\"end\"\n          /><gl-truncate\n            class=\"gl-flex-shrink-0 gl-font-bold\"\n            :text=\"fileName(vulnerabilityFlow[0].fileLocation.fileName)\"\n            position=\"start\"\n          />\n        </div>\n        <gl-collapse class=\"gl-mt-2 gl-pl-6\" :visible=\"isVisibleCollapse(index)\">\n          <gl-link\n            v-for=\"(vulnerabilityItem, i) in vulnerabilityFlow\"\n            :key=\"i\"\n            class=\"align-content-center gl-flex gl-justify-between !gl-rounded-base gl-pb-2 gl-pl-2 gl-pr-2 gl-pt-2 !gl-text-inherit !gl-no-underline\"\n            :class=\"{\n              'gl-rounded-base gl-bg-blue-50': selectedStepNumber === vulnerabilityItem.stepNumber,\n            }\"\n            :data-testid=\"`step-row-${i}`\"\n            @click=\"selectStep(vulnerabilityItem)\"\n          >\n            <gl-badge\n              class=\"gl-mr-3 gl-h-6 gl-w-6 gl-rounded-base gl-pl-4 gl-pr-4\"\n              :class=\"{\n                '!gl-bg-blue-500 !gl-text-white':\n                  selectedStepNumber === vulnerabilityItem.stepNumber,\n              }\"\n              size=\"lg\"\n              variant=\"muted\"\n            >\n              <strong v-if=\"selectedStepNumber === vulnerabilityItem.stepNumber\">{{\n                vulnerabilityItem.stepNumber\n              }}</strong>\n              <span v-else>{{ vulnerabilityItem.stepNumber }}</span>\n            </gl-badge>\n            <span\n              class=\"align-content-center gl-mr-auto gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap\"\n            >\n              <gl-badge\n                v-if=\"['source', 'sink'].includes(vulnerabilityItem.nodeType)\"\n                :id=\"vulnerabilityItem.nodeType\"\n                :data-testid=\"vulnerabilityItem.nodeType\"\n                class=\"gl-mr-3 gl-pl-4 gl-pr-4\"\n                size=\"md\"\n                variant=\"muted\"\n              >\n                {{ vulnerabilityItem.nodeType }}\n              </gl-badge>\n              <gl-popover\n                triggers=\"hover focus\"\n                placement=\"top\"\n                :target=\"vulnerabilityItem.nodeType\"\n                :content=\"showNodeTypePopover(vulnerabilityItem.nodeType)\"\n                :show=\"false\"\n              />\n\n              {{ vulnerabilityItem.fileDescription }}\n            </span>\n            <span class=\"align-content-center gl-pr-3 gl-text-subtle\">{{\n              vulnerabilityItem.fileLocation.lineStart\n            }}</span>\n          </gl-link>\n        </gl-collapse>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./code_flow_steps_section.vue?vue&type=template&id=e7245044\"\nimport script from \"./code_flow_steps_section.vue?vue&type=script&lang=js\"\nexport * from \"./code_flow_steps_section.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:\"gl-flex gl-justify-between gl-pt-2\"},[_c('div',[_c('div',{staticClass:\"item-title gl-text-lg\"},[_vm._v(_vm._s(_vm.$options.i18n.steps))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-pt-2\",attrs:{\"data-testid\":\"steps-header\"}},[_vm._v(_vm._s(_vm.stepsHeader))])]),_vm._v(\" \"),_c('gl-button-group',[_c('gl-button',{attrs:{\"icon\":\"chevron-up\",\"aria-label\":_vm.__(`Previous step`),\"disabled\":_vm.isOutOfRange(false)},on:{\"click\":function($event){return _vm.changeSelectedVulnerability(false)}}}),_vm._v(\" \"),_c('gl-button',{attrs:{\"icon\":\"chevron-down\",\"aria-label\":_vm.__(`Next step`),\"disabled\":_vm.isOutOfRange(true)},on:{\"click\":function($event){return _vm.changeSelectedVulnerability(true)}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-4 gl-pt-3\"},_vm._l((_vm.vulnerabilityFlowDetails),function(vulnerabilityFlow,index){return _c('div',{key:index,staticClass:\"-gl-ml-4\",attrs:{\"data-testid\":`file-steps-${index}`}},[_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-inline-flex gl-max-w-full gl-items-center\",attrs:{\"title\":vulnerabilityFlow[0].fileLocation.fileName,\"data-testid\":`file-name-${index}`}},[_c('gl-button',{attrs:{\"icon\":_vm.getPathIcon(index),\"category\":\"tertiary\",\"aria-label\":_vm.toggleAriaLabel(index)},on:{\"click\":function($event){return _vm.openFileSteps(index)}}}),_vm._v(\" \"),_c('gl-truncate',{staticClass:\"gl-min-w-0 gl-flex-shrink\",attrs:{\"text\":_vm.filePath(vulnerabilityFlow[0].fileLocation.fileName),\"position\":\"end\"}}),_c('gl-truncate',{staticClass:\"gl-flex-shrink-0 gl-font-bold\",attrs:{\"text\":_vm.fileName(vulnerabilityFlow[0].fileLocation.fileName),\"position\":\"start\"}})],1),_vm._v(\" \"),_c('gl-collapse',{staticClass:\"gl-mt-2 gl-pl-6\",attrs:{\"visible\":_vm.isVisibleCollapse(index)}},_vm._l((vulnerabilityFlow),function(vulnerabilityItem,i){return _c('gl-link',{key:i,staticClass:\"align-content-center gl-flex gl-justify-between !gl-rounded-base gl-pb-2 gl-pl-2 gl-pr-2 gl-pt-2 !gl-text-inherit !gl-no-underline\",class:{\n            'gl-rounded-base gl-bg-blue-50': _vm.selectedStepNumber === vulnerabilityItem.stepNumber,\n          },attrs:{\"data-testid\":`step-row-${i}`},on:{\"click\":function($event){return _vm.selectStep(vulnerabilityItem)}}},[_c('gl-badge',{staticClass:\"gl-mr-3 gl-h-6 gl-w-6 gl-rounded-base gl-pl-4 gl-pr-4\",class:{\n              '!gl-bg-blue-500 !gl-text-white':\n                _vm.selectedStepNumber === vulnerabilityItem.stepNumber,\n            },attrs:{\"size\":\"lg\",\"variant\":\"muted\"}},[(_vm.selectedStepNumber === vulnerabilityItem.stepNumber)?_c('strong',[_vm._v(_vm._s(vulnerabilityItem.stepNumber))]):_c('span',[_vm._v(_vm._s(vulnerabilityItem.stepNumber))])]),_vm._v(\" \"),_c('span',{staticClass:\"align-content-center gl-mr-auto gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap\"},[(['source', 'sink'].includes(vulnerabilityItem.nodeType))?_c('gl-badge',{staticClass:\"gl-mr-3 gl-pl-4 gl-pr-4\",attrs:{\"id\":vulnerabilityItem.nodeType,\"data-testid\":vulnerabilityItem.nodeType,\"size\":\"md\",\"variant\":\"muted\"}},[_vm._v(\"\\n              \"+_vm._s(vulnerabilityItem.nodeType)+\"\\n            \")]):_vm._e(),_vm._v(\" \"),_c('gl-popover',{attrs:{\"triggers\":\"hover focus\",\"placement\":\"top\",\"target\":vulnerabilityItem.nodeType,\"content\":_vm.showNodeTypePopover(vulnerabilityItem.nodeType),\"show\":false}}),_vm._v(\"\\n\\n            \"+_vm._s(vulnerabilityItem.fileDescription)+\"\\n          \")],1),_vm._v(\" \"),_c('span',{staticClass:\"align-content-center gl-pr-3 gl-text-subtle\"},[_vm._v(_vm._s(vulnerabilityItem.fileLocation.lineStart))])],1)}),1)],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!./vulnerability_code_flow.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!./vulnerability_code_flow.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlLoadingIcon } from '@gitlab/ui';\nimport { uniq, map } from 'lodash';\nimport blobInfoQuery from 'shared_queries/repository/blob_info.query.graphql';\nimport CodeFlowFileViewer from 'ee/vue_shared/components/code_flow/code_flow_file_viewer.vue';\nimport CodeFlowStepsSection from 'ee/vue_shared/components/code_flow/code_flow_steps_section.vue';\nimport {\n  createHighlightSourcesInfo,\n  normalizeCodeFlowsInfo,\n} from 'ee/vue_shared/components/code_flow/utils/utils';\n\nexport default {\n  name: 'VulnerabilityCodeFlow',\n  components: {\n    GlAlert,\n    GlLoadingIcon,\n    CodeFlowFileViewer,\n    CodeFlowStepsSection,\n  },\n  props: {\n    branchRef: {\n      type: String,\n      required: true,\n    },\n    details: {\n      type: Object,\n      required: true,\n    },\n    projectFullPath: {\n      type: String,\n      required: true,\n      default: '',\n    },\n    description: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    descriptionHtml: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    insideModal: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showCodeFlowFileViewer: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  data() {\n    return {\n      loadingError: false,\n      blobInfo: [],\n      project: null,\n      rawTextBlobs: {},\n      highlightSourcesInfo: {},\n      modalContentHeight: 0,\n      selectedStepNumber: undefined,\n    };\n  },\n  computed: {\n    fileNames() {\n      const fileNames = map(this.details?.items[0], 'fileLocation.fileName');\n      return uniq(fileNames);\n    },\n    codeSourceFiles() {\n      return Object.keys(this.highlightSourcesInfo);\n    },\n  },\n  mounted() {\n    if (this.insideModal) {\n      this.updateModalContentHeight();\n    }\n  },\n  apollo: {\n    project: {\n      query: blobInfoQuery,\n      variables() {\n        return {\n          projectPath: this.projectFullPath,\n          filePath: this.fileNames,\n          ref: this.branchRef,\n          refType: null,\n          shouldFetchRawText: true,\n        };\n      },\n      update({ project }) {\n        const allBlobInfo = project?.repository?.blobs?.nodes || [];\n        allBlobInfo.forEach((blobInfo) => {\n          const { rawTextBlob, path } = blobInfo;\n\n          this.rawTextBlobs = {\n            ...this.rawTextBlobs,\n            [path]: rawTextBlob,\n          };\n\n          this.blobInfo = {\n            ...this.blobInfo,\n            [path]: { data: blobInfo },\n          };\n        });\n        const normalizedCodeFlows = normalizeCodeFlowsInfo(this.details);\n        this.highlightSourcesInfo = createHighlightSourcesInfo(\n          normalizedCodeFlows,\n          this.rawTextBlobs,\n        );\n      },\n      error() {\n        this.loadingError = true;\n      },\n    },\n  },\n  methods: {\n    onSelectedStep(value) {\n      this.selectedStepNumber = value;\n    },\n    specificBlobInfo(fileName) {\n      return this.blobInfo[fileName]?.data || {};\n    },\n    updateModalContentHeight() {\n      this.$nextTick(() => {\n        this.modalContentHeight =\n          document\n            .querySelector('#security-finding-modal .finding-modal-details')\n            ?.getBoundingClientRect().height || 0;\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-gap-5 gl-py-5\">\n    <gl-loading-icon\n      v-if=\"$apollo.queries.project.loading\"\n      size=\"sm\"\n      class=\"flex-fill gl-flex gl-items-center gl-justify-center\"\n    />\n\n    <gl-alert\n      v-else-if=\"loadingError\"\n      :dismissible=\"false\"\n      variant=\"danger\"\n      data-testid=\"loading-error\"\n    >\n      {{ s__('Vulnerability|Something went wrong while trying to get the source file.') }}\n    </gl-alert>\n\n    <template v-else>\n      <div\n        data-testid=\"code-flow-steps-section-container\"\n        class=\"gl-z-0 gl-flex gl-flex-col gl-overflow-auto gl-pl-2 gl-pr-2\"\n        :class=\"{ 'gl-w-full': !showCodeFlowFileViewer, 'gl-w-4/10': showCodeFlowFileViewer }\"\n      >\n        <code-flow-steps-section\n          ref=\"codeFlowStepSection\"\n          :class=\"{ 'code-flow-content': !insideModal, 'code-flow-content-modal': insideModal }\"\n          :style=\"{ '--modal-content-height': `${modalContentHeight}px` }\"\n          :description=\"description\"\n          :description-html=\"descriptionHtml\"\n          :details=\"details\"\n          :raw-text-blobs=\"rawTextBlobs\"\n          @onSelectedStep=\"onSelectedStep\"\n        />\n      </div>\n\n      <div\n        v-if=\"showCodeFlowFileViewer\"\n        id=\"code-flows-container\"\n        data-testid=\"code-flows-container\"\n        class=\"flex-fill gl-flex gl-w-12/20 gl-flex-col gl-gap-5 gl-overflow-auto gl-pt-2\"\n        :class=\"{ 'code-flow-content': !insideModal, 'code-flow-content-modal': insideModal }\"\n        :style=\"{ '--modal-content-height': `${modalContentHeight}px` }\"\n      >\n        <code-flow-file-viewer\n          v-for=\"fileName in codeSourceFiles\"\n          :key=\"fileName\"\n          :file-path=\"fileName\"\n          :branch-ref=\"branchRef\"\n          :hl-info=\"highlightSourcesInfo[fileName]\"\n          :blob-info=\"specificBlobInfo(fileName)\"\n          :selected-step-number=\"selectedStepNumber\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_code_flow.vue?vue&type=template&id=a55887f4\"\nimport script from \"./vulnerability_code_flow.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_code_flow.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","exports = module.exports = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.file-addition,\\n.file-addition-solid {\\n  color: #1aaa55;\\n}\\n.file-modified,\\n.file-modified-solid {\\n  color: #fc9403;\\n}\\n.file-deletion,\\n.file-deletion-solid {\\n  color: #db3b21;\\n}\\n\", \"\"]);\n\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./findings_drawer_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./findings_drawer_item.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  props: {\n    description: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    value: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n};\n</script>\n<template>\n  <li class=\"gl-mb-4\">\n    <p class=\"gl-leading-20\">\n      <span data-testid=\"findings-drawer-item-description\" class=\"gl-mb-1 gl-block gl-font-bold\">{{\n        description\n      }}</span>\n      <slot name=\"value\">\n        <span data-testid=\"findings-drawer-item-value-prop\">{{ value }}</span>\n      </slot>\n    </p>\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./findings_drawer_item.vue?vue&type=template&id=6c8b4026\"\nimport script from \"./findings_drawer_item.vue?vue&type=script&lang=js\"\nexport * from \"./findings_drawer_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"gl-mb-4\"},[_c('p',{staticClass:\"gl-leading-20\"},[_c('span',{staticClass:\"gl-mb-1 gl-block gl-font-bold\",attrs:{\"data-testid\":\"findings-drawer-item-description\"}},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),_vm._t(\"value\",function(){return [_c('span',{attrs:{\"data-testid\":\"findings-drawer-item-value-prop\"}},[_vm._v(_vm._s(_vm.value))])]})],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!./findings_drawer_details.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!./findings_drawer_details.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlButton, GlLink } from '@gitlab/ui';\nimport { VULNERABILITY_DETAIL_CODE_FLOWS } from 'ee/security_dashboard/constants';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { __, s__ } from '~/locale';\nimport { SAST_FINDING_DISMISSED } from '~/diffs/constants';\nimport DrawerItem from './findings_drawer_item.vue';\n\nexport default {\n  name: 'FindingsDrawerDetails',\n  DrawerItem,\n  components: { DrawerItem, GlBadge, GlLink, GlButton },\n  mixins: [glFeatureFlagMixin()],\n  props: {\n    drawer: {\n      type: Object,\n      required: true,\n    },\n    project: {\n      type: Object,\n      required: false,\n      default: () => {},\n    },\n    insideTab: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    findingsStatus() {\n      return this.drawer.state === SAST_FINDING_DISMISSED ? 'muted' : 'warning';\n    },\n    isCodeQuality() {\n      return this.drawer.scale === this.$options.codeQuality;\n    },\n    showCodeFlowTabs() {\n      const codeFlowData = this.drawer.details?.find(\n        (detail) => detail.type === VULNERABILITY_DETAIL_CODE_FLOWS,\n      );\n      return this.glFeatures.mrVulnerabilityCodeFlow && codeFlowData?.items?.length > 0;\n    },\n  },\n  methods: {\n    concatIdentifierName(name, index) {\n      return name + (index !== this.drawer.identifiers.length - 1 ? ', ' : '');\n    },\n  },\n  i18n: {\n    name: __('Name'),\n    status: __('Status'),\n    description: __('Description'),\n    project: __('Project'),\n    file: __('File'),\n    identifiers: __('Identifiers'),\n    tool: __('Tool'),\n    codeQuality: s__('FindingsDrawer|Code Quality'),\n    sast: __('SAST'),\n    engine: __('Engine'),\n    codeFlowButton: s__('FindingsDrawer|View code flow'),\n  },\n};\n</script>\n\n<template>\n  <ul\n    class=\"gl-mb-0 gl-list-none !gl-pb-0 gl-border-b-initial\"\n    :class=\"{ 'gl-pl-0': insideTab }\"\n    data-testid=\"drawer-container\"\n  >\n    <drawer-item\n      v-if=\"drawer.title\"\n      :description=\"$options.i18n.name\"\n      :value=\"drawer.title\"\n      data-testid=\"findings-drawer-title\"\n    />\n\n    <drawer-item v-if=\"drawer.state\" :description=\"$options.i18n.status\">\n      <template #value>\n        <gl-badge :variant=\"findingsStatus\" class=\"text-capitalize\">{{ drawer.state }}</gl-badge>\n      </template>\n    </drawer-item>\n\n    <drawer-item\n      v-if=\"drawer.description\"\n      :description=\"$options.i18n.description\"\n      :value=\"drawer.description\"\n    />\n\n    <drawer-item\n      v-if=\"project && drawer.scale !== $options.codeQuality\"\n      :description=\"$options.i18n.project\"\n    >\n      <template #value>\n        <gl-link :href=\"`/${project.fullPath}`\">{{ project.nameWithNamespace }}</gl-link>\n      </template>\n    </drawer-item>\n\n    <drawer-item v-if=\"drawer.location || drawer.webUrl\" :description=\"$options.i18n.file\">\n      <template #value>\n        <span v-if=\"drawer.webUrl && drawer.filePath && drawer.line\">\n          <gl-link :href=\"drawer.webUrl\">{{ drawer.filePath }}:{{ drawer.line }}</gl-link>\n        </span>\n        <span v-else-if=\"drawer.location\">\n          {{ drawer.location.file }}:{{ drawer.location.startLine }}\n        </span>\n      </template>\n    </drawer-item>\n\n    <drawer-item v-if=\"showCodeFlowTabs\" data-testid=\"code-flow-button\">\n      <template #value>\n        <gl-button\n          category=\"primary\"\n          variant=\"default\"\n          data-testid=\"show-code-flow\"\n          @click=\"$emit('redirectToCodeFlowTab')\"\n        >\n          {{ $options.i18n.codeFlowButton }}\n        </gl-button>\n      </template>\n    </drawer-item>\n\n    <drawer-item\n      v-if=\"drawer.identifiers && drawer.identifiers.length\"\n      :description=\"$options.i18n.identifiers\"\n    >\n      <template #value>\n        <span v-for=\"(identifier, index) in drawer.identifiers\" :key=\"identifier.externalId\">\n          <gl-link v-if=\"identifier.url\" :href=\"identifier.url\">\n            {{ concatIdentifierName(identifier.name, index) }}\n          </gl-link>\n          <span v-else>\n            {{ concatIdentifierName(identifier.name, index) }}\n          </span>\n        </span>\n      </template>\n    </drawer-item>\n\n    <drawer-item\n      v-if=\"drawer.scale\"\n      :description=\"$options.i18n.tool\"\n      :value=\"isCodeQuality ? $options.i18n.codeQuality : $options.i18n.sast\"\n    />\n\n    <drawer-item\n      v-if=\"drawer.engineName\"\n      :description=\"$options.i18n.engine\"\n      :value=\"drawer.engineName\"\n    />\n  </ul>\n</template>\n","import { render, staticRenderFns } from \"./findings_drawer_details.vue?vue&type=template&id=40c86fe4\"\nimport script from \"./findings_drawer_details.vue?vue&type=script&lang=js\"\nexport * from \"./findings_drawer_details.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"gl-mb-0 gl-list-none !gl-pb-0 gl-border-b-initial\",class:{ 'gl-pl-0': _vm.insideTab },attrs:{\"data-testid\":\"drawer-container\"}},[(_vm.drawer.title)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.name,\"value\":_vm.drawer.title,\"data-testid\":\"findings-drawer-title\"}}):_vm._e(),_vm._v(\" \"),(_vm.drawer.state)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.status},scopedSlots:_vm._u([{key:\"value\",fn:function(){return [_c('gl-badge',{staticClass:\"text-capitalize\",attrs:{\"variant\":_vm.findingsStatus}},[_vm._v(_vm._s(_vm.drawer.state))])]},proxy:true}],null,false,3206475804)}):_vm._e(),_vm._v(\" \"),(_vm.drawer.description)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.description,\"value\":_vm.drawer.description}}):_vm._e(),_vm._v(\" \"),(_vm.project && _vm.drawer.scale !== _vm.$options.codeQuality)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.project},scopedSlots:_vm._u([{key:\"value\",fn:function(){return [_c('gl-link',{attrs:{\"href\":`/${_vm.project.fullPath}`}},[_vm._v(_vm._s(_vm.project.nameWithNamespace))])]},proxy:true}],null,false,2659218570)}):_vm._e(),_vm._v(\" \"),(_vm.drawer.location || _vm.drawer.webUrl)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.file},scopedSlots:_vm._u([{key:\"value\",fn:function(){return [(_vm.drawer.webUrl && _vm.drawer.filePath && _vm.drawer.line)?_c('span',[_c('gl-link',{attrs:{\"href\":_vm.drawer.webUrl}},[_vm._v(_vm._s(_vm.drawer.filePath)+\":\"+_vm._s(_vm.drawer.line))])],1):(_vm.drawer.location)?_c('span',[_vm._v(\"\\n        \"+_vm._s(_vm.drawer.location.file)+\":\"+_vm._s(_vm.drawer.location.startLine)+\"\\n      \")]):_vm._e()]},proxy:true}],null,false,225246800)}):_vm._e(),_vm._v(\" \"),(_vm.showCodeFlowTabs)?_c('drawer-item',{attrs:{\"data-testid\":\"code-flow-button\"},scopedSlots:_vm._u([{key:\"value\",fn:function(){return [_c('gl-button',{attrs:{\"category\":\"primary\",\"variant\":\"default\",\"data-testid\":\"show-code-flow\"},on:{\"click\":function($event){return _vm.$emit('redirectToCodeFlowTab')}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.codeFlowButton)+\"\\n      \")])]},proxy:true}],null,false,1369086690)}):_vm._e(),_vm._v(\" \"),(_vm.drawer.identifiers && _vm.drawer.identifiers.length)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.identifiers},scopedSlots:_vm._u([{key:\"value\",fn:function(){return _vm._l((_vm.drawer.identifiers),function(identifier,index){return _c('span',{key:identifier.externalId},[(identifier.url)?_c('gl-link',{attrs:{\"href\":identifier.url}},[_vm._v(\"\\n          \"+_vm._s(_vm.concatIdentifierName(identifier.name, index))+\"\\n        \")]):_c('span',[_vm._v(\"\\n          \"+_vm._s(_vm.concatIdentifierName(identifier.name, index))+\"\\n        \")])],1)})},proxy:true}],null,false,587250999)}):_vm._e(),_vm._v(\" \"),(_vm.drawer.scale)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.tool,\"value\":_vm.isCodeQuality ? _vm.$options.i18n.codeQuality : _vm.$options.i18n.sast}}):_vm._e(),_vm._v(\" \"),(_vm.drawer.engineName)?_c('drawer-item',{attrs:{\"description\":_vm.$options.i18n.engine,\"value\":_vm.drawer.engineName}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n  GlDrawer,\n  GlButton,\n  GlButtonGroup,\n  GlIcon,\n  GlTooltipDirective,\n  GlTabs,\n  GlTab,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState } from 'vuex';\nimport { VULNERABILITY_TAB_NAMES } from 'ee/vulnerabilities/constants';\nimport { VULNERABILITY_DETAIL_CODE_FLOWS } from 'ee/security_dashboard/constants';\nimport { DRAWER_Z_INDEX } from '~/lib/utils/constants';\nimport { getSeverity } from '~/ci/reports/utils';\nimport { getContentWrapperHeight } from '~/lib/utils/dom_utils';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { s__ } from '~/locale';\nimport VulnerabilityCodeFlow from 'ee/vue_shared/components/code_flow/vulnerability_code_flow.vue';\nimport FindingsDrawerDetails from './findings_drawer_details.vue';\n\nexport const i18n = {\n  codeQualityFinding: s__('FindingsDrawer|Code Quality Finding'),\n  sastFinding: s__('FindingsDrawer|SAST Finding'),\n  codeQuality: s__('FindingsDrawer|Code Quality'),\n  detected: s__('FindingsDrawer|Detected in pipeline'),\n  nextButton: s__('FindingsDrawer|Next finding'),\n  previousButton: s__('FindingsDrawer|Previous finding'),\n  VULNERABILITY_TAB_NAMES,\n};\nexport const codeQuality = 'codeQuality';\n\nexport default {\n  i18n,\n  codeQuality,\n  components: {\n    FindingsDrawerDetails,\n    VulnerabilityCodeFlow,\n    GlDrawer,\n    GlButton,\n    GlButtonGroup,\n    GlIcon,\n    GlTabs,\n    GlTab,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [glFeatureFlagMixin()],\n  props: {\n    drawer: {\n      type: Object,\n      required: true,\n    },\n    project: {\n      type: Object,\n      required: false,\n      default: () => {},\n    },\n  },\n  data() {\n    return {\n      drawerIndex: 0,\n      tabIndex: 0,\n    };\n  },\n  computed: {\n    ...mapState('diffs', ['branchName']),\n    getDrawerHeaderHeight() {\n      return getContentWrapperHeight();\n    },\n    projectFullPath() {\n      return this.project?.fullPath;\n    },\n    isCodeQuality() {\n      return this.activeElement.scale === this.$options.codeQuality;\n    },\n    activeElement() {\n      return this.drawer.findings[this.drawerIndex];\n    },\n    showCodeFlowTabs() {\n      const codeFlowData = this.activeElement.details?.find(\n        (detail) => detail.type === VULNERABILITY_DETAIL_CODE_FLOWS,\n      );\n      return this.glFeatures.mrVulnerabilityCodeFlow && codeFlowData?.items?.length > 0;\n    },\n  },\n  DRAWER_Z_INDEX,\n  watch: {\n    drawer(newVal) {\n      this.drawerIndex = newVal.index;\n    },\n  },\n  methods: {\n    getSeverity,\n    prev() {\n      if (this.drawerIndex === 0) {\n        this.drawerIndex = this.drawer.findings.length - 1;\n      } else {\n        this.drawerIndex -= 1;\n      }\n      this.tabIndex = 0;\n    },\n    next() {\n      if (this.drawerIndex === this.drawer.findings.length - 1) {\n        this.drawerIndex = 0;\n      } else {\n        this.drawerIndex += 1;\n      }\n      this.tabIndex = 0;\n    },\n    redirectToCodeFlowTab() {\n      this.tabIndex = 1;\n    },\n  },\n};\n</script>\n<template>\n  <gl-drawer\n    :header-height=\"getDrawerHeaderHeight\"\n    :z-index=\"$options.DRAWER_Z_INDEX\"\n    class=\"findings-drawer\"\n    :open=\"Object.keys(drawer).length !== 0\"\n    @close=\"$emit('close')\"\n  >\n    <template #title>\n      <h2 class=\"drawer-heading gl-mb-0 gl-mt-0 gl-w-28 gl-text-base\">\n        <gl-icon\n          :size=\"12\"\n          :name=\"getSeverity(activeElement).name\"\n          :class=\"getSeverity(activeElement).class\"\n          class=\"inline-findings-severity-icon !gl-align-baseline\"\n        />\n        <span class=\"drawer-heading-severity\">{{ activeElement.severity }}</span>\n        {{ isCodeQuality ? $options.i18n.codeQualityFinding : $options.i18n.sastFinding }}\n      </h2>\n      <div v-if=\"drawer.findings.length > 1\">\n        <gl-button-group>\n          <gl-button\n            v-gl-tooltip.bottom\n            :title=\"$options.i18n.previousButton\"\n            :aria-label=\"$options.i18n.previousButton\"\n            size=\"small\"\n            data-testid=\"findings-drawer-prev-button\"\n            @click=\"prev\"\n          >\n            <gl-icon\n              :size=\"14\"\n              class=\"findings-drawer-nav-button gl-relative\"\n              name=\"chevron-lg-left\"\n            />\n          </gl-button>\n          <gl-button size=\"small\" @click=\"next\">\n            <gl-icon\n              v-gl-tooltip.bottom\n              data-testid=\"findings-drawer-next-button\"\n              :title=\"$options.i18n.nextButton\"\n              :aria-label=\"$options.i18n.nextButton\"\n              class=\"findings-drawer-nav-button gl-relative\"\n              :size=\"14\"\n              name=\"chevron-lg-right\"\n            />\n          </gl-button>\n        </gl-button-group>\n      </div>\n    </template>\n\n    <template #default>\n      <gl-tabs v-if=\"showCodeFlowTabs\" v-model=\"tabIndex\" class=\"!gl-pt-0\">\n        <gl-tab :title=\"$options.i18n.VULNERABILITY_TAB_NAMES.DETAILS\">\n          <findings-drawer-details\n            :drawer=\"activeElement\"\n            :project=\"project\"\n            :inside-tab=\"true\"\n            @redirectToCodeFlowTab=\"redirectToCodeFlowTab()\"\n          />\n        </gl-tab>\n\n        <gl-tab :title=\"$options.i18n.VULNERABILITY_TAB_NAMES.CODE_FLOW\">\n          <vulnerability-code-flow\n            :branch-ref=\"branchName\"\n            :details=\"activeElement.details[0]\"\n            :project-full-path=\"projectFullPath\"\n            :show-code-flow-file-viewer=\"false\"\n          />\n        </gl-tab>\n      </gl-tabs>\n      <template v-else>\n        <findings-drawer-details :drawer=\"activeElement\" :project=\"project\" />\n      </template>\n    </template>\n  </gl-drawer>\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!./findings_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!./findings_drawer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./findings_drawer.vue?vue&type=template&id=1d82bf80\"\nimport script from \"./findings_drawer.vue?vue&type=script&lang=js\"\nexport * from \"./findings_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',{staticClass:\"findings-drawer\",attrs:{\"header-height\":_vm.getDrawerHeaderHeight,\"z-index\":_vm.$options.DRAWER_Z_INDEX,\"open\":Object.keys(_vm.drawer).length !== 0},on:{\"close\":function($event){return _vm.$emit('close')}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('h2',{staticClass:\"drawer-heading gl-mb-0 gl-mt-0 gl-w-28 gl-text-base\"},[_c('gl-icon',{staticClass:\"inline-findings-severity-icon !gl-align-baseline\",class:_vm.getSeverity(_vm.activeElement).class,attrs:{\"size\":12,\"name\":_vm.getSeverity(_vm.activeElement).name}}),_vm._v(\" \"),_c('span',{staticClass:\"drawer-heading-severity\"},[_vm._v(_vm._s(_vm.activeElement.severity))]),_vm._v(\"\\n      \"+_vm._s(_vm.isCodeQuality ? _vm.$options.i18n.codeQualityFinding : _vm.$options.i18n.sastFinding)+\"\\n    \")],1),_vm._v(\" \"),(_vm.drawer.findings.length > 1)?_c('div',[_c('gl-button-group',[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.bottom\",modifiers:{\"bottom\":true}}],attrs:{\"title\":_vm.$options.i18n.previousButton,\"aria-label\":_vm.$options.i18n.previousButton,\"size\":\"small\",\"data-testid\":\"findings-drawer-prev-button\"},on:{\"click\":_vm.prev}},[_c('gl-icon',{staticClass:\"findings-drawer-nav-button gl-relative\",attrs:{\"size\":14,\"name\":\"chevron-lg-left\"}})],1),_vm._v(\" \"),_c('gl-button',{attrs:{\"size\":\"small\"},on:{\"click\":_vm.next}},[_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.bottom\",modifiers:{\"bottom\":true}}],staticClass:\"findings-drawer-nav-button gl-relative\",attrs:{\"data-testid\":\"findings-drawer-next-button\",\"title\":_vm.$options.i18n.nextButton,\"aria-label\":_vm.$options.i18n.nextButton,\"size\":14,\"name\":\"chevron-lg-right\"}})],1)],1)],1):_vm._e()]},proxy:true},{key:\"default\",fn:function(){return [(_vm.showCodeFlowTabs)?_c('gl-tabs',{staticClass:\"!gl-pt-0\",model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},[_c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.VULNERABILITY_TAB_NAMES.DETAILS}},[_c('findings-drawer-details',{attrs:{\"drawer\":_vm.activeElement,\"project\":_vm.project,\"inside-tab\":true},on:{\"redirectToCodeFlowTab\":function($event){return _vm.redirectToCodeFlowTab()}}})],1),_vm._v(\" \"),_c('gl-tab',{attrs:{\"title\":_vm.$options.i18n.VULNERABILITY_TAB_NAMES.CODE_FLOW}},[_c('vulnerability-code-flow',{attrs:{\"branch-ref\":_vm.branchName,\"details\":_vm.activeElement.details[0],\"project-full-path\":_vm.projectFullPath,\"show-code-flow-file-viewer\":false}})],1)],1):[_c('findings-drawer-details',{attrs:{\"drawer\":_vm.activeElement,\"project\":_vm.project}})]]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { performanceMarkAndMeasure } from '~/performance/utils';\nimport {\n  MR_DIFFS_MARK_FILE_TREE_START,\n  MR_DIFFS_MARK_FILE_TREE_END,\n  MR_DIFFS_MARK_DIFF_FILES_START,\n  MR_DIFFS_MARK_FIRST_DIFF_FILE_SHOWN,\n  MR_DIFFS_MARK_DIFF_FILES_END,\n  MR_DIFFS_MEASURE_FILE_TREE_DONE,\n  MR_DIFFS_MEASURE_DIFF_FILES_DONE,\n} from '~/performance/constants';\n\nimport {\n  EVT_PERF_MARK_FILE_TREE_START,\n  EVT_PERF_MARK_FILE_TREE_END,\n  EVT_PERF_MARK_DIFF_FILES_START,\n  EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN,\n  EVT_PERF_MARK_DIFF_FILES_END,\n} from '../constants';\nimport eventHub from '../event_hub';\n\nfunction treeStart() {\n  performanceMarkAndMeasure({\n    mark: MR_DIFFS_MARK_FILE_TREE_START,\n  });\n}\n\nfunction treeEnd() {\n  performanceMarkAndMeasure({\n    mark: MR_DIFFS_MARK_FILE_TREE_END,\n    measures: [\n      {\n        name: MR_DIFFS_MEASURE_FILE_TREE_DONE,\n        start: MR_DIFFS_MARK_FILE_TREE_START,\n        end: MR_DIFFS_MARK_FILE_TREE_END,\n      },\n    ],\n  });\n}\n\nfunction filesStart() {\n  performanceMarkAndMeasure({\n    mark: MR_DIFFS_MARK_DIFF_FILES_START,\n  });\n}\n\nfunction filesEnd() {\n  performanceMarkAndMeasure({\n    mark: MR_DIFFS_MARK_DIFF_FILES_END,\n    measures: [\n      {\n        name: MR_DIFFS_MEASURE_DIFF_FILES_DONE,\n        start: MR_DIFFS_MARK_DIFF_FILES_START,\n        end: MR_DIFFS_MARK_DIFF_FILES_END,\n      },\n    ],\n  });\n}\n\nfunction firstFile() {\n  performanceMarkAndMeasure({\n    mark: MR_DIFFS_MARK_FIRST_DIFF_FILE_SHOWN,\n  });\n}\n\nexport const diffsApp = {\n  instrument() {\n    eventHub.$on(EVT_PERF_MARK_FILE_TREE_START, treeStart);\n    eventHub.$on(EVT_PERF_MARK_FILE_TREE_END, treeEnd);\n    eventHub.$on(EVT_PERF_MARK_DIFF_FILES_START, filesStart);\n    eventHub.$on(EVT_PERF_MARK_DIFF_FILES_END, filesEnd);\n    eventHub.$on(EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN, firstFile);\n  },\n  deinstrument() {\n    eventHub.$off(EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN, firstFile);\n    eventHub.$off(EVT_PERF_MARK_DIFF_FILES_END, filesEnd);\n    eventHub.$off(EVT_PERF_MARK_DIFF_FILES_START, filesStart);\n    eventHub.$off(EVT_PERF_MARK_FILE_TREE_END, treeEnd);\n    eventHub.$off(EVT_PERF_MARK_FILE_TREE_START, treeStart);\n  },\n};\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./collapsed_files_warning.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!./collapsed_files_warning.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlButton } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState } from 'vuex';\n\nimport { EVT_EXPAND_ALL_FILES } from '../constants';\nimport eventHub from '../event_hub';\n\nexport default {\n  components: {\n    GlAlert,\n    GlButton,\n  },\n  props: {\n    dismissed: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isDismissed: this.dismissed,\n    };\n  },\n  computed: {\n    ...mapState('diffs', ['diffFiles']),\n    shouldDisplay() {\n      return !this.isDismissed && this.diffFiles.length > 1;\n    },\n  },\n\n  methods: {\n    dismiss() {\n      this.isDismissed = true;\n      this.$emit('dismiss');\n    },\n    expand() {\n      eventHub.$emit(EVT_EXPAND_ALL_FILES);\n      this.dismiss();\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"shouldDisplay\" data-testid=\"root\" class=\"col-12\">\n    <gl-alert\n      :dismissible=\"true\"\n      :title=\"__('Some changes are not shown')\"\n      variant=\"warning\"\n      class=\"gl-mb-5\"\n      @dismiss=\"dismiss\"\n    >\n      <p class=\"gl-mb-0\">\n        {{ __('For a faster browsing experience, some files are collapsed by default.') }}\n      </p>\n      <template #actions>\n        <gl-button class=\"gl-alert-action\" @click=\"expand\">\n          {{ __('Expand all files') }}\n        </gl-button>\n      </template>\n    </gl-alert>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./collapsed_files_warning.vue?vue&type=template&id=56d68f34\"\nimport script from \"./collapsed_files_warning.vue?vue&type=script&lang=js\"\nexport * from \"./collapsed_files_warning.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldDisplay)?_c('div',{staticClass:\"col-12\",attrs:{\"data-testid\":\"root\"}},[_c('gl-alert',{staticClass:\"gl-mb-5\",attrs:{\"dismissible\":true,\"title\":_vm.__('Some changes are not shown'),\"variant\":\"warning\"},on:{\"dismiss\":_vm.dismiss},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('gl-button',{staticClass:\"gl-alert-action\",on:{\"click\":_vm.expand}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Expand all files'))+\"\\n      \")])]},proxy:true}],null,false,1574907447)},[_c('p',{staticClass:\"gl-mb-0\"},[_vm._v(\"\\n      \"+_vm._s(_vm.__('For a faster browsing experience, some files are collapsed by default.'))+\"\\n    \")])])],1):_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!./commit_widget.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!./commit_widget.vue?vue&type=script&lang=js\"","<script>\nimport CommitItem from './commit_item.vue';\n\nexport default {\n  components: {\n    CommitItem,\n  },\n  props: {\n    commit: {\n      type: Object,\n      required: true,\n    },\n    collapsible: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"info-well mx-0 gl-max-w-full\">\n    <div class=\"well-segment\">\n      <ul class=\"gl-m-0 gl-list-none gl-p-0\">\n        <commit-item :commit=\"commit\" :collapsible=\"collapsible\" />\n      </ul>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./commit_widget.vue?vue&type=template&id=2ff3aaf3\"\nimport script from \"./commit_widget.vue?vue&type=script&lang=js\"\nexport * from \"./commit_widget.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:\"info-well mx-0 gl-max-w-full\"},[_c('div',{staticClass:\"well-segment\"},[_c('ul',{staticClass:\"gl-m-0 gl-list-none gl-p-0\"},[_c('commit-item',{attrs:{\"commit\":_vm.commit,\"collapsible\":_vm.collapsible}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import GlBaseAnimatedIcon from './base_animated_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAnimatedSidebarIcon',\n  extends: GlBaseAnimatedIcon\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:_vm.iconStateClass,attrs:{\"aria-label\":_vm.ariaLabel,\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('rect',{attrs:{\"x\":\"1.75\",\"y\":\"1.75\",\"width\":\"12.5\",\"height\":\"12.5\",\"rx\":\"1.25\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-sidebar-line\",attrs:{\"d\":\"M5.25 2V14\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\"}})])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import 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!./compare_dropdown_layout.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!./compare_dropdown_layout.vue?vue&type=script&lang=js\"","<script>\nimport { GlDropdown, GlDropdownItem, GlDropdownDivider } from '@gitlab/ui';\nimport TimeAgo from '~/vue_shared/components/time_ago_tooltip.vue';\n\nexport default {\n  components: {\n    GlDropdown,\n    GlDropdownItem,\n    GlDropdownDivider,\n    TimeAgo,\n  },\n  props: {\n    versions: {\n      type: Array,\n      required: true,\n    },\n  },\n  computed: {\n    selectedVersionName() {\n      return this.versions.find((x) => x.selected)?.versionName || '';\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-dropdown\n    :text=\"selectedVersionName\"\n    data-testid=\"version-dropdown-content\"\n    size=\"small\"\n    category=\"tertiary\"\n  >\n    <template v-for=\"version in versions\">\n      <gl-dropdown-divider v-if=\"version.addDivider\" :key=\"version.id\" />\n      <gl-dropdown-item\n        :key=\"version.id\"\n        :class=\"{\n          'is-active': version.selected,\n        }\"\n        is-check-item\n        :is-checked=\"version.selected\"\n        :href=\"version.href\"\n      >\n        <div>\n          <strong>\n            {{ version.versionName }}\n            <template v-if=\"version.isHead\">{{ s__('DiffsCompareBaseBranch|(HEAD)') }}</template>\n            <template v-else-if=\"version.isBase\">{{\n              s__('DiffsCompareBaseBranch|(base)')\n            }}</template>\n          </strong>\n        </div>\n        <div>\n          <small class=\"commit-sha\"> {{ version.short_commit_sha }} </small>\n        </div>\n        <div>\n          <small>\n            <template v-if=\"version.commitsText\">\n              {{ version.commitsText }}\n            </template>\n            <time-ago v-if=\"version.created_at\" :time=\"version.created_at\" class=\"js-timeago\" />\n          </small>\n        </div>\n      </gl-dropdown-item>\n    </template>\n  </gl-dropdown>\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!./compare_versions.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!./compare_versions.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlTooltipDirective,\n  GlIcon,\n  GlLink,\n  GlButtonGroup,\n  GlButton,\n  GlSprintf,\n  GlAnimatedSidebarIcon,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport { __ } from '~/locale';\nimport { setUrlParams } from '~/lib/utils/url_utility';\nimport {\n  keysFor,\n  MR_COMMITS_NEXT_COMMIT,\n  MR_COMMITS_PREVIOUS_COMMIT,\n  MR_TOGGLE_FILE_BROWSER,\n} from '~/behaviors/shortcuts/keybindings';\nimport { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';\nimport { sanitize } from '~/lib/dompurify';\nimport CompareDropdownLayout from './compare_dropdown_layout.vue';\n\nexport default {\n  components: {\n    CompareDropdownLayout,\n    GlIcon,\n    GlLink,\n    GlButtonGroup,\n    GlButton,\n    GlSprintf,\n    GlAnimatedSidebarIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    toggleFileTreeVisible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    ...mapGetters('diffs', [\n      'diffCompareDropdownTargetVersions',\n      'diffCompareDropdownSourceVersions',\n    ]),\n    ...mapState('diffs', ['commit', 'showTreeList', 'startVersion', 'latestVersionPath']),\n    toggleFileBrowserShortcutKey() {\n      return shouldDisableShortcuts() ? null : keysFor(MR_TOGGLE_FILE_BROWSER)[0];\n    },\n    toggleFileBrowserTitle() {\n      return this.showTreeList ? __('Hide file browser') : __('Show file browser');\n    },\n    toggleFileBrowserTooltip() {\n      const description = this.toggleFileBrowserTitle;\n      const key = this.toggleFileBrowserShortcutKey;\n      return shouldDisableShortcuts()\n        ? description\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`);\n    },\n    hasSourceVersions() {\n      return this.diffCompareDropdownSourceVersions.length > 0;\n    },\n    nextCommitUrl() {\n      return this.commit.next_commit_id\n        ? setUrlParams({ commit_id: this.commit.next_commit_id })\n        : '';\n    },\n    nextCommitShortcutKey() {\n      return shouldDisableShortcuts() || !this.commit.next_commit_id\n        ? null\n        : keysFor(MR_COMMITS_NEXT_COMMIT)[0];\n    },\n    nextCommitTitle() {\n      return !this.commit.next_commit_id\n        ? __(\"You're at the last commit\")\n        : MR_COMMITS_NEXT_COMMIT.description;\n    },\n    nextCommitTooltip() {\n      const description = this.nextCommitTitle;\n      const key = this.nextCommitShortcutKey;\n      return shouldDisableShortcuts()\n        ? description\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`);\n    },\n    previousCommitUrl() {\n      return this.commit.prev_commit_id\n        ? setUrlParams({ commit_id: this.commit.prev_commit_id })\n        : '';\n    },\n    previousCommitShortcutKey() {\n      return shouldDisableShortcuts() || !this.commit.prev_commit_id\n        ? null\n        : keysFor(MR_COMMITS_PREVIOUS_COMMIT)[0];\n    },\n    previousCommitTitle() {\n      return !this.commit.prev_commit_id\n        ? __(\"You're at the first commit\")\n        : MR_COMMITS_PREVIOUS_COMMIT.description;\n    },\n    previousCommitTooltip() {\n      const description = this.previousCommitTitle;\n      const key = this.previousCommitShortcutKey;\n      return shouldDisableShortcuts()\n        ? description\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`);\n    },\n    hasNeighborCommits() {\n      return this.commit && (this.commit.next_commit_id || this.commit.prev_commit_id);\n    },\n  },\n  methods: {\n    ...mapActions('diffs', ['setShowTreeList']),\n    ...mapActions('diffs', ['moveToNeighboringCommit']),\n  },\n};\n</script>\n\n<template>\n  <div class=\"mr-version-controls\">\n    <div class=\"mr-version-menus-container gl-px-5 gl-pb-2 gl-pt-3\">\n      <gl-button\n        v-if=\"toggleFileTreeVisible\"\n        v-gl-tooltip.html=\"toggleFileBrowserTooltip\"\n        variant=\"default\"\n        class=\"js-toggle-tree-list btn-icon gl-mr-3\"\n        data-testid=\"file-tree-button\"\n        :aria-label=\"toggleFileBrowserTitle\"\n        :aria-keyshortcuts=\"toggleFileBrowserShortcutKey\"\n        :selected=\"showTreeList\"\n        @click=\"setShowTreeList({ showTreeList: !showTreeList })\"\n      >\n        <gl-animated-sidebar-icon :is-on=\"showTreeList\" />\n      </gl-button>\n      <div v-if=\"commit\">\n        {{ __('Viewing commit') }}\n        <gl-link :href=\"commit.commit_url\" class=\"monospace\">{{ commit.short_id }}</gl-link>\n      </div>\n      <div v-if=\"hasNeighborCommits\" class=\"commit-nav-buttons\">\n        <gl-button-group>\n          <gl-button\n            v-gl-tooltip.html=\"previousCommitTooltip\"\n            :aria-label=\"previousCommitTitle\"\n            :aria-keyshortcuts=\"previousCommitShortcutKey\"\n            :href=\"previousCommitUrl\"\n            :disabled=\"!commit.prev_commit_id\"\n            @click.prevent=\"moveToNeighboringCommit({ direction: 'previous' })\"\n          >\n            <span\n              v-if=\"!commit.prev_commit_id\"\n              v-gl-tooltip\n              class=\"position-absolute position-top-0 position-left-0 gl-h-full gl-w-full\"\n              :title=\"__('You\\'re at the first commit')\"\n            ></span>\n            <gl-icon name=\"chevron-left\" />\n            {{ __('Prev') }}\n          </gl-button>\n          <gl-button\n            v-gl-tooltip.html=\"nextCommitTooltip\"\n            :aria-label=\"nextCommitTitle\"\n            :aria-keyshortcuts=\"nextCommitShortcutKey\"\n            :href=\"nextCommitUrl\"\n            :disabled=\"!commit.next_commit_id\"\n            @click.prevent=\"moveToNeighboringCommit({ direction: 'next' })\"\n          >\n            <span\n              v-if=\"!commit.next_commit_id\"\n              v-gl-tooltip\n              class=\"position-absolute position-top-0 position-left-0 gl-h-full gl-w-full\"\n              :title=\"__('You\\'re at the last commit')\"\n            ></span>\n            {{ __('Next') }}\n            <gl-icon name=\"chevron-right\" />\n          </gl-button>\n        </gl-button-group>\n      </div>\n      <gl-sprintf\n        v-else-if=\"!commit && hasSourceVersions\"\n        class=\"gl-flex gl-min-w-0 gl-items-center\"\n        :message=\"s__('MergeRequest|Compare %{target} and %{source}')\"\n      >\n        <template #target>\n          <compare-dropdown-layout\n            :versions=\"diffCompareDropdownTargetVersions\"\n            class=\"mr-version-compare-dropdown\"\n            data-testid=\"target-version-dropdown\"\n          />\n        </template>\n        <template #source>\n          <compare-dropdown-layout\n            :versions=\"diffCompareDropdownSourceVersions\"\n            class=\"mr-version-dropdown\"\n          />\n        </template>\n      </gl-sprintf>\n      <gl-button\n        v-if=\"commit || startVersion\"\n        :href=\"latestVersionPath\"\n        variant=\"default\"\n        class=\"js-latest-version\"\n        :class=\"{ 'gl-ml-3': commit && !hasNeighborCommits }\"\n      >\n        {{ __('Show latest version') }}\n      </gl-button>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./compare_dropdown_layout.vue?vue&type=template&id=b7bac868\"\nimport script from \"./compare_dropdown_layout.vue?vue&type=script&lang=js\"\nexport * from \"./compare_dropdown_layout.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-dropdown',{attrs:{\"text\":_vm.selectedVersionName,\"data-testid\":\"version-dropdown-content\",\"size\":\"small\",\"category\":\"tertiary\"}},[_vm._l((_vm.versions),function(version){return [(version.addDivider)?_c('gl-dropdown-divider',{key:version.id}):_vm._e(),_vm._v(\" \"),_c('gl-dropdown-item',{key:version.id,class:{\n        'is-active': version.selected,\n      },attrs:{\"is-check-item\":\"\",\"is-checked\":version.selected,\"href\":version.href}},[_c('div',[_c('strong',[_vm._v(\"\\n          \"+_vm._s(version.versionName)+\"\\n          \"),(version.isHead)?[_vm._v(_vm._s(_vm.s__('DiffsCompareBaseBranch|(HEAD)')))]:(version.isBase)?[_vm._v(_vm._s(_vm.s__('DiffsCompareBaseBranch|(base)')))]:_vm._e()],2)]),_vm._v(\" \"),_c('div',[_c('small',{staticClass:\"commit-sha\"},[_vm._v(\" \"+_vm._s(version.short_commit_sha)+\" \")])]),_vm._v(\" \"),_c('div',[_c('small',[(version.commitsText)?[_vm._v(\"\\n            \"+_vm._s(version.commitsText)+\"\\n          \")]:_vm._e(),_vm._v(\" \"),(version.created_at)?_c('time-ago',{staticClass:\"js-timeago\",attrs:{\"time\":version.created_at}}):_vm._e()],2)])])]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./compare_versions.vue?vue&type=template&id=64fa4bc6\"\nimport script from \"./compare_versions.vue?vue&type=script&lang=js\"\nexport * from \"./compare_versions.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:\"mr-version-controls\"},[_c('div',{staticClass:\"mr-version-menus-container gl-px-5 gl-pb-2 gl-pt-3\"},[(_vm.toggleFileTreeVisible)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.html\",value:(_vm.toggleFileBrowserTooltip),expression:\"toggleFileBrowserTooltip\",modifiers:{\"html\":true}}],staticClass:\"js-toggle-tree-list btn-icon gl-mr-3\",attrs:{\"variant\":\"default\",\"data-testid\":\"file-tree-button\",\"aria-label\":_vm.toggleFileBrowserTitle,\"aria-keyshortcuts\":_vm.toggleFileBrowserShortcutKey,\"selected\":_vm.showTreeList},on:{\"click\":function($event){return _vm.setShowTreeList({ showTreeList: !_vm.showTreeList })}}},[_c('gl-animated-sidebar-icon',{attrs:{\"is-on\":_vm.showTreeList}})],1):_vm._e(),_vm._v(\" \"),(_vm.commit)?_c('div',[_vm._v(\"\\n      \"+_vm._s(_vm.__('Viewing commit'))+\"\\n      \"),_c('gl-link',{staticClass:\"monospace\",attrs:{\"href\":_vm.commit.commit_url}},[_vm._v(_vm._s(_vm.commit.short_id))])],1):_vm._e(),_vm._v(\" \"),(_vm.hasNeighborCommits)?_c('div',{staticClass:\"commit-nav-buttons\"},[_c('gl-button-group',[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.html\",value:(_vm.previousCommitTooltip),expression:\"previousCommitTooltip\",modifiers:{\"html\":true}}],attrs:{\"aria-label\":_vm.previousCommitTitle,\"aria-keyshortcuts\":_vm.previousCommitShortcutKey,\"href\":_vm.previousCommitUrl,\"disabled\":!_vm.commit.prev_commit_id},on:{\"click\":function($event){$event.preventDefault();return _vm.moveToNeighboringCommit({ direction: 'previous' })}}},[(!_vm.commit.prev_commit_id)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"position-absolute position-top-0 position-left-0 gl-h-full gl-w-full\",attrs:{\"title\":_vm.__('You\\'re at the first commit')}}):_vm._e(),_vm._v(\" \"),_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\"\\n          \"+_vm._s(_vm.__('Prev'))+\"\\n        \")],1),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.html\",value:(_vm.nextCommitTooltip),expression:\"nextCommitTooltip\",modifiers:{\"html\":true}}],attrs:{\"aria-label\":_vm.nextCommitTitle,\"aria-keyshortcuts\":_vm.nextCommitShortcutKey,\"href\":_vm.nextCommitUrl,\"disabled\":!_vm.commit.next_commit_id},on:{\"click\":function($event){$event.preventDefault();return _vm.moveToNeighboringCommit({ direction: 'next' })}}},[(!_vm.commit.next_commit_id)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"position-absolute position-top-0 position-left-0 gl-h-full gl-w-full\",attrs:{\"title\":_vm.__('You\\'re at the last commit')}}):_vm._e(),_vm._v(\"\\n          \"+_vm._s(_vm.__('Next'))+\"\\n          \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})],1)],1)],1):(!_vm.commit && _vm.hasSourceVersions)?_c('gl-sprintf',{staticClass:\"gl-flex gl-min-w-0 gl-items-center\",attrs:{\"message\":_vm.s__('MergeRequest|Compare %{target} and %{source}')},scopedSlots:_vm._u([{key:\"target\",fn:function(){return [_c('compare-dropdown-layout',{staticClass:\"mr-version-compare-dropdown\",attrs:{\"versions\":_vm.diffCompareDropdownTargetVersions,\"data-testid\":\"target-version-dropdown\"}})]},proxy:true},{key:\"source\",fn:function(){return [_c('compare-dropdown-layout',{staticClass:\"mr-version-dropdown\",attrs:{\"versions\":_vm.diffCompareDropdownSourceVersions}})]},proxy:true}])}):_vm._e(),_vm._v(\" \"),(_vm.commit || _vm.startVersion)?_c('gl-button',{staticClass:\"js-latest-version\",class:{ 'gl-ml-3': _vm.commit && !_vm.hasNeighborCommits },attrs:{\"href\":_vm.latestVersionPath,\"variant\":\"default\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Show latest version'))+\"\\n    \")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const fileLineCodequality = (file, line, codequalityData) => {\n  const fileDiff = codequalityData?.files?.[file] || [];\n  const lineDiff = fileDiff.filter((violation) => violation.line === line);\n  return lineDiff;\n};\n\n// Returns the SAST degradations for a specific line of a given file\nexport const fileLineSast = (file, line, sastData) => {\n  const lineDiff = [];\n\n  sastData?.added?.map((e) => {\n    const startLine = parseInt(e.location.startLine, 10);\n    if (e.location.file === file && startLine === line) {\n      lineDiff.push({\n        line: startLine,\n        description: e.description,\n        details: e.details,\n        severity: e.severity.toLowerCase(),\n        location: e.location,\n        foundByPipelineIid: e.foundByPipelineIid,\n        identifiers: e.identifiers,\n        state: e.state.toLowerCase(),\n        title: e.title,\n      });\n    }\n    return e;\n  });\n  return lineDiff;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',_vm._l((_vm.drafts),function(draft,index){return _c('div',{key:draft.id,staticClass:\"discussion-notes diff-discussions position-relative\"},[_c('div',{staticClass:\"notes\"},[(_vm.showPin)?_c('design-note-pin',{staticClass:\"js-diff-notes-index -gl-translate-x-1/2\",attrs:{\"label\":_vm.toggleText(draft, index),\"is-draft\":\"\",\"size\":\"sm\"}}):_vm._e(),_vm._v(\" \"),_c('draft-note',{attrs:{\"draft\":draft,\"autosave-key\":_vm.autosaveKey}})],1)])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\n\nexport default {\n  methods: {\n    ...mapActions(['toggleDiscussion']),\n    clickedToggle(discussion) {\n      this.toggleDiscussion({ discussionId: discussion.id });\n    },\n    toggleText(discussion, index) {\n      return index + 1;\n    },\n  },\n};\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_file_drafts.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!./diff_file_drafts.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport imageDiff from '~/diffs/mixins/image_diff';\nimport DesignNotePin from '~/vue_shared/components/design_management/design_note_pin.vue';\nimport DraftNote from './draft_note.vue';\n\nexport default {\n  components: {\n    DraftNote,\n    DesignNotePin,\n  },\n  mixins: [imageDiff],\n  props: {\n    fileHash: {\n      type: String,\n      required: true,\n    },\n    showPin: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    positionType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    ...mapGetters('batchComments', ['draftsForFile']),\n    drafts() {\n      return this.draftsForFile(this.fileHash).filter(\n        (f) => f.position?.position_type === this.positionType,\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div\n      v-for=\"(draft, index) in drafts\"\n      :key=\"draft.id\"\n      class=\"discussion-notes diff-discussions position-relative\"\n    >\n      <div class=\"notes\">\n        <design-note-pin\n          v-if=\"showPin\"\n          :label=\"toggleText(draft, index)\"\n          is-draft\n          class=\"js-diff-notes-index -gl-translate-x-1/2\"\n          size=\"sm\"\n        />\n        <draft-note :draft=\"draft\" :autosave-key=\"autosaveKey\" />\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_file_drafts.vue?vue&type=template&id=706e9a88\"\nimport script from \"./diff_file_drafts.vue?vue&type=script&lang=js\"\nexport * from \"./diff_file_drafts.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","// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport { IMAGE_DIFF_POSITION_TYPE } from '../constants';\n\nexport default {\n  computed: {\n    ...mapGetters('batchComments', [\n      'shouldRenderDraftRow',\n      'shouldRenderParallelDraftRow',\n      'draftsForLine',\n      'draftsForFile',\n      'hasParallelDraftLeft',\n      'hasParallelDraftRight',\n    ]),\n    imageDiscussionsWithDrafts() {\n      return this.diffFile.discussions\n        .filter((f) => f.position?.position_type === IMAGE_DIFF_POSITION_TYPE)\n        .concat(this.draftsForFile(this.diffFile.file_hash));\n    },\n  },\n};\n","import { render, staticRenderFns } from \"./no_preview.vue?vue&type=template&id=263f2eee\"\nvar script = {}\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:\"nothing-here-block\"},[_vm._v(\"\\n  \"+_vm._s(_vm.__('No preview for this file type'))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./not_diffable.vue?vue&type=template&id=7b1c21f9\"\nvar script = {}\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:\"nothing-here-block\"},[_vm._v(\"\\n  \"+_vm._s(_vm.__(\"File suppressed by a .gitattributes entry or the file's encoding is unsupported.\"))+\"\\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!./diff_discussions.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!./diff_discussions.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport DesignNotePin from '~/vue_shared/components/design_management/design_note_pin.vue';\nimport NoteableDiscussion from '~/notes/components/noteable_discussion.vue';\n\nexport default {\n  components: {\n    NoteableDiscussion,\n    GlIcon,\n    DesignNotePin,\n  },\n  props: {\n    discussions: {\n      type: Array,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    shouldCollapseDiscussions: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    renderAvatarBadge: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  methods: {\n    ...mapActions('diffs', ['toggleFileDiscussion']),\n    isExpanded(discussion) {\n      return this.shouldCollapseDiscussions ? discussion.expandedOnDiff : true;\n    },\n    toggleVisibility(discussion) {\n      this.toggleFileDiscussion(discussion);\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div\n      v-for=\"(discussion, index) in discussions\"\n      :key=\"discussion.id\"\n      :class=\"{\n        collapsed: !isExpanded(discussion),\n      }\"\n      class=\"discussion-notes diff-discussions position-relative\"\n    >\n      <ul :data-discussion-id=\"discussion.id\" class=\"notes\">\n        <template v-if=\"shouldCollapseDiscussions\">\n          <button\n            v-if=\"discussion.expandedOnDiff\"\n            class=\"diff-notes-collapse js-diff-notes-toggle\"\n            type=\"button\"\n            :aria-label=\"__('Show comments')\"\n            @click=\"toggleVisibility(discussion)\"\n          >\n            <gl-icon name=\"collapse\" class=\"collapse-icon\" />\n          </button>\n          <design-note-pin\n            v-else\n            :label=\"index + 1\"\n            :is-resolved=\"discussion.resolved\"\n            size=\"sm\"\n            class=\"js-diff-notes-toggle -gl-translate-x-1/2\"\n            @click=\"toggleVisibility(discussion)\"\n          />\n        </template>\n        <noteable-discussion\n          v-show=\"isExpanded(discussion)\"\n          :discussion=\"discussion\"\n          :render-diff-file=\"false\"\n          :discussions-by-diff-order=\"true\"\n          :line=\"line\"\n          :help-page-path=\"helpPagePath\"\n          :should-scroll-to-note=\"false\"\n        >\n          <template v-if=\"renderAvatarBadge\" #avatar-badge>\n            <design-note-pin\n              :label=\"index + 1\"\n              class=\"user-avatar\"\n              :is-resolved=\"discussion.resolved\"\n              size=\"sm\"\n            />\n          </template>\n        </noteable-discussion>\n      </ul>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_discussions.vue?vue&type=template&id=c42b6df8\"\nimport script from \"./diff_discussions.vue?vue&type=script&lang=js\"\nexport * from \"./diff_discussions.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',_vm._l((_vm.discussions),function(discussion,index){return _c('div',{key:discussion.id,staticClass:\"discussion-notes diff-discussions position-relative\",class:{\n      collapsed: !_vm.isExpanded(discussion),\n    }},[_c('ul',{staticClass:\"notes\",attrs:{\"data-discussion-id\":discussion.id}},[(_vm.shouldCollapseDiscussions)?[(discussion.expandedOnDiff)?_c('button',{staticClass:\"diff-notes-collapse js-diff-notes-toggle\",attrs:{\"type\":\"button\",\"aria-label\":_vm.__('Show comments')},on:{\"click\":function($event){return _vm.toggleVisibility(discussion)}}},[_c('gl-icon',{staticClass:\"collapse-icon\",attrs:{\"name\":\"collapse\"}})],1):_c('design-note-pin',{staticClass:\"js-diff-notes-toggle -gl-translate-x-1/2\",attrs:{\"label\":index + 1,\"is-resolved\":discussion.resolved,\"size\":\"sm\"},on:{\"click\":function($event){return _vm.toggleVisibility(discussion)}}})]:_vm._e(),_vm._v(\" \"),_c('noteable-discussion',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isExpanded(discussion)),expression:\"isExpanded(discussion)\"}],attrs:{\"discussion\":discussion,\"render-diff-file\":false,\"discussions-by-diff-order\":true,\"line\":_vm.line,\"help-page-path\":_vm.helpPagePath,\"should-scroll-to-note\":false},scopedSlots:_vm._u([(_vm.renderAvatarBadge)?{key:\"avatar-badge\",fn:function(){return [_c('design-note-pin',{staticClass:\"user-avatar\",attrs:{\"label\":index + 1,\"is-resolved\":discussion.resolved,\"size\":\"sm\"}})]},proxy:true}:null],null,true)})],2)])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content\"},[(_vm.line.renderDiscussion)?_c('diff-discussions',{attrs:{\"line\":_vm.line,\"discussions\":_vm.line.discussions,\"help-page-path\":_vm.helpPagePath}}):_vm._e(),_vm._v(\" \"),(!_vm.hasDraft)?_c('diff-discussion-reply',{attrs:{\"has-form\":_vm.line.hasCommentForm,\"render-reply-placeholder\":Boolean(_vm.line.discussions.length)},on:{\"showNewDiscussionForm\":function($event){return _vm.showCommentForm({ lineCode: _vm.line.line_code, fileHash: _vm.diffFileHash })}},scopedSlots:_vm._u([{key:\"form\",fn:function(){return [_c('diff-line-note-form',{attrs:{\"diff-file-hash\":_vm.diffFileHash,\"line\":_vm.line,\"range\":_vm.lineRange,\"note-target-line\":_vm.line,\"help-page-path\":_vm.helpPagePath,\"line-position\":_vm.linePosition}})]},proxy:true}],null,false,4013865774)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_discussion_reply.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!./diff_discussion_reply.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport NoteSignedOutWidget from '~/notes/components/note_signed_out_widget.vue';\nimport DiscussionLockedWidget from '~/notes/components/discussion_locked_widget.vue';\nimport { COMMENT_FORM } from '../../notes/i18n';\n\nimport { START_THREAD } from '../i18n';\n\nexport default {\n  name: 'DiffDiscussionReply',\n  i18n: {\n    START_THREAD,\n    COMMENT_FORM,\n  },\n  components: {\n    GlButton,\n    DiscussionLockedWidget,\n    NoteSignedOutWidget,\n  },\n  props: {\n    hasForm: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    renderReplyPlaceholder: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapGetters({\n      currentUser: 'getUserData',\n      userCanReply: 'userCanReply',\n      getNoteableData: 'getNoteableData',\n    }),\n    isLoggedIn() {\n      return this.currentUser?.id;\n    },\n    canCreateNote() {\n      return this.userCanReply && this.getNoteableData.current_user.can_create_note;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"discussion-reply-holder clearfix gl-flex\">\n    <discussion-locked-widget\n      v-if=\"!canCreateNote && isLoggedIn\"\n      :issuable-type=\"$options.i18n.COMMENT_FORM.mergeRequest\"\n      class=\"!gl-mt-0 gl-grow\"\n    />\n    <template v-else-if=\"isLoggedIn\">\n      <slot v-if=\"hasForm\" name=\"form\"></slot>\n      <template v-else-if=\"renderReplyPlaceholder\">\n        <gl-button @click=\"$emit('showNewDiscussionForm')\">\n          {{ $options.i18n.START_THREAD }}\n        </gl-button>\n      </template>\n    </template>\n    <note-signed-out-widget v-else />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_discussion_reply.vue?vue&type=template&id=7167d21a\"\nimport script from \"./diff_discussion_reply.vue?vue&type=script&lang=js\"\nexport * from \"./diff_discussion_reply.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:\"discussion-reply-holder clearfix gl-flex\"},[(!_vm.canCreateNote && _vm.isLoggedIn)?_c('discussion-locked-widget',{staticClass:\"!gl-mt-0 gl-grow\",attrs:{\"issuable-type\":_vm.$options.i18n.COMMENT_FORM.mergeRequest}}):(_vm.isLoggedIn)?[(_vm.hasForm)?_vm._t(\"form\"):(_vm.renderReplyPlaceholder)?[_c('gl-button',{on:{\"click\":function($event){return _vm.$emit('showNewDiscussionForm')}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.START_THREAD)+\"\\n      \")])]:_vm._e()]:_c('note-signed-out-widget')],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!./multiline_comment_form.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!./multiline_comment_form.vue?vue&type=script&lang=js\"","<script>\nimport { GlFormSelect, GlSprintf } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport { getSymbol, getLineClasses } from './multiline_comment_utils';\n\nexport default {\n  components: { GlFormSelect, GlSprintf },\n  props: {\n    lineRange: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    line: {\n      type: Object,\n      required: true,\n    },\n    commentLineOptions: {\n      type: Array,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      commentLineStart: {},\n      commentLineEndType: this.lineRange?.end?.line_type || this.line.type,\n    };\n  },\n  computed: {\n    lineNumber() {\n      return this.commentLineOptions[this.commentLineOptions.length - 1].text;\n    },\n  },\n  created() {\n    const line = this.lineRange?.start || this.line;\n\n    this.commentLineStart = {\n      line_code: line.line_code,\n      type: line.type,\n      old_line: line.old_line,\n      new_line: line.new_line,\n    };\n\n    this.highlightSelection();\n  },\n  destroyed() {\n    this.setSelectedCommentPosition();\n  },\n  methods: {\n    ...mapActions(['setSelectedCommentPosition']),\n    getSymbol({ type }) {\n      return getSymbol(type);\n    },\n    getLineClasses(line) {\n      return getLineClasses(line);\n    },\n    updateCommentLineStart(value) {\n      this.commentLineStart = value;\n      this.$emit('input', value);\n      this.highlightSelection();\n    },\n    highlightSelection() {\n      const { line_code, new_line, old_line, type } = this.line;\n      const updatedLineRange = {\n        start: { ...this.commentLineStart },\n        end: { line_code, new_line, old_line, type },\n      };\n\n      this.setSelectedCommentPosition(updatedLineRange);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-flex-wrap gl-items-center gl-gap-2\">\n    <gl-sprintf\n      :message=\"\n        s__('MergeRequestDiffs|Commenting on lines %{selectStart}start%{selectEnd} to %{end}')\n      \"\n    >\n      <template #select>\n        <label for=\"comment-line-start\" class=\"sr-only\">{{\n          s__('MergeRequestDiffs|Select comment starting line')\n        }}</label>\n        <gl-form-select\n          id=\"comment-line-start\"\n          :value=\"commentLineStart\"\n          :options=\"commentLineOptions\"\n          width=\"sm\"\n          class=\"gl-w-auto\"\n          @change=\"updateCommentLineStart\"\n        />\n      </template>\n      <template #end>\n        <span :class=\"getLineClasses(line)\">\n          {{ lineNumber }}\n        </span>\n      </template>\n    </gl-sprintf>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./multiline_comment_form.vue?vue&type=template&id=f0324ee6\"\nimport script from \"./multiline_comment_form.vue?vue&type=script&lang=js\"\nexport * from \"./multiline_comment_form.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-flex-wrap gl-items-center gl-gap-2\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.s__('MergeRequestDiffs|Commenting on lines %{selectStart}start%{selectEnd} to %{end}')},scopedSlots:_vm._u([{key:\"select\",fn:function(){return [_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"comment-line-start\"}},[_vm._v(_vm._s(_vm.s__('MergeRequestDiffs|Select comment starting line')))]),_vm._v(\" \"),_c('gl-form-select',{staticClass:\"gl-w-auto\",attrs:{\"id\":\"comment-line-start\",\"value\":_vm.commentLineStart,\"options\":_vm.commentLineOptions,\"width\":\"sm\"},on:{\"change\":_vm.updateCommentLineStart}})]},proxy:true},{key:\"end\",fn:function(){return [_c('span',{class:_vm.getLineClasses(_vm.line)},[_vm._v(\"\\n        \"+_vm._s(_vm.lineNumber)+\"\\n      \")])]},proxy:true}])})],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!./diff_line_note_form.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!./diff_line_note_form.vue?vue&type=script&lang=js\"","<script>\nimport { nextTick } from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapGetters, mapActions } from 'vuex';\nimport { s__, __, sprintf } from '~/locale';\nimport { createAlert } from '~/alert';\nimport diffLineNoteFormMixin from '~/notes/mixins/diff_line_note_form';\nimport { clearDraft } from '~/lib/utils/autosave';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { ignoreWhilePending } from '~/lib/utils/ignore_while_pending';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport MultilineCommentForm from '~/notes/components/multiline_comment_form.vue';\nimport { commentLineOptions, formatLineRange } from '~/notes/components/multiline_comment_utils';\nimport NoteForm from '~/notes/components/note_form.vue';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport {\n  DIFF_NOTE_TYPE,\n  INLINE_DIFF_LINES_KEY,\n  PARALLEL_DIFF_VIEW_TYPE,\n  OLD_LINE_TYPE,\n} from '../constants';\nimport { SAVING_THE_COMMENT_FAILED, SOMETHING_WENT_WRONG } from '../i18n';\n\nexport default {\n  components: {\n    NoteForm,\n    MultilineCommentForm,\n  },\n  mixins: [diffLineNoteFormMixin, glFeatureFlagsMixin()],\n  props: {\n    diffFileHash: {\n      type: String,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: true,\n    },\n    range: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    linePosition: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    noteTargetLine: {\n      type: Object,\n      required: true,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      lines: null,\n      commentLineStart: {\n        line_code: this.line.line_code,\n        type: this.line.type,\n        old_line: this.line.old_line,\n        new_line: this.line.new_line,\n      },\n    };\n  },\n  computed: {\n    ...mapState({\n      diffViewType: ({ diffs }) => diffs.diffViewType,\n      showSuggestPopover: ({ diffs }) => diffs.showSuggestPopover,\n      noteableData: ({ notes }) => notes.noteableData,\n      selectedCommentPosition: ({ notes }) => notes.selectedCommentPosition,\n    }),\n    ...mapGetters('diffs', ['getDiffFileByHash', 'diffLines']),\n    ...mapGetters([\n      'isLoggedIn',\n      'noteableType',\n      'getNoteableData',\n      'getNotesDataByProp',\n      'getUserData',\n    ]),\n    author() {\n      return this.getUserData;\n    },\n    formData() {\n      return {\n        noteableData: this.noteableData,\n        noteableType: this.noteableType,\n        noteTargetLine: this.noteTargetLine,\n        diffViewType: this.diffViewType,\n        diffFile: this.diffFile,\n        linePosition: this.linePosition,\n        lineRange: formatLineRange(this.commentLineStart, this.line),\n      };\n    },\n    diffFile() {\n      return this.getDiffFileByHash(this.diffFileHash);\n    },\n    commentLineOptions() {\n      const combineSides = (acc, { left, right }) => {\n        // ignore null values match lines\n        if (left) acc.push(left);\n        // if the line_codes are identically, return to avoid duplicates\n        if (\n          left?.line_code === right?.line_code ||\n          left?.type === 'old-nonewline' ||\n          right?.type === 'new-nonewline'\n        ) {\n          return acc;\n        }\n        if (right && right.type !== 'match') acc.push(right);\n        return acc;\n      };\n      const getDiffLines = () => {\n        if (this.diffViewType === PARALLEL_DIFF_VIEW_TYPE) {\n          return this.diffLines(this.diffFile).reduce(combineSides, []);\n        }\n\n        return this.diffFile[INLINE_DIFF_LINES_KEY];\n      };\n      const side = this.line.type === 'new' ? 'right' : 'left';\n      const lines = getDiffLines();\n      return commentLineOptions(lines, this.line, this.line.line_code, side);\n    },\n    commentLines() {\n      const lines = [];\n      const { start, end } = this.lines;\n      const diffLines = this.diffFile[INLINE_DIFF_LINES_KEY];\n      let isAdding = false;\n\n      for (let i = 0, diffLinesLength = diffLines.length - 1; i <= diffLinesLength; i += 1) {\n        const line = diffLines[i];\n\n        if (start.line_code === line.line_code) {\n          isAdding = true;\n        }\n\n        if (isAdding) {\n          if (line.type !== OLD_LINE_TYPE) {\n            lines.push(line);\n          }\n\n          if (end.line_code === line.line_code) {\n            break;\n          }\n        }\n      }\n\n      return lines;\n    },\n    autosaveKey() {\n      if (!this.isLoggedIn) return '';\n\n      const {\n        id,\n        noteable_type: noteableTypeUnderscored,\n        noteableType,\n        diff_head_sha: diffHeadSha,\n        source_project_id: sourceProjectId,\n      } = this.noteableData;\n\n      return [\n        s__('Autosave|Note'),\n        capitalizeFirstCharacter(noteableTypeUnderscored || noteableType),\n        id,\n        diffHeadSha,\n        DIFF_NOTE_TYPE,\n        sourceProjectId,\n        this.line.line_code,\n      ].join('/');\n    },\n  },\n  created() {\n    if (this.range) {\n      this.lines = { ...this.range };\n    } else if (this.line) {\n      this.lines = { start: this.line, end: this.line };\n    }\n  },\n  mounted() {\n    if (this.selectedCommentPosition) {\n      this.commentLineStart = this.selectedCommentPosition.start;\n    }\n  },\n  methods: {\n    ...mapActions('diffs', [\n      'cancelCommentForm',\n      'saveDiffDiscussion',\n      'setSuggestPopoverDismissed',\n    ]),\n    handleCancelCommentForm: ignoreWhilePending(\n      async function handleCancelCommentForm(shouldConfirm, isDirty) {\n        if (shouldConfirm && isDirty) {\n          const msg = s__('Notes|Are you sure you want to cancel creating this comment?');\n\n          const confirmed = await confirmAction(msg, {\n            primaryBtnText: __('Discard changes'),\n            cancelBtnText: __('Continue editing'),\n          });\n\n          if (!confirmed) {\n            return;\n          }\n        }\n        this.cancelCommentForm({\n          lineCode: this.line.line_code,\n          fileHash: this.diffFileHash,\n        });\n        nextTick(() => {\n          clearDraft(this.autosaveKey);\n        });\n      },\n    ),\n    handleSaveNote(note, parentElement, errorCallback) {\n      return this.saveDiffDiscussion({ note, formData: this.formData })\n        .then(() => this.handleCancelCommentForm())\n        .catch((e) => {\n          const reason = e.response?.data?.errors;\n          const errorMessage = reason\n            ? sprintf(SAVING_THE_COMMENT_FAILED, { reason })\n            : SOMETHING_WENT_WRONG;\n\n          createAlert({\n            message: errorMessage,\n            parent: parentElement,\n          });\n\n          errorCallback();\n        });\n    },\n    updateStartLine(line) {\n      this.commentLineStart = line;\n      this.lines.start = line;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"content discussion-form discussion-form-container discussion-notes\">\n    <div class=\"gl-mb-3 gl-pb-3 gl-text-subtle\">\n      <multiline-comment-form\n        :line=\"line\"\n        :line-range=\"lines\"\n        :comment-line-options=\"commentLineOptions\"\n        @input=\"updateStartLine\"\n      />\n    </div>\n    <note-form\n      ref=\"noteForm\"\n      :line-code=\"line.line_code\"\n      :line=\"line\"\n      :lines=\"commentLines\"\n      :help-page-path=\"helpPagePath\"\n      :diff-file=\"diffFile\"\n      :show-suggest-popover=\"showSuggestPopover\"\n      :save-button-title=\"__('Comment')\"\n      :autosave-key=\"autosaveKey\"\n      :autofocus=\"false\"\n      class=\"diff-comment-form gl-mt-3\"\n      @handleFormUpdateAddToReview=\"addToReview\"\n      @cancelForm=\"handleCancelCommentForm\"\n      @handleFormUpdate=\"handleSaveNote\"\n      @handleSuggestDismissed=\"setSuggestPopoverDismissed\"\n    />\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!./diff_comment_cell.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!./diff_comment_cell.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport DiffDiscussionReply from './diff_discussion_reply.vue';\nimport DiffDiscussions from './diff_discussions.vue';\nimport DiffLineNoteForm from './diff_line_note_form.vue';\n\nexport default {\n  components: {\n    DiffDiscussions,\n    DiffLineNoteForm,\n    DiffDiscussionReply,\n  },\n  props: {\n    line: {\n      type: Object,\n      required: true,\n    },\n    diffFileHash: {\n      type: String,\n      required: true,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    hasDraft: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    lineRange: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    linePosition: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  methods: {\n    ...mapActions('diffs', ['showCommentForm']),\n  },\n};\n</script>\n\n<template>\n  <div class=\"content\">\n    <diff-discussions\n      v-if=\"line.renderDiscussion\"\n      :line=\"line\"\n      :discussions=\"line.discussions\"\n      :help-page-path=\"helpPagePath\"\n    />\n    <diff-discussion-reply\n      v-if=\"!hasDraft\"\n      :has-form=\"line.hasCommentForm\"\n      :render-reply-placeholder=\"Boolean(line.discussions.length)\"\n      @showNewDiscussionForm=\"showCommentForm({ lineCode: line.line_code, fileHash: diffFileHash })\"\n    >\n      <template #form>\n        <diff-line-note-form\n          :diff-file-hash=\"diffFileHash\"\n          :line=\"line\"\n          :range=\"lineRange\"\n          :note-target-line=\"line\"\n          :help-page-path=\"helpPagePath\"\n          :line-position=\"linePosition\"\n        />\n      </template>\n    </diff-discussion-reply>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_line_note_form.vue?vue&type=template&id=4b6e712e\"\nimport script from \"./diff_line_note_form.vue?vue&type=script&lang=js\"\nexport * from \"./diff_line_note_form.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:\"content discussion-form discussion-form-container discussion-notes\"},[_c('div',{staticClass:\"gl-mb-3 gl-pb-3 gl-text-subtle\"},[_c('multiline-comment-form',{attrs:{\"line\":_vm.line,\"line-range\":_vm.lines,\"comment-line-options\":_vm.commentLineOptions},on:{\"input\":_vm.updateStartLine}})],1),_vm._v(\" \"),_c('note-form',{ref:\"noteForm\",staticClass:\"diff-comment-form gl-mt-3\",attrs:{\"line-code\":_vm.line.line_code,\"line\":_vm.line,\"lines\":_vm.commentLines,\"help-page-path\":_vm.helpPagePath,\"diff-file\":_vm.diffFile,\"show-suggest-popover\":_vm.showSuggestPopover,\"save-button-title\":_vm.__('Comment'),\"autosave-key\":_vm.autosaveKey,\"autofocus\":false},on:{\"handleFormUpdateAddToReview\":_vm.addToReview,\"cancelForm\":_vm.handleCancelCommentForm,\"handleFormUpdate\":_vm.handleSaveNote,\"handleSuggestDismissed\":_vm.setSuggestPopoverDismissed}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./diff_comment_cell.vue?vue&type=template&id=68cb5c0b\"\nimport script from \"./diff_comment_cell.vue?vue&type=script&lang=js\"\nexport * from \"./diff_comment_cell.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","<script>\nimport { GlTooltipDirective, GlIcon, GlLoadingIcon } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { createAlert } from '~/alert';\nimport { __, s__, sprintf } from '~/locale';\nimport { UNFOLD_COUNT, INLINE_DIFF_LINES_KEY } from '../constants';\nimport * as utils from '../store/utils';\n\nconst EXPAND_ALL = 0;\nconst EXPAND_UP = 1;\nconst EXPAND_DOWN = 2;\n\nexport default {\n  i18n: {\n    showMore: sprintf(s__('Diffs|Show %{unfoldCount} lines'), { unfoldCount: UNFOLD_COUNT }),\n    showAll: s__('Diffs|Show all unchanged lines'),\n    expandAllLines: __('Expand all lines'),\n  },\n  components: {\n    GlIcon,\n    GlLoadingIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    SafeHtml,\n  },\n  props: {\n    file: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: true,\n    },\n    isTop: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isBottom: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    inline: {\n      type: Boolean,\n      required: true,\n    },\n    lineCountBetween: {\n      type: Number,\n      required: false,\n      default: -1,\n    },\n  },\n  data() {\n    return { loading: { up: false, down: false, all: false } };\n  },\n  computed: {\n    canExpandUp() {\n      return !this.isBottom;\n    },\n    canExpandDown() {\n      return this.isBottom || !this.isTop;\n    },\n    isLineCountSmall() {\n      return this.lineCountBetween >= 20 || this.lineCountBetween === -1;\n    },\n    showExpandDown() {\n      return this.canExpandDown && this.isLineCountSmall;\n    },\n    showExpandUp() {\n      return this.canExpandUp && this.isLineCountSmall;\n    },\n  },\n  methods: {\n    ...mapActions('diffs', ['loadMoreLines']),\n    getPrevLineNumber(oldLineNumber, newLineNumber) {\n      const index = utils.getPreviousLineIndex(this.file, {\n        oldLineNumber,\n        newLineNumber,\n      });\n\n      return this.file[INLINE_DIFF_LINES_KEY][index - 2]?.new_line || 0;\n    },\n    // eslint-disable-next-line max-params\n    callLoadMoreLines(\n      endpoint,\n      params,\n      lineNumbers,\n      fileHash,\n      isExpandDown = false,\n      nextLineNumbers = {},\n    ) {\n      this.loadMoreLines({ endpoint, params, lineNumbers, fileHash, isExpandDown, nextLineNumbers })\n        .catch(() => {\n          createAlert({\n            message: s__('Diffs|Something went wrong while fetching diff lines.'),\n          });\n        })\n        .finally(() => {\n          this.loading = { up: false, down: false, all: false };\n        });\n    },\n    handleExpandLines(type = EXPAND_ALL) {\n      const endpoint = this.file.context_lines_path;\n      const oldLineNumber = this.line.meta_data.old_pos || 0;\n      const newLineNumber = this.line.meta_data.new_pos || 0;\n      const offset = newLineNumber - oldLineNumber;\n\n      const expandOptions = { endpoint, oldLineNumber, newLineNumber, offset };\n\n      if (type === EXPAND_UP) {\n        this.loading.up = true;\n        this.handleExpandUpLines(expandOptions);\n      } else if (type === EXPAND_DOWN) {\n        this.loading.down = true;\n        this.handleExpandDownLines(expandOptions);\n      } else {\n        this.loading.all = true;\n        this.handleExpandAllLines(expandOptions);\n      }\n    },\n    handleExpandUpLines(expandOptions) {\n      const { endpoint, oldLineNumber, newLineNumber, offset } = expandOptions;\n\n      const bottom = this.isBottom;\n      const lineNumber = newLineNumber - 1;\n      const to = lineNumber;\n      let since = lineNumber - UNFOLD_COUNT;\n      let unfold = true;\n\n      const prevLineNumber = this.getPrevLineNumber(oldLineNumber, newLineNumber);\n      if (since <= prevLineNumber + 1) {\n        since = prevLineNumber + 1;\n        unfold = false;\n      }\n\n      const params = { since, to, bottom, offset, unfold };\n      const lineNumbers = { oldLineNumber, newLineNumber };\n      this.callLoadMoreLines(endpoint, params, lineNumbers, this.file.file_hash);\n    },\n    handleExpandDownLines(expandOptions) {\n      const {\n        endpoint,\n        oldLineNumber: metaOldPos,\n        newLineNumber: metaNewPos,\n        offset,\n      } = expandOptions;\n\n      const bottom = true;\n      const nextLineNumbers = {\n        old_line: metaOldPos,\n        new_line: metaNewPos,\n      };\n\n      let unfold = true;\n      let isExpandDown = false;\n      let oldLineNumber = metaOldPos;\n      let newLineNumber = metaNewPos;\n      let lineNumber = metaNewPos + 1;\n      let since = lineNumber;\n      let to = lineNumber + UNFOLD_COUNT;\n\n      if (!this.isBottom) {\n        const prevLineNumber = this.getPrevLineNumber(oldLineNumber, newLineNumber);\n\n        isExpandDown = true;\n        oldLineNumber = prevLineNumber - offset;\n        newLineNumber = prevLineNumber;\n        lineNumber = prevLineNumber + 1;\n        since = lineNumber;\n        to = lineNumber + UNFOLD_COUNT;\n\n        if (to >= metaNewPos) {\n          to = metaNewPos - 1;\n          unfold = false;\n        }\n      }\n\n      const params = { since, to, bottom, offset, unfold };\n      const lineNumbers = { oldLineNumber, newLineNumber };\n      this.callLoadMoreLines(\n        endpoint,\n        params,\n        lineNumbers,\n        this.file.file_hash,\n        isExpandDown,\n        nextLineNumbers,\n      );\n    },\n    handleExpandAllLines(expandOptions) {\n      const { endpoint, oldLineNumber, newLineNumber, offset } = expandOptions;\n      const bottom = this.isBottom;\n      const unfold = false;\n      let since;\n      let to;\n\n      if (this.isTop) {\n        since = 1;\n        to = newLineNumber - 1;\n      } else if (bottom) {\n        since = newLineNumber + 1;\n        to = -1;\n      } else {\n        const prevLineNumber = this.getPrevLineNumber(oldLineNumber, newLineNumber);\n        since = prevLineNumber + 1;\n        to = newLineNumber - 1;\n      }\n\n      const params = { since, to, bottom, offset, unfold };\n      const lineNumbers = { oldLineNumber, newLineNumber };\n      this.callLoadMoreLines(endpoint, params, lineNumbers, this.file.file_hash);\n    },\n  },\n  EXPAND_DOWN,\n  EXPAND_UP,\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"diff-td diff-line-num gl-flex !gl-w-full gl-flex-col !gl-p-0 !gl-text-center\">\n      <button\n        v-if=\"showExpandDown\"\n        :title=\"s__('Diffs|Next 20 lines')\"\n        :aria-label=\"s__('Diffs|Next 20 lines')\"\n        :disabled=\"loading.down\"\n        type=\"button\"\n        class=\"js-unfold-down diff-line-expand-button gl-rounded-none gl-border-0\"\n        @click=\"handleExpandLines($options.EXPAND_DOWN)\"\n      >\n        <gl-loading-icon v-if=\"loading.down\" size=\"sm\" color=\"dark\" inline />\n        <gl-icon v-else name=\"expand-down\" />\n      </button>\n      <button\n        v-if=\"lineCountBetween !== -1 && lineCountBetween < 20\"\n        :title=\"$options.i18n.expandAllLines\"\n        :aria-label=\"$options.i18n.expandAllLines\"\n        :disabled=\"loading.all\"\n        type=\"button\"\n        class=\"js-unfold-all diff-line-expand-button gl-rounded-none gl-border-0\"\n        @click=\"handleExpandLines()\"\n      >\n        <gl-loading-icon v-if=\"loading.all\" size=\"sm\" color=\"dark\" inline />\n        <gl-icon v-else name=\"expand\" />\n      </button>\n      <button\n        v-if=\"showExpandUp\"\n        :title=\"s__('Diffs|Previous 20 lines')\"\n        :aria-label=\"s__('Diffs|Previous 20 lines')\"\n        :disabled=\"loading.up\"\n        type=\"button\"\n        class=\"js-unfold diff-line-expand-button gl-rounded-none gl-border-0\"\n        @click=\"handleExpandLines($options.EXPAND_UP)\"\n      >\n        <gl-loading-icon v-if=\"loading.up\" size=\"sm\" color=\"dark\" inline />\n        <gl-icon v-else name=\"expand-up\" />\n      </button>\n    </div>\n    <div\n      v-safe-html=\"line.rich_text\"\n      class=\"diff-td line_content left-side gl-whitespace-normal! !gl-flex gl-flex-col gl-justify-center\"\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!./diff_expansion_cell.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!./diff_expansion_cell.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./diff_expansion_cell.vue?vue&type=template&id=60ae2f8c\"\nimport script from \"./diff_expansion_cell.vue?vue&type=script&lang=js\"\nexport * from \"./diff_expansion_cell.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:\"diff-td diff-line-num gl-flex !gl-w-full gl-flex-col !gl-p-0 !gl-text-center\"},[(_vm.showExpandDown)?_c('button',{staticClass:\"js-unfold-down diff-line-expand-button gl-rounded-none gl-border-0\",attrs:{\"title\":_vm.s__('Diffs|Next 20 lines'),\"aria-label\":_vm.s__('Diffs|Next 20 lines'),\"disabled\":_vm.loading.down,\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleExpandLines(_vm.$options.EXPAND_DOWN)}}},[(_vm.loading.down)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"color\":\"dark\",\"inline\":\"\"}}):_c('gl-icon',{attrs:{\"name\":\"expand-down\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.lineCountBetween !== -1 && _vm.lineCountBetween < 20)?_c('button',{staticClass:\"js-unfold-all diff-line-expand-button gl-rounded-none gl-border-0\",attrs:{\"title\":_vm.$options.i18n.expandAllLines,\"aria-label\":_vm.$options.i18n.expandAllLines,\"disabled\":_vm.loading.all,\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleExpandLines()}}},[(_vm.loading.all)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"color\":\"dark\",\"inline\":\"\"}}):_c('gl-icon',{attrs:{\"name\":\"expand\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showExpandUp)?_c('button',{staticClass:\"js-unfold diff-line-expand-button gl-rounded-none gl-border-0\",attrs:{\"title\":_vm.s__('Diffs|Previous 20 lines'),\"aria-label\":_vm.s__('Diffs|Previous 20 lines'),\"disabled\":_vm.loading.up,\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleExpandLines(_vm.$options.EXPAND_UP)}}},[(_vm.loading.up)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"color\":\"dark\",\"inline\":\"\"}}):_c('gl-icon',{attrs:{\"name\":\"expand-up\"}})],1):_vm._e()]),_vm._v(\" \"),_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.line.rich_text),expression:\"line.rich_text\"}],staticClass:\"diff-td line_content left-side gl-whitespace-normal! !gl-flex gl-flex-col gl-justify-center\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\n\nexport const compatFunctionalMixin = Vue.version.startsWith('3')\n  ? {\n      created() {\n        this.props = this.$props;\n        this.listeners = this.$listeners;\n      },\n    }\n  : {\n      created() {\n        throw new Error('This mixin should not be executed in Vue.js 2');\n      },\n    };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"diff-comment-avatar-holders\"},[(_vm.discussionsExpanded)?_c('button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"diff-notes-collapse js-diff-comment-avatar js-diff-comment-button\",attrs:{\"title\":_vm.$options.i18n.HIDE_COMMENTS,\"type\":\"button\",\"aria-label\":_vm.$options.i18n.HIDE_COMMENTS},on:{\"click\":function($event){return _vm.$emit('toggleLineDiscussions')}}},[_c('gl-icon',{attrs:{\"size\":12,\"name\":\"collapse\"}})],1):[_vm._l((_vm.notesInGutter),function(note){return _c('user-avatar-image',{key:note.id,staticClass:\"diff-comment-avatar js-diff-comment-avatar\",attrs:{\"img-src\":note.author.avatar_url,\"size\":24,\"tooltip-text\":_vm.getTooltipText(note),\"pseudo\":\"\",\"css-classes\":\"gl-bg-white\"},nativeOn:{\"click\":function($event){return _vm.$emit('toggleLineDiscussions')}}})}),_vm._v(\" \"),(_vm.moreText)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"diff-comments-more-count js-diff-comment-avatar js-diff-comment-plus gl-flex gl-h-6 gl-min-w-6 gl-items-center gl-justify-center\",attrs:{\"title\":_vm.moreText,\"data-container\":\"body\",\"data-placement\":\"top\",\"role\":\"button\"},on:{\"click\":function($event){return _vm.$emit('toggleLineDiscussions')}}},[_vm._v(\"+\"+_vm._s(_vm.moreCount))]):_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!./diff_gutter_avatars.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!./diff_gutter_avatars.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport { truncate } from '~/lib/utils/text_utility';\nimport { n__ } from '~/locale';\nimport UserAvatarImage from '~/vue_shared/components/user_avatar/user_avatar_image.vue';\nimport { COUNT_OF_AVATARS_IN_GUTTER, LENGTH_OF_AVATAR_TOOLTIP } from '../constants';\nimport { HIDE_COMMENTS } from '../i18n';\n\nexport default {\n  components: {\n    GlIcon,\n    UserAvatarImage,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    discussions: {\n      type: Array,\n      required: true,\n    },\n    discussionsExpanded: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    allDiscussions() {\n      return this.discussions.reduce((acc, note) => acc.concat(note.notes), []);\n    },\n    notesInGutter() {\n      return this.allDiscussions.slice(0, COUNT_OF_AVATARS_IN_GUTTER).map((n) => ({\n        note: n.note,\n        author: n.author,\n      }));\n    },\n    moreCount() {\n      return this.allDiscussions.length - this.notesInGutter.length;\n    },\n    moreText() {\n      if (this.moreCount === 0) {\n        return '';\n      }\n\n      return n__('%d more comment', '%d more comments', this.moreCount);\n    },\n  },\n  methods: {\n    getTooltipText(noteData) {\n      let { note } = noteData;\n      if (note.length > LENGTH_OF_AVATAR_TOOLTIP) {\n        note = truncate(note, LENGTH_OF_AVATAR_TOOLTIP);\n      }\n\n      return `${noteData.author.name}: ${note}`;\n    },\n  },\n  i18n: {\n    HIDE_COMMENTS,\n  },\n};\n</script>\n\n<template>\n  <div class=\"diff-comment-avatar-holders\">\n    <button\n      v-if=\"discussionsExpanded\"\n      v-gl-tooltip\n      :title=\"$options.i18n.HIDE_COMMENTS\"\n      type=\"button\"\n      :aria-label=\"$options.i18n.HIDE_COMMENTS\"\n      class=\"diff-notes-collapse js-diff-comment-avatar js-diff-comment-button\"\n      @click=\"$emit('toggleLineDiscussions')\"\n    >\n      <gl-icon :size=\"12\" name=\"collapse\" />\n    </button>\n    <template v-else>\n      <user-avatar-image\n        v-for=\"note in notesInGutter\"\n        :key=\"note.id\"\n        :img-src=\"note.author.avatar_url\"\n        :size=\"24\"\n        :tooltip-text=\"getTooltipText(note)\"\n        pseudo\n        class=\"diff-comment-avatar js-diff-comment-avatar\"\n        css-classes=\"gl-bg-white\"\n        @click.native=\"$emit('toggleLineDiscussions')\"\n      />\n      <span\n        v-if=\"moreText\"\n        v-gl-tooltip\n        :title=\"moreText\"\n        class=\"diff-comments-more-count js-diff-comment-avatar js-diff-comment-plus gl-flex gl-h-6 gl-min-w-6 gl-items-center gl-justify-center\"\n        data-container=\"body\"\n        data-placement=\"top\"\n        role=\"button\"\n        @click=\"$emit('toggleLineDiscussions')\"\n        >+{{ moreCount }}</span\n      >\n    </template>\n  </div>\n</template>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_row.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_row.vue?vue&type=script&lang=js\"","<script>\n/* eslint-disable vue/no-v-html */\n/**\nNOTE: This file uses v-html over v-safe-html for performance reasons, see:\nhttps://gitlab.com/gitlab-org/gitlab/-/merge_requests/57842\n* */\nimport { memoize } from 'lodash';\nimport { isLoggedIn } from '~/lib/utils/common_utils';\nimport { compatFunctionalMixin } from '~/lib/utils/vue3compat/compat_functional_mixin';\nimport {\n  PARALLEL_DIFF_VIEW_TYPE,\n  CONFLICT_MARKER_THEIR,\n  CONFLICT_OUR,\n  CONFLICT_THEIR,\n  CONFLICT_MARKER,\n} from '../constants';\nimport {\n  getInteropInlineAttributes,\n  getInteropOldSideAttributes,\n  getInteropNewSideAttributes,\n} from '../utils/interoperability';\nimport DiffGutterAvatars from './diff_gutter_avatars.vue';\nimport * as utils from './diff_row_utils';\n\nexport default {\n  DiffGutterAvatars,\n  InlineFindingsGutterIconDropdown: () =>\n    import('ee_component/diffs/components/inline_findings_gutter_icon_dropdown.vue'),\n\n  // Temporary mixin for migration from Vue.js 2 to @vue/compat\n  mixins: [compatFunctionalMixin],\n\n  props: {\n    fileHash: {\n      type: String,\n      required: true,\n    },\n    filePath: {\n      type: String,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: true,\n    },\n    isCommented: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    coverageLoaded: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    inline: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    index: {\n      type: Number,\n      required: true,\n    },\n    isHighlighted: {\n      type: Boolean,\n      required: true,\n    },\n    isFirstHighlightedLine: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isLastHighlightedLine: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    fileLineCoverage: {\n      type: Function,\n      required: true,\n    },\n  },\n  classNameMap: memoize(\n    (props) => {\n      return {\n        [PARALLEL_DIFF_VIEW_TYPE]: !props.inline,\n        commented: props.isCommented,\n      };\n    },\n    (props) => [!props.inline, props.isCommented].join(':'),\n  ),\n  parallelViewLeftLineType: memoize(\n    (props) => {\n      return utils.parallelViewLeftLineType({\n        line: props.line,\n        highlighted: props.isHighlighted,\n        commented: props.isCommented,\n        selectionStart: props.isFirstHighlightedLine,\n        selectionEnd: props.isLastHighlightedLine,\n      });\n    },\n    (props) =>\n      [\n        props.line.left?.type,\n        props.line.right?.type,\n        props.isHighlighted,\n        props.isCommented,\n        props.isFirstHighlightedLine,\n        props.isLastHighlightedLine,\n      ].join(':'),\n  ),\n  coverageStateLeft: memoize(\n    (props) => {\n      if (!props.inline || !props.line.left) return {};\n      return props.fileLineCoverage(props.filePath, props.line.left.new_line);\n    },\n    (props) =>\n      [props.inline, props.filePath, props.line.left?.new_line, props.coverageLoaded].join(':'),\n  ),\n  coverageStateRight: memoize(\n    (props) => {\n      if (!props.line.right) return {};\n      return props.fileLineCoverage(props.filePath, props.line.right.new_line);\n    },\n    (props) => [props.line.right?.new_line, props.filePath, props.coverageLoaded].join(':'),\n  ),\n  showCodequalityLeft: memoize(\n    (props) => {\n      return props.inline && props.line.left?.codequality?.length > 0;\n    },\n    (props) => [props.inline, props.line.left?.codequality?.length].join(':'),\n  ),\n  showCodequalityRight: memoize(\n    (props) => {\n      return !props.inline && props.line.right?.codequality?.length > 0;\n    },\n    (props) => [props.inline, props.line.right?.codequality?.length].join(':'),\n  ),\n  showSecurityLeft: memoize(\n    (props) => {\n      return props.inline && props.line.left?.sast?.length > 0;\n    },\n    (props) => [props.inline, props.line.left?.sast?.length].join(':'),\n  ),\n  showSecurityRight: memoize(\n    (props) => {\n      return !props.inline && props.line.right?.sast?.length > 0;\n    },\n    (props) => [props.inline, props.line.right?.sast?.length].join(':'),\n  ),\n  classNameMapCellLeft: memoize(\n    (props) => {\n      return utils.classNameMapCell({\n        line: props.line?.left,\n        highlighted: props.isHighlighted,\n        commented: props.isCommented,\n        selectionStart: props.isFirstHighlightedLine,\n        selectionEnd: props.isLastHighlightedLine,\n      });\n    },\n    (props) =>\n      [\n        props.line?.left?.type,\n        props.isHighlighted,\n        props.isCommented,\n        props.isFirstHighlightedLine,\n        props.isLastHighlightedLine,\n      ].join(':'),\n  ),\n  classNameMapCellRight: memoize(\n    (props) => {\n      return utils.classNameMapCell({\n        line: props.line?.right,\n        highlighted: props.isHighlighted,\n        commented: props.isCommented,\n        selectionStart: props.isFirstHighlightedLine,\n        selectionEnd: props.isLastHighlightedLine,\n      });\n    },\n    (props) =>\n      [\n        props.line?.right?.type,\n        props.isHighlighted,\n        props.isCommented,\n        props.isFirstHighlightedLine,\n        props.isLastHighlightedLine,\n      ].join(':'),\n  ),\n  shouldRenderCommentButton: memoize(\n    (props, side) => {\n      return (\n        isLoggedIn() && !props.line[`isContextLine${side}`] && !props.line[`isMetaLine${side}`]\n      );\n    },\n    (props, side) =>\n      [props.line[`isContextLine${side}`], props.line[`isMetaLine${side}`]].join(':'),\n  ),\n  interopLeftAttributes(props) {\n    if (props.inline) {\n      return getInteropInlineAttributes(props.line.left);\n    }\n\n    return getInteropOldSideAttributes(props.line.left);\n  },\n  interopRightAttributes(props) {\n    return getInteropNewSideAttributes(props.line.right);\n  },\n  lineContent: (line) => {\n    if (line.isConflictMarker) {\n      return line.type === CONFLICT_MARKER_THEIR ? 'HEAD//our changes' : 'origin//their changes';\n    }\n\n    return line.rich_text;\n  },\n  CONFLICT_MARKER,\n  CONFLICT_MARKER_THEIR,\n  CONFLICT_OUR,\n  CONFLICT_THEIR,\n};\n</script>\n\n<!-- eslint-disable-next-line vue/no-deprecated-functional-template -->\n<template functional>\n  <div\n    :class=\"[\n      $options.classNameMap(props),\n      { expansion: props.line.left && props.line.left.type === 'expanded' },\n    ]\"\n    class=\"diff-grid-row diff-tr line_holder\"\n  >\n    <div\n      :id=\"props.line.left && props.line.left.line_code\"\n      data-testid=\"left-side\"\n      class=\"diff-grid-left left-side\"\n      v-bind=\"$options.interopLeftAttributes(props)\"\n      @dragover.prevent\n      @dragenter=\"listeners.enterdragging({ ...props.line.left, index: props.index })\"\n      @dragend=\"listeners.stopdragging\"\n    >\n      <template v-if=\"props.line.left && props.line.left.type !== $options.CONFLICT_MARKER\">\n        <div\n          :class=\"$options.classNameMapCellLeft(props)\"\n          data-testid=\"left-line-number\"\n          class=\"diff-td diff-line-num\"\n        >\n          <span\n            v-if=\"\n              !props.line.left.isConflictMarker &&\n              $options.shouldRenderCommentButton(props, 'Left') &&\n              !props.line.hasDiscussionsLeft\n            \"\n            class=\"add-diff-note tooltip-wrapper has-tooltip\"\n            :title=\"props.line.left.addCommentTooltip\"\n          >\n            <div\n              data-testid=\"left-comment-button\"\n              role=\"button\"\n              tabindex=\"0\"\n              :draggable=\"!props.line.left.commentsDisabled\"\n              type=\"button\"\n              class=\"add-diff-note unified-diff-components-diff-note-button note-button js-add-diff-note-button\"\n              :disabled=\"props.line.left.commentsDisabled\"\n              :aria-disabled=\"props.line.left.commentsDisabled\"\n              @click=\"\n                !props.line.left.commentsDisabled &&\n                  listeners.showCommentForm(props.line.left.line_code)\n              \"\n              @keydown.enter=\"\n                !props.line.left.commentsDisabled &&\n                  listeners.showCommentForm(props.line.left.line_code)\n              \"\n              @keydown.space=\"\n                !props.line.left.commentsDisabled &&\n                  listeners.showCommentForm(props.line.left.line_code)\n              \"\n              @dragstart=\"\n                !props.line.left.commentsDisabled &&\n                  listeners.startdragging({\n                    event: $event,\n                    line: { ...props.line.left, index: props.index },\n                  })\n              \"\n            ></div>\n          </span>\n          <a\n            v-if=\"props.line.left.old_line && props.line.left.type !== $options.CONFLICT_THEIR\"\n            :data-linenumber=\"props.line.left.old_line\"\n            :href=\"props.line.lineHrefOld\"\n            @click=\"listeners.setHighlightedRow({ lineCode: props.line.lineCode, event: $event })\"\n          >\n          </a>\n          <component\n            :is=\"$options.DiffGutterAvatars\"\n            v-if=\"props.line.hasDiscussionsLeft\"\n            :discussions=\"props.line.left.discussions\"\n            :discussions-expanded=\"props.line.left.discussionsExpanded\"\n            data-testid=\"left-discussions\"\n            @toggleLineDiscussions=\"\n              listeners.toggleLineDiscussions({\n                lineCode: props.line.left.line_code,\n                expanded: !props.line.left.discussionsExpanded,\n              })\n            \"\n          />\n        </div>\n        <div\n          v-if=\"props.inline\"\n          :class=\"$options.classNameMapCellLeft(props)\"\n          class=\"diff-td diff-line-num\"\n        >\n          <a\n            v-if=\"props.line.left.new_line && props.line.left.type !== $options.CONFLICT_OUR\"\n            :data-linenumber=\"props.line.left.new_line\"\n            :href=\"props.line.lineHrefOld\"\n            @click=\"listeners.setHighlightedRow({ lineCode: props.line.lineCode, event: $event })\"\n          >\n          </a>\n        </div>\n        <div\n          :title=\"$options.coverageStateLeft(props).text\"\n          :data-tooltip-custom-class=\"$options.coverageStateLeft(props).class\"\n          :class=\"[\n            $options.parallelViewLeftLineType(props),\n            $options.coverageStateLeft(props).class,\n          ]\"\n          class=\"diff-td line-coverage left-side has-tooltip\"\n        ></div>\n        <div\n          class=\"diff-td line-inline-findings left-side\"\n          :class=\"$options.parallelViewLeftLineType(props)\"\n        >\n          <component\n            :is=\"$options.InlineFindingsGutterIconDropdown\"\n            v-if=\"$options.showCodequalityLeft(props) || $options.showSecurityLeft(props)\"\n            :code-quality=\"props.line.left.codequality\"\n            :sast=\"props.line.left.sast\"\n            :file-path=\"props.filePath\"\n            @showInlineFindings=\"\n              listeners.toggleCodeQualityFindings(\n                props.line.left.codequality[0]\n                  ? props.line.left.codequality[0].line\n                  : props.line.left.sast[0].line,\n              )\n            \"\n          />\n        </div>\n        <div\n          :key=\"props.line.left.line_code\"\n          :class=\"[\n            $options.parallelViewLeftLineType(props),\n            { parallel: !props.inline, 'gl-font-bold': props.line.left.isConflictMarker },\n          ]\"\n          class=\"diff-td line_content with-coverage left-side\"\n          data-testid=\"left-content\"\n          v-html=\"\n            $options.lineContent(props.line.left) /* v-html for performance, see top of file */\n          \"\n        ></div>\n      </template>\n      <template\n        v-else-if=\"\n          !props.inline || (props.line.left && props.line.left.type === $options.CONFLICT_MARKER)\n        \"\n      >\n        <div\n          data-testid=\"left-empty-cell\"\n          class=\"diff-td diff-line-num old_line empty-cell\"\n          :class=\"$options.classNameMapCellLeft(props)\"\n        >\n          &nbsp;\n        </div>\n        <div\n          class=\"diff-td line-coverage left-side empty-cell\"\n          :class=\"$options.classNameMapCellLeft(props)\"\n        ></div>\n        <div\n          class=\"diff-td line-inline-findings left-side empty-cell\"\n          :class=\"$options.classNameMapCellLeft(props)\"\n        ></div>\n        <div\n          class=\"diff-td line_content with-coverage left-side empty-cell\"\n          :class=\"[{ parallel: !props.inline }, ...$options.classNameMapCellLeft(props)]\"\n        ></div>\n      </template>\n    </div>\n    <div\n      v-if=\"!props.inline\"\n      :id=\"props.line.right && props.line.right.line_code\"\n      data-testid=\"right-side\"\n      class=\"diff-grid-right right-side\"\n      v-bind=\"$options.interopRightAttributes(props)\"\n      @dragover.prevent\n      @dragenter=\"listeners.enterdragging({ ...props.line.right, index: props.index })\"\n      @dragend=\"listeners.stopdragging\"\n    >\n      <template v-if=\"props.line.right\">\n        <div :class=\"$options.classNameMapCellRight(props)\" class=\"diff-td diff-line-num new_line\">\n          <template v-if=\"props.line.right.type !== $options.CONFLICT_MARKER_THEIR\">\n            <span\n              v-if=\"\n                $options.shouldRenderCommentButton(props, 'Right') &&\n                !props.line.hasDiscussionsRight\n              \"\n              class=\"add-diff-note tooltip-wrapper has-tooltip\"\n              :title=\"props.line.right.addCommentTooltip\"\n            >\n              <div\n                data-testid=\"right-comment-button\"\n                role=\"button\"\n                tabindex=\"0\"\n                :draggable=\"!props.line.right.commentsDisabled\"\n                type=\"button\"\n                class=\"add-diff-note unified-diff-components-diff-note-button note-button js-add-diff-note-button\"\n                :disabled=\"props.line.right.commentsDisabled\"\n                :aria-disabled=\"props.line.right.commentsDisabled\"\n                @click=\"\n                  !props.line.right.commentsDisabled &&\n                    listeners.showCommentForm(props.line.right.line_code)\n                \"\n                @keydown.enter=\"\n                  !props.line.right.commentsDisabled &&\n                    listeners.showCommentForm(props.line.right.line_code)\n                \"\n                @keydown.space=\"\n                  !props.line.right.commentsDisabled &&\n                    listeners.showCommentForm(props.line.right.line_code)\n                \"\n                @dragstart=\"\n                  !props.line.right.commentsDisabled &&\n                    listeners.startdragging({\n                      event: $event,\n                      line: { ...props.line.right, index: props.index },\n                    })\n                \"\n              ></div>\n            </span>\n          </template>\n          <a\n            v-if=\"props.line.right.new_line\"\n            :data-linenumber=\"props.line.right.new_line\"\n            :href=\"props.line.lineHrefNew\"\n            @click=\"listeners.setHighlightedRow({ lineCode: props.line.lineCode, event: $event })\"\n          >\n          </a>\n          <component\n            :is=\"$options.DiffGutterAvatars\"\n            v-if=\"props.line.hasDiscussionsRight\"\n            :discussions=\"props.line.right.discussions\"\n            :discussions-expanded=\"props.line.right.discussionsExpanded\"\n            data-testid=\"right-discussions\"\n            @toggleLineDiscussions=\"\n              listeners.toggleLineDiscussions({\n                lineCode: props.line.right.line_code,\n                expanded: !props.line.right.discussionsExpanded,\n              })\n            \"\n          />\n        </div>\n        <div\n          :title=\"$options.coverageStateRight(props).text\"\n          :data-tooltip-custom-class=\"$options.coverageStateRight(props).class\"\n          :class=\"[\n            props.line.right.type,\n            $options.coverageStateRight(props).class,\n            ...$options.classNameMapCellRight(props),\n          ]\"\n          class=\"diff-td line-coverage right-side has-tooltip\"\n        ></div>\n        <div\n          class=\"diff-td line-inline-findings right-side\"\n          :class=\"$options.classNameMapCellRight(props)\"\n        >\n          <component\n            :is=\"$options.InlineFindingsGutterIconDropdown\"\n            v-if=\"$options.showCodequalityRight(props) || $options.showSecurityRight(props)\"\n            :code-quality=\"props.line.right.codequality\"\n            :sast=\"props.line.right.sast\"\n            :file-path=\"props.filePath\"\n            data-testid=\"inlineFindingsIcon\"\n            @showInlineFindings=\"\n              listeners.toggleCodeQualityFindings(\n                props.line.right.codequality[0]\n                  ? props.line.right.codequality[0].line\n                  : props.line.right.sast[0].line,\n              )\n            \"\n          />\n        </div>\n        <div\n          :key=\"props.line.right.rich_text\"\n          :class=\"[\n            props.line.right.type,\n            {\n              'gl-font-bold': props.line.right.type === $options.CONFLICT_MARKER_THEIR,\n            },\n            ...$options.classNameMapCellRight(props),\n          ]\"\n          class=\"diff-td line_content with-coverage right-side parallel\"\n          v-html=\"\n            $options.lineContent(props.line.right) /* v-html for performance, see top of file */\n          \"\n        ></div>\n      </template>\n      <template v-else>\n        <div\n          data-testid=\"right-empty-cell\"\n          class=\"diff-td diff-line-num old_line empty-cell\"\n          :class=\"$options.classNameMapCellRight(props)\"\n        ></div>\n        <div\n          class=\"diff-td line-coverage right-side empty-cell\"\n          :class=\"$options.classNameMapCellRight(props)\"\n        ></div>\n        <div\n          class=\"diff-td line-inline-findings right-side empty-cell\"\n          :class=\"$options.classNameMapCellRight(props)\"\n        ></div>\n        <div\n          class=\"diff-td line_content with-coverage right-side empty-cell parallel\"\n          :class=\"$options.classNameMapCellRight(props)\"\n        ></div>\n      </template>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_gutter_avatars.vue?vue&type=template&id=bb8bec18\"\nimport script from \"./diff_gutter_avatars.vue?vue&type=script&lang=js\"\nexport * from \"./diff_gutter_avatars.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","const OLD = 'old';\nconst NEW = 'new';\nconst ATTR_PREFIX = 'data-interop-';\n\nexport const ATTR_TYPE = `${ATTR_PREFIX}type`;\nexport const ATTR_LINE = `${ATTR_PREFIX}line`;\nexport const ATTR_NEW_LINE = `${ATTR_PREFIX}new-line`;\nexport const ATTR_OLD_LINE = `${ATTR_PREFIX}old-line`;\n\nexport const getInteropInlineAttributes = (line) => {\n  if (!line) {\n    return null;\n  }\n\n  const interopType = line.type?.startsWith(OLD) ? OLD : NEW;\n\n  const interopLine = interopType === OLD ? line.old_line : line.new_line;\n\n  return {\n    [ATTR_TYPE]: interopType,\n    [ATTR_LINE]: interopLine,\n    [ATTR_NEW_LINE]: line.new_line,\n    [ATTR_OLD_LINE]: line.old_line,\n  };\n};\n\nexport const getInteropOldSideAttributes = (line) => {\n  if (!line) {\n    return null;\n  }\n\n  return {\n    [ATTR_TYPE]: OLD,\n    [ATTR_LINE]: line.old_line,\n    [ATTR_OLD_LINE]: line.old_line,\n  };\n};\n\nexport const getInteropNewSideAttributes = (line) => {\n  if (!line) {\n    return null;\n  }\n\n  return {\n    [ATTR_TYPE]: NEW,\n    [ATTR_LINE]: line.new_line,\n    [ATTR_NEW_LINE]: line.new_line,\n  };\n};\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_view.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!./diff_view.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapState, mapActions } from 'vuex';\nimport { throttle } from 'lodash';\nimport { IdState } from 'vendor/vue-virtual-scroller';\nimport DraftNote from '~/batch_comments/components/draft_note.vue';\nimport draftCommentsMixin from '~/diffs/mixins/draft_comments';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { getCommentedLines } from '~/notes/components/multiline_comment_utils';\nimport { hide } from '~/tooltips';\nimport { countLinesInBetween } from '~/diffs/utils/diff_file';\nimport { pickDirection } from '../utils/diff_line';\nimport DiffCommentCell from './diff_comment_cell.vue';\nimport DiffExpansionCell from './diff_expansion_cell.vue';\nimport DiffRow from './diff_row.vue';\nimport { isHighlighted } from './diff_row_utils';\n\nexport default {\n  components: {\n    DiffExpansionCell,\n    DiffRow,\n    DiffCommentCell,\n    DraftNote,\n  },\n  mixins: [\n    draftCommentsMixin,\n    IdState({ idProp: (vm) => vm.diffFile.file_hash }),\n    glFeatureFlagsMixin(),\n  ],\n  props: {\n    diffFile: {\n      type: Object,\n      required: true,\n    },\n    diffLines: {\n      type: Array,\n      required: true,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    inline: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    codequalityData: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    sastData: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  idState() {\n    return {\n      dragStart: null,\n      updatedLineRange: null,\n    };\n  },\n  computed: {\n    ...mapGetters('diffs', ['commitId', 'fileLineCoverage']),\n    ...mapState('diffs', ['highlightedRow', 'coverageLoaded', 'selectedCommentPosition']),\n    ...mapState({\n      selectedCommentPosition: ({ notes }) => notes.selectedCommentPosition,\n      selectedCommentPositionHover: ({ notes }) => notes.selectedCommentPositionHover,\n    }),\n    diffLinesLength() {\n      return this.diffLines.length;\n    },\n    commentedLines() {\n      return getCommentedLines(\n        this.selectedCommentPosition || this.selectedCommentPositionHover,\n        this.diffLines,\n      );\n    },\n    hasInlineFindingsChanges() {\n      return (\n        this.codequalityData?.files?.[this.diffFile.file_path]?.length > 0 ||\n        this.sastData?.added?.length > 0\n      );\n    },\n  },\n  created() {\n    this.onDragOverThrottled = throttle((line) => this.onDragOver(line), 100, { leading: true });\n  },\n  methods: {\n    ...mapActions(['setSelectedCommentPosition']),\n    ...mapActions('diffs', ['showCommentForm', 'setHighlightedRow', 'toggleLineDiscussions']),\n    showCommentLeft(line) {\n      return line.left && !line.right;\n    },\n    showCommentRight(line) {\n      return line.right && !line.left;\n    },\n    onStartDragging({ event = {}, line }) {\n      if (event.target?.parentNode) {\n        hide(event.target.parentNode);\n      }\n      this.idState.dragStart = line;\n    },\n    onDragOver(line) {\n      if (line.chunk !== this.idState.dragStart.chunk) return;\n\n      let start = this.idState.dragStart;\n      let end = line;\n\n      if (this.idState.dragStart.index >= line.index) {\n        start = line;\n        end = this.idState.dragStart;\n      }\n\n      this.idState.updatedLineRange = { start, end };\n\n      this.setSelectedCommentPosition(this.idState.updatedLineRange);\n    },\n    onStopDragging() {\n      this.showCommentForm({\n        lineCode: this.idState.updatedLineRange?.end?.line_code,\n        fileHash: this.diffFile.file_hash,\n      });\n      this.idState.dragStart = null;\n    },\n    singleLineComment(code, line) {\n      const lineDir = pickDirection({ line, code });\n\n      this.idState.updatedLineRange = {\n        start: lineDir,\n        end: lineDir,\n      };\n\n      this.showCommentForm({ lineCode: lineDir.line_code, fileHash: this.diffFile.file_hash });\n    },\n    isHighlighted(line) {\n      return isHighlighted(\n        this.highlightedRow,\n        line.left?.line_code ? line.left : line.right,\n        false,\n      );\n    },\n    isFirstHighlightedLine(line) {\n      const lineCode = line.left?.line_code || line.right?.line_code;\n      return lineCode && lineCode === this.selectedCommentPosition?.start.line_code;\n    },\n    isLastHighlightedLine(line) {\n      const lineCode = line.left?.line_code || line.right?.line_code;\n      return lineCode && lineCode === this.selectedCommentPosition?.end.line_code;\n    },\n    handleParallelLineMouseDown(e) {\n      const line = e.target.closest('.diff-td');\n      if (line) {\n        const table = line.closest('.diff-table');\n        table.classList.remove('left-side-selected', 'right-side-selected');\n        const [lineClass] = ['left-side', 'right-side'].filter((name) =>\n          line.classList.contains(name),\n        );\n\n        if (lineClass) {\n          table.classList.add(`${lineClass}-selected`);\n        }\n      }\n    },\n    getCountBetweenIndex(index) {\n      return countLinesInBetween(this.diffLines, index);\n    },\n    getCodeQualityLine(line) {\n      return (\n        (line.left ?? line.right)?.codequality?.[0]?.line ||\n        (line.left ?? line.right)?.sast?.[0]?.line\n      );\n    },\n    lineDrafts(line, side) {\n      return (line[side]?.lineDrafts || []).filter((entry) => entry.isDraft);\n    },\n    lineHasDrafts(line, side) {\n      return this.lineDrafts(line, side).length > 0;\n    },\n  },\n  userColorScheme: window.gon.user_color_scheme,\n};\n</script>\n\n<template>\n  <div\n    :class=\"[\n      $options.userColorScheme,\n      { 'inline-diff-view': inline, 'with-inline-findings': hasInlineFindingsChanges },\n    ]\"\n    :data-commit-id=\"commitId\"\n    class=\"diff-grid diff-table code diff-wrap-lines js-syntax-highlight text-file\"\n    @mousedown=\"handleParallelLineMouseDown\"\n  >\n    <template v-for=\"(line, index) in diffLines\">\n      <div\n        v-if=\"line.isMatchLineLeft || line.isMatchLineRight\"\n        :key=\"`expand-${index}`\"\n        class=\"diff-grid-row diff-tr line_holder match expansion\"\n      >\n        <diff-expansion-cell\n          :file=\"diffFile\"\n          :line=\"line.left\"\n          :is-top=\"index === 0\"\n          :is-bottom=\"index + 1 === diffLinesLength\"\n          :inline=\"inline\"\n          :line-count-between=\"getCountBetweenIndex(index)\"\n          :class=\"{ parallel: !inline }\"\n          class=\"diff-grid-left diff-grid-2-col left-side\"\n        />\n        <diff-expansion-cell\n          v-if=\"!inline\"\n          :file=\"diffFile\"\n          :line=\"line.left\"\n          :is-top=\"index === 0\"\n          :is-bottom=\"index + 1 === diffLinesLength\"\n          :inline=\"inline\"\n          :line-count-between=\"getCountBetweenIndex(index)\"\n          :class=\"{ parallel: !inline }\"\n          class=\"diff-grid-right diff-grid-2-col right-side\"\n        />\n      </div>\n      <diff-row\n        v-if=\"!line.isMatchLineLeft && !line.isMatchLineRight\"\n        :key=\"line.lineCode\"\n        :file-hash=\"diffFile.file_hash\"\n        :file-path=\"diffFile.file_path\"\n        :line=\"line\"\n        :is-bottom=\"index + 1 === diffLinesLength\"\n        :is-commented=\"index >= commentedLines.startLine && index <= commentedLines.endLine\"\n        :is-highlighted=\"isHighlighted(line)\"\n        :is-first-highlighted-line=\"\n          isFirstHighlightedLine(line) || index === commentedLines.startLine\n        \"\n        :is-last-highlighted-line=\"isLastHighlightedLine(line) || index === commentedLines.endLine\"\n        :inline=\"inline\"\n        :index=\"index\"\n        :file-line-coverage=\"fileLineCoverage\"\n        :coverage-loaded=\"coverageLoaded\"\n        @showCommentForm=\"(code) => singleLineComment(code, line)\"\n        @setHighlightedRow=\"setHighlightedRow\"\n        @toggleLineDiscussions=\"\n          ({ lineCode, expanded }) =>\n            toggleLineDiscussions({ lineCode, fileHash: diffFile.file_hash, expanded })\n        \"\n        @enterdragging=\"onDragOverThrottled\"\n        @startdragging=\"onStartDragging\"\n        @stopdragging=\"onStopDragging\"\n      />\n      <div\n        v-if=\"line.renderCommentRow\"\n        :key=\"`dcr-${line.lineCode}`\"\n        :class=\"line.commentRowClasses\"\n        class=\"diff-grid-comments diff-tr notes_holder\"\n      >\n        <div\n          v-if=\"line.left || !inline\"\n          :class=\"{ parallel: !inline }\"\n          class=\"diff-td notes-content old\"\n        >\n          <diff-comment-cell\n            v-if=\"line.left && (line.left.renderDiscussion || line.left.hasCommentForm)\"\n            :line=\"line.left\"\n            :line-range=\"idState.updatedLineRange\"\n            :diff-file-hash=\"diffFile.file_hash\"\n            :help-page-path=\"helpPagePath\"\n            line-position=\"left\"\n          />\n        </div>\n        <div\n          v-if=\"line.right || !inline\"\n          :class=\"{ parallel: !inline }\"\n          class=\"diff-td notes-content new\"\n        >\n          <diff-comment-cell\n            v-if=\"line.right && (line.right.renderDiscussion || line.right.hasCommentForm)\"\n            :line=\"line.right\"\n            :line-range=\"idState.updatedLineRange\"\n            :diff-file-hash=\"diffFile.file_hash\"\n            :line-index=\"index\"\n            :help-page-path=\"helpPagePath\"\n            line-position=\"right\"\n          />\n        </div>\n      </div>\n      <div\n        v-if=\"shouldRenderParallelDraftRow(diffFile.file_hash, line)\"\n        :key=\"`drafts-${line.lineCode}`\"\n        :class=\"line.draftRowClasses\"\n        class=\"diff-grid-drafts diff-tr notes_holder\"\n      >\n        <div\n          v-if=\"!inline || lineHasDrafts(line, 'left')\"\n          class=\"diff-td notes-content parallel old\"\n        >\n          <div v-for=\"draft in lineDrafts(line, 'left')\" :key=\"draft.id\" class=\"content\">\n            <article class=\"note-wrapper\">\n              <ul class=\"notes draft-notes\">\n                <draft-note :draft=\"draft\" :line=\"line.left\" :autosave-key=\"autosaveKey\" />\n              </ul>\n            </article>\n          </div>\n        </div>\n        <div\n          v-if=\"!inline || lineHasDrafts(line, 'right')\"\n          class=\"diff-td notes-content parallel new\"\n        >\n          <div v-for=\"draft in lineDrafts(line, 'right')\" :key=\"draft.id\" class=\"content\">\n            <article class=\"note-wrapper\">\n              <ul class=\"notes draft-notes\">\n                <draft-note :draft=\"draft\" :line=\"line.right\" :autosave-key=\"autosaveKey\" />\n              </ul>\n            </article>\n          </div>\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_row.vue?vue&type=template&id=6fb5ad0c&functional=true\"\nimport script from \"./diff_row.vue?vue&type=script&lang=js\"\nexport * from \"./diff_row.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  true,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(_c,_vm){return _c('div',{staticClass:\"diff-grid-row diff-tr line_holder\",class:[\n    _vm.$options.classNameMap(_vm.props),\n    { expansion: _vm.props.line.left && _vm.props.line.left.type === 'expanded' },\n  ]},[_c('div',_vm._b({staticClass:\"diff-grid-left left-side\",attrs:{\"id\":_vm.props.line.left && _vm.props.line.left.line_code,\"data-testid\":\"left-side\"},on:{\"dragover\":function($event){$event.preventDefault();},\"dragenter\":function($event){return _vm.listeners.enterdragging({ ..._vm.props.line.left, index: _vm.props.index })},\"dragend\":_vm.listeners.stopdragging}},'div',_vm.$options.interopLeftAttributes(_vm.props),false),[(_vm.props.line.left && _vm.props.line.left.type !== _vm.$options.CONFLICT_MARKER)?[_c('div',{staticClass:\"diff-td diff-line-num\",class:_vm.$options.classNameMapCellLeft(_vm.props),attrs:{\"data-testid\":\"left-line-number\"}},[(\n            !_vm.props.line.left.isConflictMarker &&\n            _vm.$options.shouldRenderCommentButton(_vm.props, 'Left') &&\n            !_vm.props.line.hasDiscussionsLeft\n          )?_c('span',{staticClass:\"add-diff-note tooltip-wrapper has-tooltip\",attrs:{\"title\":_vm.props.line.left.addCommentTooltip}},[_c('div',{staticClass:\"add-diff-note unified-diff-components-diff-note-button note-button js-add-diff-note-button\",attrs:{\"data-testid\":\"left-comment-button\",\"role\":\"button\",\"tabindex\":\"0\",\"draggable\":!_vm.props.line.left.commentsDisabled,\"type\":\"button\",\"disabled\":_vm.props.line.left.commentsDisabled,\"aria-disabled\":_vm.props.line.left.commentsDisabled},on:{\"click\":function($event){!_vm.props.line.left.commentsDisabled &&\n                _vm.listeners.showCommentForm(_vm.props.line.left.line_code)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;!_vm.props.line.left.commentsDisabled &&\n                _vm.listeners.showCommentForm(_vm.props.line.left.line_code)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;!_vm.props.line.left.commentsDisabled &&\n                _vm.listeners.showCommentForm(_vm.props.line.left.line_code)}],\"dragstart\":function($event){!_vm.props.line.left.commentsDisabled &&\n                _vm.listeners.startdragging({\n                  event: $event,\n                  line: { ..._vm.props.line.left, index: _vm.props.index },\n                })}}})]):_vm._e(),_vm._v(\" \"),(_vm.props.line.left.old_line && _vm.props.line.left.type !== _vm.$options.CONFLICT_THEIR)?_c('a',{attrs:{\"data-linenumber\":_vm.props.line.left.old_line,\"href\":_vm.props.line.lineHrefOld},on:{\"click\":function($event){return _vm.listeners.setHighlightedRow({ lineCode: _vm.props.line.lineCode, event: $event })}}}):_vm._e(),_vm._v(\" \"),(_vm.props.line.hasDiscussionsLeft)?_c(_vm.$options.DiffGutterAvatars,{tag:\"component\",attrs:{\"discussions\":_vm.props.line.left.discussions,\"discussions-expanded\":_vm.props.line.left.discussionsExpanded,\"data-testid\":\"left-discussions\"},on:{\"toggleLineDiscussions\":function($event){return _vm.listeners.toggleLineDiscussions({\n              lineCode: _vm.props.line.left.line_code,\n              expanded: !_vm.props.line.left.discussionsExpanded,\n            })}}}):_vm._e()],1),_vm._v(\" \"),(_vm.props.inline)?_c('div',{staticClass:\"diff-td diff-line-num\",class:_vm.$options.classNameMapCellLeft(_vm.props)},[(_vm.props.line.left.new_line && _vm.props.line.left.type !== _vm.$options.CONFLICT_OUR)?_c('a',{attrs:{\"data-linenumber\":_vm.props.line.left.new_line,\"href\":_vm.props.line.lineHrefOld},on:{\"click\":function($event){return _vm.listeners.setHighlightedRow({ lineCode: _vm.props.line.lineCode, event: $event })}}}):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-coverage left-side has-tooltip\",class:[\n          _vm.$options.parallelViewLeftLineType(_vm.props),\n          _vm.$options.coverageStateLeft(_vm.props).class,\n        ],attrs:{\"title\":_vm.$options.coverageStateLeft(_vm.props).text,\"data-tooltip-custom-class\":_vm.$options.coverageStateLeft(_vm.props).class}}),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-inline-findings left-side\",class:_vm.$options.parallelViewLeftLineType(_vm.props)},[(_vm.$options.showCodequalityLeft(_vm.props) || _vm.$options.showSecurityLeft(_vm.props))?_c(_vm.$options.InlineFindingsGutterIconDropdown,{tag:\"component\",attrs:{\"code-quality\":_vm.props.line.left.codequality,\"sast\":_vm.props.line.left.sast,\"file-path\":_vm.props.filePath},on:{\"showInlineFindings\":function($event){return _vm.listeners.toggleCodeQualityFindings(\n              _vm.props.line.left.codequality[0]\n                ? _vm.props.line.left.codequality[0].line\n                : _vm.props.line.left.sast[0].line,\n            )}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{key:_vm.props.line.left.line_code,staticClass:\"diff-td line_content with-coverage left-side\",class:[\n          _vm.$options.parallelViewLeftLineType(_vm.props),\n          { parallel: !_vm.props.inline, 'gl-font-bold': _vm.props.line.left.isConflictMarker },\n        ],attrs:{\"data-testid\":\"left-content\"},domProps:{\"innerHTML\":_vm._s(\n          _vm.$options.lineContent(_vm.props.line.left) /* v-html for performance, see top of file */\n        )}})]:(\n        !_vm.props.inline || (_vm.props.line.left && _vm.props.line.left.type === _vm.$options.CONFLICT_MARKER)\n      )?[_c('div',{staticClass:\"diff-td diff-line-num old_line empty-cell\",class:_vm.$options.classNameMapCellLeft(_vm.props),attrs:{\"data-testid\":\"left-empty-cell\"}},[_vm._v(\"\\n         \\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-coverage left-side empty-cell\",class:_vm.$options.classNameMapCellLeft(_vm.props)}),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-inline-findings left-side empty-cell\",class:_vm.$options.classNameMapCellLeft(_vm.props)}),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line_content with-coverage left-side empty-cell\",class:[{ parallel: !_vm.props.inline }, ..._vm.$options.classNameMapCellLeft(_vm.props)]})]:_vm._e()],2),_vm._v(\" \"),(!_vm.props.inline)?_c('div',_vm._b({staticClass:\"diff-grid-right right-side\",attrs:{\"id\":_vm.props.line.right && _vm.props.line.right.line_code,\"data-testid\":\"right-side\"},on:{\"dragover\":function($event){$event.preventDefault();},\"dragenter\":function($event){return _vm.listeners.enterdragging({ ..._vm.props.line.right, index: _vm.props.index })},\"dragend\":_vm.listeners.stopdragging}},'div',_vm.$options.interopRightAttributes(_vm.props),false),[(_vm.props.line.right)?[_c('div',{staticClass:\"diff-td diff-line-num new_line\",class:_vm.$options.classNameMapCellRight(_vm.props)},[(_vm.props.line.right.type !== _vm.$options.CONFLICT_MARKER_THEIR)?[(\n              _vm.$options.shouldRenderCommentButton(_vm.props, 'Right') &&\n              !_vm.props.line.hasDiscussionsRight\n            )?_c('span',{staticClass:\"add-diff-note tooltip-wrapper has-tooltip\",attrs:{\"title\":_vm.props.line.right.addCommentTooltip}},[_c('div',{staticClass:\"add-diff-note unified-diff-components-diff-note-button note-button js-add-diff-note-button\",attrs:{\"data-testid\":\"right-comment-button\",\"role\":\"button\",\"tabindex\":\"0\",\"draggable\":!_vm.props.line.right.commentsDisabled,\"type\":\"button\",\"disabled\":_vm.props.line.right.commentsDisabled,\"aria-disabled\":_vm.props.line.right.commentsDisabled},on:{\"click\":function($event){!_vm.props.line.right.commentsDisabled &&\n                  _vm.listeners.showCommentForm(_vm.props.line.right.line_code)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;!_vm.props.line.right.commentsDisabled &&\n                  _vm.listeners.showCommentForm(_vm.props.line.right.line_code)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;!_vm.props.line.right.commentsDisabled &&\n                  _vm.listeners.showCommentForm(_vm.props.line.right.line_code)}],\"dragstart\":function($event){!_vm.props.line.right.commentsDisabled &&\n                  _vm.listeners.startdragging({\n                    event: $event,\n                    line: { ..._vm.props.line.right, index: _vm.props.index },\n                  })}}})]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.props.line.right.new_line)?_c('a',{attrs:{\"data-linenumber\":_vm.props.line.right.new_line,\"href\":_vm.props.line.lineHrefNew},on:{\"click\":function($event){return _vm.listeners.setHighlightedRow({ lineCode: _vm.props.line.lineCode, event: $event })}}}):_vm._e(),_vm._v(\" \"),(_vm.props.line.hasDiscussionsRight)?_c(_vm.$options.DiffGutterAvatars,{tag:\"component\",attrs:{\"discussions\":_vm.props.line.right.discussions,\"discussions-expanded\":_vm.props.line.right.discussionsExpanded,\"data-testid\":\"right-discussions\"},on:{\"toggleLineDiscussions\":function($event){return _vm.listeners.toggleLineDiscussions({\n              lineCode: _vm.props.line.right.line_code,\n              expanded: !_vm.props.line.right.discussionsExpanded,\n            })}}}):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-coverage right-side has-tooltip\",class:[\n          _vm.props.line.right.type,\n          _vm.$options.coverageStateRight(_vm.props).class,\n          ..._vm.$options.classNameMapCellRight(_vm.props),\n        ],attrs:{\"title\":_vm.$options.coverageStateRight(_vm.props).text,\"data-tooltip-custom-class\":_vm.$options.coverageStateRight(_vm.props).class}}),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-inline-findings right-side\",class:_vm.$options.classNameMapCellRight(_vm.props)},[(_vm.$options.showCodequalityRight(_vm.props) || _vm.$options.showSecurityRight(_vm.props))?_c(_vm.$options.InlineFindingsGutterIconDropdown,{tag:\"component\",attrs:{\"code-quality\":_vm.props.line.right.codequality,\"sast\":_vm.props.line.right.sast,\"file-path\":_vm.props.filePath,\"data-testid\":\"inlineFindingsIcon\"},on:{\"showInlineFindings\":function($event){return _vm.listeners.toggleCodeQualityFindings(\n              _vm.props.line.right.codequality[0]\n                ? _vm.props.line.right.codequality[0].line\n                : _vm.props.line.right.sast[0].line,\n            )}}}):_vm._e()],1),_vm._v(\" \"),_c('div',{key:_vm.props.line.right.rich_text,staticClass:\"diff-td line_content with-coverage right-side parallel\",class:[\n          _vm.props.line.right.type,\n          {\n            'gl-font-bold': _vm.props.line.right.type === _vm.$options.CONFLICT_MARKER_THEIR,\n          },\n          ..._vm.$options.classNameMapCellRight(_vm.props),\n        ],domProps:{\"innerHTML\":_vm._s(\n          _vm.$options.lineContent(_vm.props.line.right) /* v-html for performance, see top of file */\n        )}})]:[_c('div',{staticClass:\"diff-td diff-line-num old_line empty-cell\",class:_vm.$options.classNameMapCellRight(_vm.props),attrs:{\"data-testid\":\"right-empty-cell\"}}),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-coverage right-side empty-cell\",class:_vm.$options.classNameMapCellRight(_vm.props)}),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line-inline-findings right-side empty-cell\",class:_vm.$options.classNameMapCellRight(_vm.props)}),_vm._v(\" \"),_c('div',{staticClass:\"diff-td line_content with-coverage right-side empty-cell parallel\",class:_vm.$options.classNameMapCellRight(_vm.props)})]],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function pickDirection({ line, code } = {}) {\n  const { left, right } = line;\n  let direction = left || right;\n\n  if (right?.line_code === code) {\n    direction = right;\n  }\n\n  return direction;\n}\n","import { render, staticRenderFns } from \"./diff_view.vue?vue&type=template&id=2ade39c8\"\nimport script from \"./diff_view.vue?vue&type=script&lang=js\"\nexport * from \"./diff_view.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:\"diff-grid diff-table code diff-wrap-lines js-syntax-highlight text-file\",class:[\n    _vm.$options.userColorScheme,\n    { 'inline-diff-view': _vm.inline, 'with-inline-findings': _vm.hasInlineFindingsChanges },\n  ],attrs:{\"data-commit-id\":_vm.commitId},on:{\"mousedown\":_vm.handleParallelLineMouseDown}},[_vm._l((_vm.diffLines),function(line,index){return [(line.isMatchLineLeft || line.isMatchLineRight)?_c('div',{key:`expand-${index}`,staticClass:\"diff-grid-row diff-tr line_holder match expansion\"},[_c('diff-expansion-cell',{staticClass:\"diff-grid-left diff-grid-2-col left-side\",class:{ parallel: !_vm.inline },attrs:{\"file\":_vm.diffFile,\"line\":line.left,\"is-top\":index === 0,\"is-bottom\":index + 1 === _vm.diffLinesLength,\"inline\":_vm.inline,\"line-count-between\":_vm.getCountBetweenIndex(index)}}),_vm._v(\" \"),(!_vm.inline)?_c('diff-expansion-cell',{staticClass:\"diff-grid-right diff-grid-2-col right-side\",class:{ parallel: !_vm.inline },attrs:{\"file\":_vm.diffFile,\"line\":line.left,\"is-top\":index === 0,\"is-bottom\":index + 1 === _vm.diffLinesLength,\"inline\":_vm.inline,\"line-count-between\":_vm.getCountBetweenIndex(index)}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!line.isMatchLineLeft && !line.isMatchLineRight)?_c('diff-row',{key:line.lineCode,attrs:{\"file-hash\":_vm.diffFile.file_hash,\"file-path\":_vm.diffFile.file_path,\"line\":line,\"is-bottom\":index + 1 === _vm.diffLinesLength,\"is-commented\":index >= _vm.commentedLines.startLine && index <= _vm.commentedLines.endLine,\"is-highlighted\":_vm.isHighlighted(line),\"is-first-highlighted-line\":_vm.isFirstHighlightedLine(line) || index === _vm.commentedLines.startLine,\"is-last-highlighted-line\":_vm.isLastHighlightedLine(line) || index === _vm.commentedLines.endLine,\"inline\":_vm.inline,\"index\":index,\"file-line-coverage\":_vm.fileLineCoverage,\"coverage-loaded\":_vm.coverageLoaded},on:{\"showCommentForm\":(code) => _vm.singleLineComment(code, line),\"setHighlightedRow\":_vm.setHighlightedRow,\"toggleLineDiscussions\":({ lineCode, expanded }) =>\n          _vm.toggleLineDiscussions({ lineCode, fileHash: _vm.diffFile.file_hash, expanded }),\"enterdragging\":_vm.onDragOverThrottled,\"startdragging\":_vm.onStartDragging,\"stopdragging\":_vm.onStopDragging}}):_vm._e(),_vm._v(\" \"),(line.renderCommentRow)?_c('div',{key:`dcr-${line.lineCode}`,staticClass:\"diff-grid-comments diff-tr notes_holder\",class:line.commentRowClasses},[(line.left || !_vm.inline)?_c('div',{staticClass:\"diff-td notes-content old\",class:{ parallel: !_vm.inline }},[(line.left && (line.left.renderDiscussion || line.left.hasCommentForm))?_c('diff-comment-cell',{attrs:{\"line\":line.left,\"line-range\":_vm.idState.updatedLineRange,\"diff-file-hash\":_vm.diffFile.file_hash,\"help-page-path\":_vm.helpPagePath,\"line-position\":\"left\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(line.right || !_vm.inline)?_c('div',{staticClass:\"diff-td notes-content new\",class:{ parallel: !_vm.inline }},[(line.right && (line.right.renderDiscussion || line.right.hasCommentForm))?_c('diff-comment-cell',{attrs:{\"line\":line.right,\"line-range\":_vm.idState.updatedLineRange,\"diff-file-hash\":_vm.diffFile.file_hash,\"line-index\":index,\"help-page-path\":_vm.helpPagePath,\"line-position\":\"right\"}}):_vm._e()],1):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderParallelDraftRow(_vm.diffFile.file_hash, line))?_c('div',{key:`drafts-${line.lineCode}`,staticClass:\"diff-grid-drafts diff-tr notes_holder\",class:line.draftRowClasses},[(!_vm.inline || _vm.lineHasDrafts(line, 'left'))?_c('div',{staticClass:\"diff-td notes-content parallel old\"},_vm._l((_vm.lineDrafts(line, 'left')),function(draft){return _c('div',{key:draft.id,staticClass:\"content\"},[_c('article',{staticClass:\"note-wrapper\"},[_c('ul',{staticClass:\"notes draft-notes\"},[_c('draft-note',{attrs:{\"draft\":draft,\"line\":line.left,\"autosave-key\":_vm.autosaveKey}})],1)])])}),0):_vm._e(),_vm._v(\" \"),(!_vm.inline || _vm.lineHasDrafts(line, 'right'))?_c('div',{staticClass:\"diff-td notes-content parallel new\"},_vm._l((_vm.lineDrafts(line, 'right')),function(draft){return _c('div',{key:draft.id,staticClass:\"content\"},[_c('article',{staticClass:\"note-wrapper\"},[_c('ul',{staticClass:\"notes draft-notes\"},[_c('draft-note',{attrs:{\"draft\":draft,\"line\":line.right,\"autosave-key\":_vm.autosaveKey}})],1)])])}),0):_vm._e()]):_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!./diff_content.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!./diff_content.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon, GlButton } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport { sprintf } from '~/locale';\nimport { createAlert } from '~/alert';\nimport { mapParallel } from 'ee_else_ce/diffs/components/diff_row_utils';\nimport DiffFileDrafts from '~/batch_comments/components/diff_file_drafts.vue';\nimport draftCommentsMixin from '~/diffs/mixins/draft_comments';\nimport { diffViewerModes } from '~/ide/constants';\nimport diffLineNoteFormMixin from '~/notes/mixins/diff_line_note_form';\nimport DiffViewer from '~/vue_shared/components/diff_viewer/diff_viewer.vue';\nimport NoPreviewViewer from '~/vue_shared/components/diff_viewer/viewers/no_preview.vue';\nimport NotDiffableViewer from '~/vue_shared/components/diff_viewer/viewers/not_diffable.vue';\nimport NoteForm from '~/notes/components/note_form.vue';\nimport eventHub from '~/notes/event_hub';\nimport { IMAGE_DIFF_POSITION_TYPE } from '../constants';\nimport { SAVING_THE_COMMENT_FAILED, SOMETHING_WENT_WRONG } from '../i18n';\nimport { getDiffMode } from '../store/utils';\nimport DiffDiscussions from './diff_discussions.vue';\nimport DiffView from './diff_view.vue';\nimport ImageDiffOverlay from './image_diff_overlay.vue';\n\nexport default {\n  components: {\n    GlLoadingIcon,\n    GlButton,\n    DiffView,\n    DiffViewer,\n    NoteForm,\n    DiffDiscussions,\n    ImageDiffOverlay,\n    NotDiffableViewer,\n    NoPreviewViewer,\n    DiffFileDrafts,\n  },\n  mixins: [diffLineNoteFormMixin, draftCommentsMixin],\n  props: {\n    diffFile: {\n      type: Object,\n      required: true,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    codequalityData: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    sastData: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    ...mapState('diffs', ['projectPath']),\n    ...mapGetters('diffs', ['isInlineView', 'getCommentFormForDiffFile', 'diffLines']),\n    ...mapGetters(['getNoteableData', 'noteableType', 'getUserData']),\n    diffMode() {\n      return getDiffMode(this.diffFile);\n    },\n    diffViewerMode() {\n      return this.diffFile.viewer.name;\n    },\n    isTextFile() {\n      return this.diffViewerMode === diffViewerModes.text && !this.diffFile.viewer.whitespace_only;\n    },\n    isWhitespaceOnly() {\n      return this.diffFile.viewer.whitespace_only;\n    },\n    noPreview() {\n      return this.diffViewerMode === diffViewerModes.no_preview;\n    },\n    notDiffable() {\n      return this.diffViewerMode === diffViewerModes.not_diffable;\n    },\n    diffFileCommentForm() {\n      return this.getCommentFormForDiffFile(this.diffFileHash);\n    },\n    showNotesContainer() {\n      return (\n        this.diffViewerMode === diffViewerModes.image &&\n        (this.imageDiscussionsWithDrafts.length || this.diffFileCommentForm)\n      );\n    },\n    diffFileHash() {\n      return this.diffFile.file_hash;\n    },\n    author() {\n      return this.getUserData;\n    },\n    mappedLines() {\n      const {\n        diffFile,\n        codequalityData,\n        sastData,\n        hasParallelDraftLeft,\n        hasParallelDraftRight,\n        draftsForLine,\n      } = this;\n      return (\n        this.diffLines(this.diffFile).map(\n          mapParallel({\n            diffFile,\n            codequalityData,\n            sastData,\n            hasParallelDraftLeft,\n            hasParallelDraftRight,\n            draftsForLine,\n          }),\n        ) || []\n      );\n    },\n    imageDiscussions() {\n      return this.diffFile.discussions.filter(\n        (f) => f.position?.position_type === IMAGE_DIFF_POSITION_TYPE,\n      );\n    },\n  },\n  updated() {\n    this.$nextTick(() => {\n      eventHub.$emit('showBlobInteractionZones', this.diffFile.new_path);\n    });\n  },\n  methods: {\n    ...mapActions('diffs', ['saveDiffDiscussion', 'closeDiffFileCommentForm']),\n    handleSaveNote(note, parentElement, errorCallback) {\n      this.saveDiffDiscussion({\n        note,\n        formData: {\n          noteableData: this.getNoteableData,\n          noteableType: this.noteableType,\n          diffFile: this.diffFile,\n          positionType: IMAGE_DIFF_POSITION_TYPE,\n          x: this.diffFileCommentForm.x,\n          y: this.diffFileCommentForm.y,\n          width: this.diffFileCommentForm.width,\n          height: this.diffFileCommentForm.height,\n        },\n      }).catch((e) => {\n        const reason = e.response?.data?.errors;\n        const errorMessage = reason\n          ? sprintf(SAVING_THE_COMMENT_FAILED, { reason })\n          : SOMETHING_WENT_WRONG;\n\n        createAlert({\n          message: errorMessage,\n          parent: parentElement,\n        });\n\n        errorCallback();\n      });\n    },\n  },\n  IMAGE_DIFF_POSITION_TYPE,\n};\n</script>\n\n<template>\n  <div class=\"diff-content\">\n    <div class=\"diff-viewer\">\n      <template v-if=\"isTextFile\">\n        <diff-view\n          :diff-file=\"diffFile\"\n          :codequality-data=\"codequalityData\"\n          :sast-data=\"sastData\"\n          :diff-lines=\"mappedLines\"\n          :help-page-path=\"helpPagePath\"\n          :inline=\"isInlineView\"\n          :autosave-key=\"autosaveKey\"\n        />\n        <gl-loading-icon v-if=\"diffFile.renderingLines\" size=\"lg\" class=\"mt-3\" />\n      </template>\n      <div\n        v-else-if=\"isWhitespaceOnly\"\n        class=\"gl-flex gl-h-13 gl-items-center gl-justify-center gl-bg-gray-10\"\n        data-testid=\"diff-whitespace-only-state\"\n      >\n        {{ __('Contains only whitespace changes.') }}\n        <gl-button\n          category=\"tertiary\"\n          variant=\"confirm\"\n          size=\"small\"\n          class=\"gl-ml-3\"\n          data-testid=\"diff-load-file-button\"\n          @click=\"$emit('load-file', { w: '0' })\"\n        >\n          {{ __('Show changes') }}\n        </gl-button>\n      </div>\n      <not-diffable-viewer v-else-if=\"notDiffable\" />\n      <no-preview-viewer v-else-if=\"noPreview\" />\n      <diff-viewer\n        v-else\n        :diff-file=\"diffFile\"\n        :diff-mode=\"diffMode\"\n        :diff-viewer-mode=\"diffViewerMode\"\n        :new-path=\"diffFile.new_path\"\n        :new-sha=\"diffFile.diff_refs.head_sha\"\n        :new-size=\"diffFile.new_size\"\n        :old-path=\"diffFile.old_path\"\n        :old-sha=\"diffFile.diff_refs.base_sha\"\n        :old-size=\"diffFile.old_size\"\n        :file-hash=\"diffFileHash\"\n        :project-path=\"projectPath\"\n        :a-mode=\"diffFile.a_mode\"\n        :b-mode=\"diffFile.b_mode\"\n      >\n        <template #image-overlay=\"{ renderedWidth, renderedHeight }\">\n          <image-diff-overlay\n            v-if=\"renderedWidth\"\n            :rendered-width=\"renderedWidth\"\n            :rendered-height=\"renderedHeight\"\n            :discussions=\"imageDiscussions\"\n            :file-hash=\"diffFileHash\"\n            :can-comment=\"getNoteableData.current_user.can_create_note && !diffFile.brokenSymlink\"\n          />\n        </template>\n        <div v-if=\"showNotesContainer\" class=\"note-container\">\n          <diff-discussions\n            v-if=\"imageDiscussions.length\"\n            class=\"diff-file-discussions\"\n            :discussions=\"imageDiscussions\"\n            should-collapse-discussions\n            render-avatar-badge\n          />\n          <diff-file-drafts\n            :file-hash=\"diffFileHash\"\n            :position-type=\"$options.IMAGE_DIFF_POSITION_TYPE\"\n            :autosave-key=\"autosaveKey\"\n            class=\"diff-file-discussions\"\n          />\n          <note-form\n            v-if=\"diffFileCommentForm\"\n            ref=\"noteForm\"\n            :save-button-title=\"__('Comment')\"\n            class=\"diff-comment-form new-note discussion-form discussion-form-container\"\n            @handleFormUpdateAddToReview=\"addToReview\"\n            @handleFormUpdate=\"handleSaveNote\"\n            @cancelForm=\"closeDiffFileCommentForm(diffFileHash)\"\n          />\n        </div>\n      </diff-viewer>\n    </div>\n  </div>\n</template>\n","import { mapParallel as CEMapParallel } from '~/diffs/components/diff_row_utils';\nimport { fileLineCodequality, fileLineSast } from './inline_findings_utils';\n\nexport const mapParallel =\n  ({\n    diffFile,\n    codequalityData,\n    sastData,\n    hasParallelDraftLeft,\n    hasParallelDraftRight,\n    draftsForLine,\n  }) =>\n  (line) => {\n    let { left, right } = line;\n\n    if (left) {\n      left = {\n        ...left,\n        codequality: fileLineCodequality(diffFile.file_path, left.new_line, codequalityData),\n        sast: fileLineSast(diffFile.file_path, left.new_line, sastData),\n      };\n    }\n    if (right) {\n      right = {\n        ...right,\n        codequality: fileLineCodequality(diffFile.file_path, right.new_line, codequalityData),\n        sast: fileLineSast(diffFile.file_path, right.new_line, sastData),\n      };\n    }\n\n    return {\n      ...CEMapParallel({ diffFile, hasParallelDraftLeft, hasParallelDraftRight, draftsForLine })({\n        ...line,\n        left,\n        right,\n      }),\n    };\n  };\n","import { render, staticRenderFns } from \"./diff_content.vue?vue&type=template&id=c7b5ce72\"\nimport script from \"./diff_content.vue?vue&type=script&lang=js\"\nexport * from \"./diff_content.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:\"diff-content\"},[_c('div',{staticClass:\"diff-viewer\"},[(_vm.isTextFile)?[_c('diff-view',{attrs:{\"diff-file\":_vm.diffFile,\"codequality-data\":_vm.codequalityData,\"sast-data\":_vm.sastData,\"diff-lines\":_vm.mappedLines,\"help-page-path\":_vm.helpPagePath,\"inline\":_vm.isInlineView,\"autosave-key\":_vm.autosaveKey}}),_vm._v(\" \"),(_vm.diffFile.renderingLines)?_c('gl-loading-icon',{staticClass:\"mt-3\",attrs:{\"size\":\"lg\"}}):_vm._e()]:(_vm.isWhitespaceOnly)?_c('div',{staticClass:\"gl-flex gl-h-13 gl-items-center gl-justify-center gl-bg-gray-10\",attrs:{\"data-testid\":\"diff-whitespace-only-state\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Contains only whitespace changes.'))+\"\\n      \"),_c('gl-button',{staticClass:\"gl-ml-3\",attrs:{\"category\":\"tertiary\",\"variant\":\"confirm\",\"size\":\"small\",\"data-testid\":\"diff-load-file-button\"},on:{\"click\":function($event){return _vm.$emit('load-file', { w: '0' })}}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Show changes'))+\"\\n      \")])],1):(_vm.notDiffable)?_c('not-diffable-viewer'):(_vm.noPreview)?_c('no-preview-viewer'):_c('diff-viewer',{attrs:{\"diff-file\":_vm.diffFile,\"diff-mode\":_vm.diffMode,\"diff-viewer-mode\":_vm.diffViewerMode,\"new-path\":_vm.diffFile.new_path,\"new-sha\":_vm.diffFile.diff_refs.head_sha,\"new-size\":_vm.diffFile.new_size,\"old-path\":_vm.diffFile.old_path,\"old-sha\":_vm.diffFile.diff_refs.base_sha,\"old-size\":_vm.diffFile.old_size,\"file-hash\":_vm.diffFileHash,\"project-path\":_vm.projectPath,\"a-mode\":_vm.diffFile.a_mode,\"b-mode\":_vm.diffFile.b_mode},scopedSlots:_vm._u([{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [(renderedWidth)?_c('image-diff-overlay',{attrs:{\"rendered-width\":renderedWidth,\"rendered-height\":renderedHeight,\"discussions\":_vm.imageDiscussions,\"file-hash\":_vm.diffFileHash,\"can-comment\":_vm.getNoteableData.current_user.can_create_note && !_vm.diffFile.brokenSymlink}}):_vm._e()]}}])},[_vm._v(\" \"),(_vm.showNotesContainer)?_c('div',{staticClass:\"note-container\"},[(_vm.imageDiscussions.length)?_c('diff-discussions',{staticClass:\"diff-file-discussions\",attrs:{\"discussions\":_vm.imageDiscussions,\"should-collapse-discussions\":\"\",\"render-avatar-badge\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('diff-file-drafts',{staticClass:\"diff-file-discussions\",attrs:{\"file-hash\":_vm.diffFileHash,\"position-type\":_vm.$options.IMAGE_DIFF_POSITION_TYPE,\"autosave-key\":_vm.autosaveKey}}),_vm._v(\" \"),(_vm.diffFileCommentForm)?_c('note-form',{ref:\"noteForm\",staticClass:\"diff-comment-form new-note discussion-form discussion-form-container\",attrs:{\"save-button-title\":_vm.__('Comment')},on:{\"handleFormUpdateAddToReview\":_vm.addToReview,\"handleFormUpdate\":_vm.handleSaveNote,\"cancelForm\":function($event){return _vm.closeDiffFileCommentForm(_vm.diffFileHash)}}}):_vm._e()],1):_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!./diff_file_discussion_expansion.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!./diff_file_discussion_expansion.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatarLink, GlAvatar, GlAvatarsInline, GlButton, GlSprintf, GlLink } from '@gitlab/ui';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\n\nexport default {\n  components: {\n    GlAvatarLink,\n    GlAvatar,\n    GlAvatarsInline,\n    GlButton,\n    GlSprintf,\n    GlLink,\n    TimeAgoTooltip,\n  },\n  props: {\n    discussions: {\n      type: Array,\n      required: true,\n    },\n  },\n  computed: {\n    avatars() {\n      return this.discussions.reduce((acc, discussion) => {\n        acc.push(discussion.notes[0].author);\n\n        return acc;\n      }, []);\n    },\n    lastNote() {\n      return this.discussions.at(-1).notes.at(-1);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-border-b gl-flex gl-items-center gl-bg-subtle gl-px-5 gl-py-3\">\n    <gl-avatars-inline :avatars=\"avatars\" :avatar-size=\"24\" :max-visible=\"5\" badge-sr-only-text=\"\">\n      <template #avatar=\"{ avatar }\">\n        <gl-avatar-link\n          target=\"_blank\"\n          :href=\"avatar.path\"\n          :data-user-id=\"avatar.id\"\n          :data-username=\"avatar.username\"\n          class=\"js-user-link\"\n        >\n          <gl-avatar :size=\"24\" :src=\"avatar.avatar_url\" :alt=\"avatar.name\" />\n        </gl-avatar-link>\n      </template>\n    </gl-avatars-inline>\n    <div class=\"gl-ml-3\">\n      <gl-button\n        variant=\"link\"\n        class=\"gl-align-baseline\"\n        data-testid=\"toggle-btn\"\n        @click=\"$emit('toggle')\"\n      >\n        {{ n__('%d comment', '%d comments', discussions.length) }}\n      </gl-button>\n      <span class=\"gl-text-subtle\">\n        <gl-sprintf :message=\"__('Last comment by %{author} %{timeago}')\">\n          <template #author>\n            <gl-link\n              :href=\"lastNote.author.path\"\n              class=\"author-link js-user-link gl-text-default\"\n              :data-user-id=\"lastNote.author.id\"\n              :data-username=\"lastNote.author.username\"\n            >\n              {{ lastNote.author.name }}\n            </gl-link>\n          </template>\n          <template #timeago>\n            <time-ago-tooltip :time=\"lastNote.created_at\" tooltip-placement=\"bottom\" />\n          </template>\n        </gl-sprintf>\n      </span>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_file_discussion_expansion.vue?vue&type=template&id=1a8618c1\"\nimport script from \"./diff_file_discussion_expansion.vue?vue&type=script&lang=js\"\nexport * from \"./diff_file_discussion_expansion.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-border-b gl-flex gl-items-center gl-bg-subtle gl-px-5 gl-py-3\"},[_c('gl-avatars-inline',{attrs:{\"avatars\":_vm.avatars,\"avatar-size\":24,\"max-visible\":5,\"badge-sr-only-text\":\"\"},scopedSlots:_vm._u([{key:\"avatar\",fn:function({ avatar }){return [_c('gl-avatar-link',{staticClass:\"js-user-link\",attrs:{\"target\":\"_blank\",\"href\":avatar.path,\"data-user-id\":avatar.id,\"data-username\":avatar.username}},[_c('gl-avatar',{attrs:{\"size\":24,\"src\":avatar.avatar_url,\"alt\":avatar.name}})],1)]}}])}),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-3\"},[_c('gl-button',{staticClass:\"gl-align-baseline\",attrs:{\"variant\":\"link\",\"data-testid\":\"toggle-btn\"},on:{\"click\":function($event){return _vm.$emit('toggle')}}},[_vm._v(\"\\n      \"+_vm._s(_vm.n__('%d comment', '%d comments', _vm.discussions.length))+\"\\n    \")]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-subtle\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.__('Last comment by %{author} %{timeago}')},scopedSlots:_vm._u([{key:\"author\",fn:function(){return [_c('gl-link',{staticClass:\"author-link js-user-link gl-text-default\",attrs:{\"href\":_vm.lastNote.author.path,\"data-user-id\":_vm.lastNote.author.id,\"data-username\":_vm.lastNote.author.username}},[_vm._v(\"\\n            \"+_vm._s(_vm.lastNote.author.name)+\"\\n          \")])]},proxy:true},{key:\"timeago\",fn:function(){return [_c('time-ago-tooltip',{attrs:{\"time\":_vm.lastNote.created_at,\"tooltip-placement\":\"bottom\"}})]},proxy:true}])})],1)],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!./diff_file.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!./diff_file.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLoadingIcon, GlSprintf, GlAlert, GlLink } from '@gitlab/ui';\nimport { escape } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { IdState } from 'vendor/vue-virtual-scroller';\nimport DiffContent from 'jh_else_ce/diffs/components/diff_content.vue';\nimport { createAlert } from '~/alert';\nimport { hasDiff } from '~/helpers/diffs_helper';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { diffViewerErrors } from '~/ide/constants';\nimport { clearDraft } from '~/lib/utils/autosave';\nimport { scrollToElement, isElementStuck } from '~/lib/utils/common_utils';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport { sprintf } from '~/locale';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport notesEventHub from '~/notes/event_hub';\nimport DiffFileDrafts from '~/batch_comments/components/diff_file_drafts.vue';\nimport NoteForm from '~/notes/components/note_form.vue';\nimport diffLineNoteFormMixin from '~/notes/mixins/diff_line_note_form';\n\nimport { fileContentsId } from '~/diffs/components/diff_row_utils';\nimport {\n  DIFF_FILE_AUTOMATIC_COLLAPSE,\n  DIFF_FILE_MANUAL_COLLAPSE,\n  EVT_EXPAND_ALL_FILES,\n  EVT_PERF_MARK_DIFF_FILES_END,\n  EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN,\n  FILE_DIFF_POSITION_TYPE,\n} from '../constants';\nimport eventHub from '../event_hub';\nimport { DIFF_FILE, SOMETHING_WENT_WRONG, SAVING_THE_COMMENT_FAILED, CONFLICT_TEXT } from '../i18n';\nimport { collapsedType, getShortShaFromFile } from '../utils/diff_file';\nimport DiffDiscussions from './diff_discussions.vue';\nimport DiffFileHeader from './diff_file_header.vue';\nimport DiffFileDiscussionExpansion from './diff_file_discussion_expansion.vue';\n\nexport default {\n  components: {\n    DiffFileHeader,\n    DiffContent,\n    GlButton,\n    GlLoadingIcon,\n    GlSprintf,\n    GlAlert,\n    GlLink,\n    DiffFileDrafts,\n    NoteForm,\n    DiffDiscussions,\n    DiffFileDiscussionExpansion,\n  },\n  directives: {\n    SafeHtml,\n  },\n  mixins: [\n    glFeatureFlagsMixin(),\n    IdState({ idProp: (vm) => vm.file.file_hash }),\n    diffLineNoteFormMixin,\n  ],\n  props: {\n    file: {\n      type: Object,\n      required: true,\n    },\n    reviewed: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isFirstFile: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isLastFile: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canCurrentUserFork: {\n      type: Boolean,\n      required: true,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    viewDiffsFileByFile: {\n      type: Boolean,\n      required: true,\n    },\n    active: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    codequalityData: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    sastData: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    isDiffViewActive: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  idState() {\n    return {\n      isLoadingCollapsedDiff: false,\n      hasLoadedCollapsedDiff: false,\n      forkMessageVisible: false,\n      hasToggled: false,\n    };\n  },\n  i18n: {\n    ...DIFF_FILE,\n    genericError: SOMETHING_WENT_WRONG,\n  },\n  computed: {\n    ...mapState('diffs', ['currentDiffFileId', 'conflictResolutionPath', 'canMerge']),\n    ...mapGetters(['isLoggedIn', 'isNotesFetched', 'getNoteableData', 'noteableType']),\n    ...mapGetters('diffs', ['getDiffFileDiscussions', 'isVirtualScrollingEnabled', 'linkedFile']),\n    autosaveKey() {\n      if (!this.isLoggedIn) return '';\n\n      const {\n        id,\n        noteable_type: noteableTypeUnderscored,\n        noteableType,\n        diff_head_sha: diffHeadSha,\n      } = this.noteableData;\n\n      return [\n        'Autosave|Note', // eslint-disable-line @gitlab/require-i18n-strings\n        capitalizeFirstCharacter(noteableTypeUnderscored || noteableType),\n        id,\n        diffHeadSha,\n        FILE_DIFF_POSITION_TYPE,\n        this.file.id,\n      ].join('/');\n    },\n    isLinkedFile() {\n      return this.file === this.linkedFile;\n    },\n    viewBlobHref() {\n      return escape(this.file.view_path);\n    },\n    shortSha() {\n      return getShortShaFromFile(this.file);\n    },\n    showLoadingIcon() {\n      return this.idState.isLoadingCollapsedDiff;\n    },\n    hasDiff() {\n      return hasDiff(this.file);\n    },\n    isFileTooLarge() {\n      return !this.manuallyCollapsed && this.file.viewer.error === diffViewerErrors.too_large;\n    },\n    errorMessage() {\n      return !this.manuallyCollapsed ? this.file.viewer.error_message : '';\n    },\n    forkMessage() {\n      return sprintf(\n        this.$options.i18n.editInFork,\n        {\n          tag_start: '<span class=\"js-file-fork-suggestion-section-action\">',\n          tag_end: '</span>',\n        },\n        false,\n      );\n    },\n    hasBodyClasses() {\n      const domParts = {\n        header: '!gl-rounded-base',\n        contentByHash: '',\n        content: '',\n      };\n\n      if (this.showBody) {\n        domParts.header = 'gl-rounded-bl-none gl-rounded-br-none';\n        domParts.contentByHash =\n          'gl-rounded-none gl-rounded-bl-base gl-rounded-br-base gl-border-0';\n        domParts.content = 'gl-rounded-bl-base gl-rounded-br-base';\n      }\n\n      return domParts;\n    },\n    automaticallyCollapsed() {\n      return collapsedType(this.file) === DIFF_FILE_AUTOMATIC_COLLAPSE;\n    },\n    manuallyCollapsed() {\n      return collapsedType(this.file) === DIFF_FILE_MANUAL_COLLAPSE;\n    },\n    forcedOpen() {\n      return this.file.viewer.forceOpen;\n    },\n    showBody() {\n      return !this.isCollapsed || this.automaticallyCollapsed;\n    },\n    showWarning() {\n      return this.isCollapsed && this.automaticallyCollapsed && !this.viewDiffsFileByFile;\n    },\n    expandableWarning() {\n      return this.file.viewer?.generated\n        ? this.$options.i18n.autoCollapsedGenerated\n        : this.$options.i18n.autoCollapsed;\n    },\n    showContent() {\n      return !this.isCollapsed && !this.isFileTooLarge;\n    },\n    showLocalFileReviews() {\n      return Boolean(gon.current_user_id);\n    },\n    isCollapsed() {\n      if (this.forcedOpen) {\n        return false;\n      }\n\n      if (collapsedType(this.file) !== DIFF_FILE_MANUAL_COLLAPSE) {\n        return this.viewDiffsFileByFile ? false : this.file.viewer?.automaticallyCollapsed;\n      }\n\n      return this.file.viewer?.manuallyCollapsed;\n    },\n    fileDiscussions() {\n      return this.file.discussions.filter(\n        (f) => f.position?.position_type === FILE_DIFF_POSITION_TYPE,\n      );\n    },\n    showFileDiscussions() {\n      return (\n        !this.file.viewer?.manuallyCollapsed &&\n        (this.fileDiscussions.length || this.file.drafts?.length || this.file.hasCommentForm)\n      );\n    },\n    diffFileHash() {\n      return this.file.file_hash;\n    },\n    fileId() {\n      return fileContentsId(this.file);\n    },\n    isFileDiscussionsExpanded() {\n      return this.fileDiscussions.every((d) => d.expandedOnDiff);\n    },\n  },\n  watch: {\n    'file.id': {\n      handler: function fileIdHandler() {\n        this.manageViewedEffects();\n      },\n    },\n    'file.file_hash': {\n      handler: function hashChangeWatch(newHash, oldHash) {\n        if (\n          this.viewDiffsFileByFile &&\n          !this.isCollapsed &&\n          !this.glFeatures.singleFileFileByFile &&\n          newHash &&\n          oldHash &&\n          !this.hasDiff &&\n          !this.idState.hasLoadedCollapsedDiff\n        ) {\n          this.requestDiff();\n        }\n      },\n    },\n  },\n  created() {\n    notesEventHub.$on(`loadCollapsedDiff/${this.file.file_hash}`, this.requestDiff);\n    eventHub.$on(EVT_EXPAND_ALL_FILES, this.expandAllListener);\n  },\n  mounted() {\n    if (this.hasDiff) {\n      this.postRender();\n    }\n\n    this.manageViewedEffects();\n\n    if (this.viewDiffsFileByFile) {\n      requestIdleCallback(() => {\n        this.prefetchFileNeighbors();\n      });\n    }\n  },\n  beforeDestroy() {\n    eventHub.$off(EVT_EXPAND_ALL_FILES, this.expandAllListener);\n  },\n  methods: {\n    ...mapActions('diffs', [\n      'loadCollapsedDiff',\n      'assignDiscussionsToDiff',\n      'prefetchFileNeighbors',\n      'setFileCollapsedByUser',\n      'saveDiffDiscussion',\n      'toggleFileCommentForm',\n      'toggleFileDiscussion',\n    ]),\n    handleFileCommentCancel() {\n      this.toggleFileCommentForm(this.file.file_path);\n\n      clearDraft(this.autosaveKey);\n    },\n    manageViewedEffects() {\n      if (\n        !this.idState.hasToggled &&\n        this.reviewed &&\n        !this.isCollapsed &&\n        this.showLocalFileReviews\n      ) {\n        this.handleToggle();\n        this.idState.hasToggled = true;\n      }\n    },\n    expandAllListener() {\n      if (this.isCollapsed) {\n        this.handleToggle();\n      }\n    },\n    async postRender() {\n      const eventsForThisFile = [];\n\n      if (this.isFirstFile || this.viewDiffsFileByFile) {\n        eventsForThisFile.push(EVT_PERF_MARK_FIRST_DIFF_FILE_SHOWN);\n      }\n\n      if (this.isLastFile || this.viewDiffsFileByFile) {\n        eventsForThisFile.push(EVT_PERF_MARK_DIFF_FILES_END);\n      }\n\n      await this.$nextTick();\n\n      eventsForThisFile.forEach((event) => {\n        eventHub.$emit(event);\n      });\n    },\n    handleToggle({ viaUserInteraction = false } = {}) {\n      const collapsingNow = !this.isCollapsed;\n      const contentElement = this.$el.querySelector(`#${fileContentsId(this.file)}`);\n\n      this.setFileCollapsedByUser({\n        filePath: this.file.file_path,\n        collapsed: collapsingNow,\n      });\n\n      if (\n        collapsingNow &&\n        viaUserInteraction &&\n        contentElement &&\n        isElementStuck(this.$refs.header.$el)\n      ) {\n        scrollToElement(contentElement, { duration: 0 });\n      }\n\n      if (!this.hasDiff && !collapsingNow && this.file?.viewer?.expandable) {\n        this.requestDiff();\n      }\n    },\n    requestDiff(params = {}) {\n      const { idState, file } = this;\n\n      idState.isLoadingCollapsedDiff = true;\n\n      this.loadCollapsedDiff({ file, params })\n        .then(() => {\n          idState.isLoadingCollapsedDiff = false;\n          idState.hasLoadedCollapsedDiff = true;\n        })\n        .then(() => {\n          if (this.file.file_hash !== file.file_hash) return;\n\n          requestIdleCallback(\n            () => {\n              this.postRender();\n              this.assignDiscussionsToDiff(this.getDiffFileDiscussions(this.file));\n            },\n            { timeout: 1000 },\n          );\n        })\n        .catch(() => {\n          idState.isLoadingCollapsedDiff = false;\n          createAlert({\n            message: this.$options.i18n.genericError,\n          });\n        });\n    },\n    showForkMessage() {\n      this.idState.forkMessageVisible = true;\n    },\n    hideForkMessage() {\n      this.idState.forkMessageVisible = false;\n    },\n    handleSaveNote(note, parentElement, errorCallback) {\n      this.saveDiffDiscussion({\n        note,\n        formData: {\n          noteableData: this.getNoteableData,\n          noteableType: this.noteableType,\n          diffFile: this.file,\n          positionType: FILE_DIFF_POSITION_TYPE,\n        },\n      }).catch((e) => {\n        const reason = e.response?.data?.errors;\n        const errorMessage = reason\n          ? sprintf(SAVING_THE_COMMENT_FAILED, { reason })\n          : SOMETHING_WENT_WRONG;\n\n        createAlert({\n          message: errorMessage,\n          parent: parentElement,\n        });\n\n        errorCallback();\n      });\n    },\n    // eslint-disable-next-line max-params\n    handleSaveDraftNote(note, _, parentElement, errorCallback) {\n      this.addToReview(note, this.$options.FILE_DIFF_POSITION_TYPE, parentElement, errorCallback);\n    },\n    toggleFileDiscussionVisibility() {\n      this.fileDiscussions.forEach((d) => this.toggleFileDiscussion(d));\n    },\n  },\n  warningClasses: [\n    'collapsed-file-warning',\n    'gl-rounded-b-base',\n    'gl-px-5',\n    'gl-py-4',\n    'gl-flex',\n    'gl-flex-col',\n    'sm:gl-items-start',\n    'gl-gap-3',\n  ],\n  CONFLICT_TEXT,\n  FILE_DIFF_POSITION_TYPE,\n  generatedDiffFileDocsPath: helpPagePath('user/project/merge_requests/changes.html', {\n    anchor: 'collapse-generated-files',\n  }),\n};\n</script>\n\n<template>\n  <div\n    :id=\"file.file_hash\"\n    :class=\"{\n      'gl-border-red-500': file.conflict_type,\n      'comments-disabled': Boolean(file.brokenSymlink),\n      'has-body': showBody,\n      'is-virtual-scrolling': isVirtualScrollingEnabled,\n      'linked-file': isLinkedFile,\n      'diff-file-is-active': isDiffViewActive,\n    }\"\n    :data-path=\"file.new_path\"\n    class=\"diff-file file-holder\"\n  >\n    <gl-alert\n      v-if=\"!showLoadingIcon && file.conflict_type\"\n      variant=\"danger\"\n      :dismissible=\"false\"\n      data-testid=\"conflictsAlert\"\n      class=\"gl-rounded-t-base\"\n    >\n      {{ $options.CONFLICT_TEXT[file.conflict_type] }}\n      <template v-if=\"!canMerge\">\n        {{ __('Ask someone with write access to resolve it.') }}\n      </template>\n      <gl-sprintf\n        v-else-if=\"conflictResolutionPath\"\n        :message=\"\n          __(\n            'You can %{gitlabLinkStart}resolve conflicts on GitLab%{gitlabLinkEnd} or %{resolveLocallyStart}resolve them locally%{resolveLocallyEnd}.',\n          )\n        \"\n      >\n        <template #gitlabLink=\"{ content }\">\n          <gl-button :href=\"conflictResolutionPath\" variant=\"link\" class=\"gl-align-text-bottom\">{{\n            content\n          }}</gl-button>\n        </template>\n        <template #resolveLocally=\"{ content }\">\n          <gl-button variant=\"link\" class=\"js-check-out-modal-trigger gl-align-text-bottom\">{{\n            content\n          }}</gl-button>\n        </template>\n      </gl-sprintf>\n      <gl-sprintf\n        v-else\n        :message=\"__('You can %{resolveLocallyStart}resolve them locally%{resolveLocallyEnd}.')\"\n      >\n        <template #resolveLocally=\"{ content }\">\n          <gl-button variant=\"link\" class=\"js-check-out-modal-trigger gl-align-text-bottom\">{{\n            content\n          }}</gl-button>\n        </template>\n      </gl-sprintf>\n    </gl-alert>\n    <diff-file-header\n      ref=\"header\"\n      :can-current-user-fork=\"canCurrentUserFork\"\n      :diff-file=\"file\"\n      :collapsible=\"true\"\n      :reviewed=\"reviewed\"\n      :expanded=\"!isCollapsed\"\n      :add-merge-request-buttons=\"true\"\n      :view-diffs-file-by-file=\"viewDiffsFileByFile\"\n      :show-local-file-reviews=\"showLocalFileReviews\"\n      class=\"js-file-title file-title\"\n      :class=\"[\n        hasBodyClasses.header,\n        {\n          '!gl-rounded-none !gl-bg-red-200': file.conflict_type,\n          '!gl-rounded-tl-none !gl-rounded-tr-none': file.conflict_type && isCollapsed,\n          '!gl-border-0': file.conflict_type || isCollapsed,\n        },\n      ]\"\n      @toggleFile=\"handleToggle({ viaUserInteraction: true })\"\n      @showForkMessage=\"showForkMessage\"\n    />\n\n    <div\n      v-if=\"idState.forkMessageVisible\"\n      class=\"js-file-fork-suggestion-section file-fork-suggestion gl-border-1 gl-border-t-0 gl-border-solid gl-border-default\"\n    >\n      <span v-safe-html=\"forkMessage\" class=\"file-fork-suggestion-note\"></span>\n      <gl-button\n        :href=\"file.fork_path\"\n        class=\"js-fork-suggestion-button gl-mr-3\"\n        category=\"secondary\"\n        variant=\"confirm\"\n        >{{ $options.i18n.fork }}</gl-button\n      >\n      <gl-button\n        class=\"js-cancel-fork-suggestion-button\"\n        category=\"secondary\"\n        @click=\"hideForkMessage\"\n      >\n        {{ $options.i18n.cancel }}\n      </gl-button>\n    </div>\n    <template v-else>\n      <div\n        :id=\"fileId\"\n        class=\"diff-content\"\n        data-testid=\"content-area\"\n        :class=\"[\n          hasBodyClasses.contentByHash,\n          {\n            '!gl-border-0': file.conflict_type,\n          },\n        ]\"\n      >\n        <div v-if=\"showFileDiscussions\" data-testid=\"file-discussions\">\n          <div class=\"diff-file-discussions-wrapper\">\n            <template v-if=\"isFileDiscussionsExpanded\">\n              <diff-discussions\n                v-if=\"fileDiscussions.length\"\n                class=\"diff-file-discussions\"\n                data-testid=\"diff-file-discussions\"\n                :discussions=\"fileDiscussions\"\n              />\n              <diff-file-drafts\n                :file-hash=\"file.file_hash\"\n                :show-pin=\"false\"\n                :position-type=\"$options.FILE_DIFF_POSITION_TYPE\"\n                :autosave-key=\"autosaveKey\"\n                class=\"diff-file-discussions\"\n              />\n            </template>\n            <diff-file-discussion-expansion\n              v-else\n              :discussions=\"fileDiscussions\"\n              @toggle=\"toggleFileDiscussionVisibility\"\n            />\n            <note-form\n              v-if=\"file.hasCommentForm\"\n              :save-button-title=\"__('Comment')\"\n              :diff-file=\"file\"\n              :autosave-key=\"autosaveKey\"\n              autofocus\n              class=\"gl-px-5 gl-py-3\"\n              data-testid=\"file-note-form\"\n              @handleFormUpdate=\"handleSaveNote\"\n              @handleFormUpdateAddToReview=\"handleSaveDraftNote\"\n              @cancelForm=\"handleFileCommentCancel\"\n            />\n          </div>\n        </div>\n        <gl-loading-icon\n          v-if=\"showLoadingIcon\"\n          size=\"sm\"\n          class=\"diff-content loading gl-my-0 gl-pt-3\"\n          data-testid=\"loader-icon\"\n        />\n        <div v-else-if=\"errorMessage\" class=\"diff-viewer\">\n          <div v-if=\"isFileTooLarge\" :class=\"$options.warningClasses\">\n            <p class=\"!gl-mb-0\">\n              {{ $options.i18n.tooLarge }}\n            </p>\n            <gl-button data-testid=\"blob-button\" category=\"secondary\" :href=\"viewBlobHref\">\n              <gl-sprintf :message=\"$options.i18n.blobView\">\n                <template #commitSha>{{ shortSha }}</template>\n              </gl-sprintf>\n            </gl-button>\n          </div>\n          <div v-else v-safe-html=\"errorMessage\" class=\"nothing-here-block\"></div>\n        </div>\n        <template v-else>\n          <div v-if=\"showWarning\" :class=\"$options.warningClasses\">\n            <p class=\"!gl-mb-0\">\n              <gl-sprintf :message=\"expandableWarning\">\n                <template #tag=\"{ content }\">\n                  <code>{{ content }}</code>\n                </template>\n                <template #link=\"{ content }\">\n                  <gl-link :href=\"$options.generatedDiffFileDocsPath\" target=\"_blank\">{{\n                    content\n                  }}</gl-link>\n                </template>\n              </gl-sprintf>\n            </p>\n            <gl-button data-testid=\"expand-button\" @click.prevent=\"handleToggle\">\n              {{ $options.i18n.expand }}\n            </gl-button>\n          </div>\n          <diff-content\n            v-if=\"showContent\"\n            :class=\"hasBodyClasses.content\"\n            :codequality-data=\"codequalityData\"\n            :sast-data=\"sastData\"\n            :diff-file=\"file\"\n            :help-page-path=\"helpPagePath\"\n            :autosave-key=\"autosaveKey\"\n            @load-file=\"requestDiff\"\n          />\n        </template>\n      </div>\n    </template>\n  </div>\n</template>\n","export function hasInlineLines(diffFile) {\n  return diffFile?.highlighted_diff_lines?.length > 0;\n}\n\nexport function hasParallelLines(diffFile) {\n  return diffFile?.parallel_diff_lines?.length > 0;\n}\n\nexport function hasDiff(diffFile) {\n  return hasInlineLines(diffFile) || hasParallelLines(diffFile);\n}\n","import { render, staticRenderFns } from \"./diff_file.vue?vue&type=template&id=5b581a78\"\nimport script from \"./diff_file.vue?vue&type=script&lang=js\"\nexport * from \"./diff_file.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:\"diff-file file-holder\",class:{\n    'gl-border-red-500': _vm.file.conflict_type,\n    'comments-disabled': Boolean(_vm.file.brokenSymlink),\n    'has-body': _vm.showBody,\n    'is-virtual-scrolling': _vm.isVirtualScrollingEnabled,\n    'linked-file': _vm.isLinkedFile,\n    'diff-file-is-active': _vm.isDiffViewActive,\n  },attrs:{\"id\":_vm.file.file_hash,\"data-path\":_vm.file.new_path}},[(!_vm.showLoadingIcon && _vm.file.conflict_type)?_c('gl-alert',{staticClass:\"gl-rounded-t-base\",attrs:{\"variant\":\"danger\",\"dismissible\":false,\"data-testid\":\"conflictsAlert\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.CONFLICT_TEXT[_vm.file.conflict_type])+\"\\n    \"),(!_vm.canMerge)?[_vm._v(\"\\n      \"+_vm._s(_vm.__('Ask someone with write access to resolve it.'))+\"\\n    \")]:(_vm.conflictResolutionPath)?_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n          'You can %{gitlabLinkStart}resolve conflicts on GitLab%{gitlabLinkEnd} or %{resolveLocallyStart}resolve them locally%{resolveLocallyEnd}.',\n        )},scopedSlots:_vm._u([{key:\"gitlabLink\",fn:function({ content }){return [_c('gl-button',{staticClass:\"gl-align-text-bottom\",attrs:{\"href\":_vm.conflictResolutionPath,\"variant\":\"link\"}},[_vm._v(_vm._s(content))])]}},{key:\"resolveLocally\",fn:function({ content }){return [_c('gl-button',{staticClass:\"js-check-out-modal-trigger gl-align-text-bottom\",attrs:{\"variant\":\"link\"}},[_vm._v(_vm._s(content))])]}}],null,false,3377393704)}):_c('gl-sprintf',{attrs:{\"message\":_vm.__('You can %{resolveLocallyStart}resolve them locally%{resolveLocallyEnd}.')},scopedSlots:_vm._u([{key:\"resolveLocally\",fn:function({ content }){return [_c('gl-button',{staticClass:\"js-check-out-modal-trigger gl-align-text-bottom\",attrs:{\"variant\":\"link\"}},[_vm._v(_vm._s(content))])]}}],null,false,2771256657)})],2):_vm._e(),_vm._v(\" \"),_c('diff-file-header',{ref:\"header\",staticClass:\"js-file-title file-title\",class:[\n      _vm.hasBodyClasses.header,\n      {\n        '!gl-rounded-none !gl-bg-red-200': _vm.file.conflict_type,\n        '!gl-rounded-tl-none !gl-rounded-tr-none': _vm.file.conflict_type && _vm.isCollapsed,\n        '!gl-border-0': _vm.file.conflict_type || _vm.isCollapsed,\n      },\n    ],attrs:{\"can-current-user-fork\":_vm.canCurrentUserFork,\"diff-file\":_vm.file,\"collapsible\":true,\"reviewed\":_vm.reviewed,\"expanded\":!_vm.isCollapsed,\"add-merge-request-buttons\":true,\"view-diffs-file-by-file\":_vm.viewDiffsFileByFile,\"show-local-file-reviews\":_vm.showLocalFileReviews},on:{\"toggleFile\":function($event){return _vm.handleToggle({ viaUserInteraction: true })},\"showForkMessage\":_vm.showForkMessage}}),_vm._v(\" \"),(_vm.idState.forkMessageVisible)?_c('div',{staticClass:\"js-file-fork-suggestion-section file-fork-suggestion gl-border-1 gl-border-t-0 gl-border-solid gl-border-default\"},[_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.forkMessage),expression:\"forkMessage\"}],staticClass:\"file-fork-suggestion-note\"}),_vm._v(\" \"),_c('gl-button',{staticClass:\"js-fork-suggestion-button gl-mr-3\",attrs:{\"href\":_vm.file.fork_path,\"category\":\"secondary\",\"variant\":\"confirm\"}},[_vm._v(_vm._s(_vm.$options.i18n.fork))]),_vm._v(\" \"),_c('gl-button',{staticClass:\"js-cancel-fork-suggestion-button\",attrs:{\"category\":\"secondary\"},on:{\"click\":_vm.hideForkMessage}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.cancel)+\"\\n    \")])],1):[_c('div',{staticClass:\"diff-content\",class:[\n        _vm.hasBodyClasses.contentByHash,\n        {\n          '!gl-border-0': _vm.file.conflict_type,\n        },\n      ],attrs:{\"id\":_vm.fileId,\"data-testid\":\"content-area\"}},[(_vm.showFileDiscussions)?_c('div',{attrs:{\"data-testid\":\"file-discussions\"}},[_c('div',{staticClass:\"diff-file-discussions-wrapper\"},[(_vm.isFileDiscussionsExpanded)?[(_vm.fileDiscussions.length)?_c('diff-discussions',{staticClass:\"diff-file-discussions\",attrs:{\"data-testid\":\"diff-file-discussions\",\"discussions\":_vm.fileDiscussions}}):_vm._e(),_vm._v(\" \"),_c('diff-file-drafts',{staticClass:\"diff-file-discussions\",attrs:{\"file-hash\":_vm.file.file_hash,\"show-pin\":false,\"position-type\":_vm.$options.FILE_DIFF_POSITION_TYPE,\"autosave-key\":_vm.autosaveKey}})]:_c('diff-file-discussion-expansion',{attrs:{\"discussions\":_vm.fileDiscussions},on:{\"toggle\":_vm.toggleFileDiscussionVisibility}}),_vm._v(\" \"),(_vm.file.hasCommentForm)?_c('note-form',{staticClass:\"gl-px-5 gl-py-3\",attrs:{\"save-button-title\":_vm.__('Comment'),\"diff-file\":_vm.file,\"autosave-key\":_vm.autosaveKey,\"autofocus\":\"\",\"data-testid\":\"file-note-form\"},on:{\"handleFormUpdate\":_vm.handleSaveNote,\"handleFormUpdateAddToReview\":_vm.handleSaveDraftNote,\"cancelForm\":_vm.handleFileCommentCancel}}):_vm._e()],2)]):_vm._e(),_vm._v(\" \"),(_vm.showLoadingIcon)?_c('gl-loading-icon',{staticClass:\"diff-content loading gl-my-0 gl-pt-3\",attrs:{\"size\":\"sm\",\"data-testid\":\"loader-icon\"}}):(_vm.errorMessage)?_c('div',{staticClass:\"diff-viewer\"},[(_vm.isFileTooLarge)?_c('div',{class:_vm.$options.warningClasses},[_c('p',{staticClass:\"!gl-mb-0\"},[_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.tooLarge)+\"\\n          \")]),_vm._v(\" \"),_c('gl-button',{attrs:{\"data-testid\":\"blob-button\",\"category\":\"secondary\",\"href\":_vm.viewBlobHref}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.blobView},scopedSlots:_vm._u([{key:\"commitSha\",fn:function(){return [_vm._v(_vm._s(_vm.shortSha))]},proxy:true}],null,false,1992810099)})],1)],1):_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.errorMessage),expression:\"errorMessage\"}],staticClass:\"nothing-here-block\"})]):[(_vm.showWarning)?_c('div',{class:_vm.$options.warningClasses},[_c('p',{staticClass:\"!gl-mb-0\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.expandableWarning},scopedSlots:_vm._u([{key:\"tag\",fn:function({ content }){return [_c('code',[_vm._v(_vm._s(content))])]}},{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.generatedDiffFileDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}],null,false,895905471)})],1),_vm._v(\" \"),_c('gl-button',{attrs:{\"data-testid\":\"expand-button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleToggle.apply(null, arguments)}}},[_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.expand)+\"\\n          \")])],1):_vm._e(),_vm._v(\" \"),(_vm.showContent)?_c('diff-content',{class:_vm.hasBodyClasses.content,attrs:{\"codequality-data\":_vm.codequalityData,\"sast-data\":_vm.sastData,\"diff-file\":_vm.file,\"help-page-path\":_vm.helpPagePath,\"autosave-key\":_vm.autosaveKey},on:{\"load-file\":_vm.requestDiff}}):_vm._e()]],2)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAlert, GlButton, GlSprintf } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport const i18n = {\n  title: __('Some changes are not shown.'),\n  plainDiff: __('Plain diff'),\n  emailPatch: __('Patches'),\n};\n\nexport default {\n  i18n,\n  components: {\n    GlAlert,\n    GlButton,\n    GlSprintf,\n  },\n  props: {\n    total: {\n      type: String,\n      required: true,\n    },\n    visible: {\n      type: Number,\n      required: true,\n    },\n    plainDiffPath: {\n      type: String,\n      required: true,\n    },\n    emailPatchPath: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-alert variant=\"warning\" class=\"gl-mb-5\" :title=\"$options.i18n.title\" :dismissible=\"false\">\n    <gl-sprintf\n      :message=\"\n        sprintf(\n          __(\n            'For a faster browsing experience, only %{strongStart}%{visible} of %{total}%{strongEnd} files are shown. Download one of the files below to see all changes.',\n          ),\n          { visible, total } /* eslint-disable-line @gitlab/vue-no-new-non-primitive-in-template */,\n        )\n      \"\n    >\n      <template #strong=\"{ content }\">\n        <strong>{{ content }}</strong>\n      </template>\n    </gl-sprintf>\n    <template #actions>\n      <gl-button :href=\"plainDiffPath\" class=\"gl-alert-action gl-mr-3\">\n        {{ $options.i18n.plainDiff }}\n      </gl-button>\n      <gl-button :href=\"emailPatchPath\" class=\"gl-alert-action\">\n        {{ $options.i18n.emailPatch }}\n      </gl-button>\n    </template>\n  </gl-alert>\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!./hidden_files_warning.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!./hidden_files_warning.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./hidden_files_warning.vue?vue&type=template&id=cd9eae96\"\nimport script from \"./hidden_files_warning.vue?vue&type=script&lang=js\"\nexport * from \"./hidden_files_warning.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-alert',{staticClass:\"gl-mb-5\",attrs:{\"variant\":\"warning\",\"title\":_vm.$options.i18n.title,\"dismissible\":false},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('gl-button',{staticClass:\"gl-alert-action gl-mr-3\",attrs:{\"href\":_vm.plainDiffPath}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.plainDiff)+\"\\n    \")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-alert-action\",attrs:{\"href\":_vm.emailPatchPath}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.emailPatch)+\"\\n    \")])]},proxy:true}])},[_c('gl-sprintf',{attrs:{\"message\":_vm.sprintf(\n        _vm.__(\n          'For a faster browsing experience, only %{strongStart}%{visible} of %{total}%{strongEnd} files are shown. Download one of the files below to see all changes.',\n        ),\n        { visible: _vm.visible, total: _vm.total } /* eslint-disable-line @gitlab/vue-no-new-non-primitive-in-template */,\n      )},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('strong',[_vm._v(_vm._s(content))])]}}])})],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!./no_changes.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!./no_changes.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlEmptyState } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport { s__, __ } from '~/locale';\n\nexport default {\n  i18n: {\n    title: s__('MergeRequest|There are no changes yet'),\n    message: __('No changes between %{source} and %{target}'),\n    buttonText: __('Create commit'),\n  },\n  components: {\n    GlSprintf,\n    GlEmptyState,\n  },\n  props: {\n    changesEmptyStateIllustration: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapGetters('diffs', [\n      'diffCompareDropdownTargetVersions',\n      'diffCompareDropdownSourceVersions',\n    ]),\n    ...mapGetters(['getNoteableData']),\n    selectedSourceVersion() {\n      return this.diffCompareDropdownSourceVersions.find((x) => x.selected);\n    },\n    sourceName() {\n      if (!this.selectedSourceVersion || this.selectedSourceVersion.isLatestVersion) {\n        return this.getNoteableData.source_branch;\n      }\n\n      return this.selectedSourceVersion.versionName;\n    },\n    selectedTargetVersion() {\n      return this.diffCompareDropdownTargetVersions.find((x) => x.selected);\n    },\n    targetName() {\n      if (!this.selectedTargetVersion || this.selectedTargetVersion.version_index < 0) {\n        return this.getNoteableData.target_branch;\n      }\n\n      return this.selectedTargetVersion.versionName || '';\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-empty-state\n    :title=\"$options.i18n.title\"\n    :svg-path=\"changesEmptyStateIllustration\"\n    :primary-button-text=\"$options.i18n.buttonText\"\n    :primary-button-link=\"getNoteableData.new_blob_path\"\n  >\n    <template #description>\n      <span data-testid=\"no-changes-message\">\n        <gl-sprintf :message=\"$options.i18n.message\">\n          <template #source>\n            <span class=\"ref-name\">{{ sourceName }}</span>\n          </template>\n          <template #target>\n            <span class=\"ref-name\">{{ targetName }}</span>\n          </template>\n        </gl-sprintf>\n      </span>\n    </template>\n  </gl-empty-state>\n</template>\n","import { render, staticRenderFns } from \"./no_changes.vue?vue&type=template&id=253afef0\"\nimport script from \"./no_changes.vue?vue&type=script&lang=js\"\nexport * from \"./no_changes.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-empty-state',{attrs:{\"title\":_vm.$options.i18n.title,\"svg-path\":_vm.changesEmptyStateIllustration,\"primary-button-text\":_vm.$options.i18n.buttonText,\"primary-button-link\":_vm.getNoteableData.new_blob_path},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_c('span',{attrs:{\"data-testid\":\"no-changes-message\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.message},scopedSlots:_vm._u([{key:\"source\",fn:function(){return [_c('span',{staticClass:\"ref-name\"},[_vm._v(_vm._s(_vm.sourceName))])]},proxy:true},{key:\"target\",fn:function(){return [_c('span',{staticClass:\"ref-name\"},[_vm._v(_vm._s(_vm.targetName))])]},proxy:true}])})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { handleLocationHash } from '~/lib/utils/common_utils';\n\nexport default {\n  inject: ['vscrollParent'],\n  model: {\n    prop: 'index',\n  },\n  props: {\n    index: {\n      type: Number,\n      required: true,\n    },\n  },\n  watch: {\n    index: {\n      handler() {\n        const { index } = this;\n\n        if (index < 0) return;\n\n        this.scrollToIndex(index);\n\n        if (!this.vscrollParent.itemsWithSize[index].size) {\n          this.$_itemsWithSizeWatcher = this.$watch('vscrollParent.itemsWithSize', async () => {\n            await this.$nextTick();\n\n            if (this.vscrollParent.itemsWithSize[index].size) {\n              this.$_itemsWithSizeWatcher();\n\n              await this.$nextTick();\n\n              this.scrollToIndex(index);\n            }\n          });\n        }\n      },\n      immediate: true,\n    },\n  },\n  beforeDestroy() {\n    if (this.$_itemsWithSizeWatcher) this.$_itemsWithSizeWatcher();\n  },\n  methods: {\n    async scrollToIndex(index) {\n      this.vscrollParent.scrollToItem(index);\n      this.$emit('update', -1);\n\n      await this.$nextTick();\n\n      setTimeout(() => {\n        handleLocationHash();\n      });\n    },\n  },\n  render(h) {\n    return h(null);\n  },\n};\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file_row_stats.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!./file_row_stats.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  props: {\n    file: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <span class=\"file-row-stats\">\n    <span data-testid=\"file-added-lines\" class=\"gl-text-success\"> +{{ file.addedLines }} </span>\n    <span data-testid=\"file-removed-lines\" class=\"gl-text-danger\"> -{{ file.removedLines }} </span>\n  </span>\n</template>\n\n<style>\n.file-row-stats {\n  font-size: 12px;\n}\n</style>\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--20-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file_row_stats.vue?vue&type=style&index=0&id=66163f5f&prod&lang=css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./file_row_stats.vue?vue&type=template&id=66163f5f\"\nimport script from \"./file_row_stats.vue?vue&type=script&lang=js\"\nexport * from \"./file_row_stats.vue?vue&type=script&lang=js\"\nimport style0 from \"./file_row_stats.vue?vue&type=style&index=0&id=66163f5f&prod&lang=css\"\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:\"file-row-stats\"},[_c('span',{staticClass:\"gl-text-success\",attrs:{\"data-testid\":\"file-added-lines\"}},[_vm._v(\" +\"+_vm._s(_vm.file.addedLines)+\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-danger\",attrs:{\"data-testid\":\"file-removed-lines\"}},[_vm._v(\" -\"+_vm._s(_vm.file.removedLines)+\" \")])])\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!./diff_file_row.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_file_row.vue?vue&type=script&lang=js\"","<script>\n/**\n * This component is an iterative step towards refactoring and simplifying `vue_shared/components/file_row.vue`\n * https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23720\n */\nimport ChangedFileIcon from '~/vue_shared/components/changed_file_icon.vue';\nimport FileRow from '~/vue_shared/components/file_row.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport FileRowStats from './file_row_stats.vue';\n\nexport default {\n  name: 'DiffFileRow',\n  components: {\n    FileRow,\n    FileRowStats,\n    ChangedFileIcon,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  props: {\n    file: {\n      type: Object,\n      required: true,\n    },\n    hideFileStats: {\n      type: Boolean,\n      required: true,\n    },\n    currentDiffFileId: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    viewedFiles: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n  },\n  computed: {\n    showFileRowStats() {\n      return !this.hideFileStats && this.file.type === 'blob';\n    },\n    fileClasses() {\n      return this.file.type === 'blob' && !this.viewedFiles[this.file.fileHash]\n        ? 'gl-font-bold'\n        : 'gl-text-subtle';\n    },\n    isActive() {\n      return this.currentDiffFileId === this.file.fileHash;\n    },\n  },\n};\n</script>\n\n<template>\n  <file-row\n    :file=\"file\"\n    v-bind=\"$attrs\"\n    :class=\"{ 'is-active': isActive }\"\n    class=\"diff-file-row\"\n    truncate-middle\n    :file-classes=\"fileClasses\"\n    v-on=\"$listeners\"\n  >\n    <file-row-stats v-if=\"showFileRowStats\" :file=\"file\" class=\"gl-mr-2\" />\n    <changed-file-icon :file=\"file\" :size=\"16\" :show-tooltip=\"true\" />\n  </file-row>\n</template>\n","import { render, staticRenderFns } from \"./diff_file_row.vue?vue&type=template&id=689e5ffc\"\nimport script from \"./diff_file_row.vue?vue&type=script&lang=js\"\nexport * from \"./diff_file_row.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('file-row',_vm._g(_vm._b({staticClass:\"diff-file-row\",class:{ 'is-active': _vm.isActive },attrs:{\"file\":_vm.file,\"truncate-middle\":\"\",\"file-classes\":_vm.fileClasses}},'file-row',_vm.$attrs,false),_vm.$listeners),[(_vm.showFileRowStats)?_c('file-row-stats',{staticClass:\"gl-mr-2\",attrs:{\"file\":_vm.file}}):_vm._e(),_vm._v(\" \"),_c('changed-file-icon',{attrs:{\"file\":_vm.file,\"size\":16,\"show-tooltip\":true}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { debounce } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapGetters } from 'vuex';\nimport { contentTop } from '~/lib/utils/common_utils';\n\nconst MAX_ITEMS_ON_NARROW_SCREEN = 8;\n// Should be enough for the very long titles (10+ lines) on the max smallest screen\nconst MAX_SCROLL_Y = 600;\nconst BOTTOM_OFFSET = 16;\n\nexport default {\n  name: 'TreeListHeight',\n  props: {\n    itemsCount: {\n      type: Number,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      scrollerHeight: 0,\n      rowHeight: 0,\n      reviewBarHeight: 0,\n      scrollY: 0,\n      isNarrowScreen: false,\n      mediaQueryMatch: null,\n    };\n  },\n  computed: {\n    ...mapState('batchComments', ['reviewBarRendered']),\n    ...mapGetters('batchComments', ['draftsCount']),\n    reviewBarEnabled() {\n      return this.draftsCount > 0;\n    },\n    debouncedHeightCalc() {\n      return debounce(this.calculateScrollerHeight, 100);\n    },\n    debouncedRecordScroll() {\n      return debounce(this.recordScroll, 50);\n    },\n  },\n  watch: {\n    reviewBarRendered: {\n      handler(rendered) {\n        if (!rendered || this.reviewBarHeight) return;\n        this.reviewBarHeight = document.querySelector('.js-review-bar').offsetHeight;\n        this.debouncedHeightCalc();\n      },\n      immediate: true,\n    },\n    reviewBarEnabled: 'debouncedHeightCalc',\n    scrollY: 'debouncedHeightCalc',\n    isNarrowScreen: 'recordScroll',\n  },\n  mounted() {\n    const computedStyles = getComputedStyle(this.$refs.scrollRoot);\n    this.rowHeight = parseInt(computedStyles.getPropertyValue('--file-row-height'), 10);\n\n    const largeBreakpointSize = parseInt(computedStyles.getPropertyValue('--breakpoint-lg'), 10);\n    this.mediaQueryMatch = window.matchMedia(`(max-width: ${largeBreakpointSize - 1}px)`);\n    this.isNarrowScreen = this.mediaQueryMatch.matches;\n    this.mediaQueryMatch.addEventListener('change', this.handleMediaMatch);\n\n    window.addEventListener('resize', this.debouncedHeightCalc, { passive: true });\n    window.addEventListener('scroll', this.debouncedRecordScroll, { passive: true });\n    window.mrTabs.eventHub.$on('MergeRequestTabChange', this.onTabChange);\n\n    this.calculateScrollerHeight();\n  },\n  beforeDestroy() {\n    this.mediaQueryMatch.removeEventListener('change', this.handleMediaMatch);\n    this.mediaQueryMatch = null;\n    window.removeEventListener('resize', this.debouncedHeightCalc, { passive: true });\n    window.removeEventListener('scroll', this.debouncedRecordScroll, { passive: true });\n    window.mrTabs.eventHub.$off('MergeRequestTabChange', this.onTabChange);\n  },\n  methods: {\n    recordScroll() {\n      const { scrollY } = window;\n      if (scrollY > MAX_SCROLL_Y || this.isNarrowScreen) {\n        this.scrollY = MAX_SCROLL_Y;\n      } else {\n        this.scrollY = window.scrollY;\n      }\n    },\n    handleMediaMatch({ matches }) {\n      this.isNarrowScreen = matches;\n    },\n    calculateScrollerHeight() {\n      if (this.isNarrowScreen) {\n        const maxItems = Math.min(MAX_ITEMS_ON_NARROW_SCREEN, this.itemsCount);\n        const maxHeight = maxItems * this.rowHeight;\n        this.scrollerHeight = Math.min(maxHeight, window.innerHeight - contentTop());\n      } else {\n        const { y } = this.$refs.scrollRoot.getBoundingClientRect();\n        const reviewBarOffset = this.reviewBarEnabled ? this.reviewBarHeight : 0;\n        // distance from element's top vertical position in the viewport to the bottom of the viewport minus offsets\n        this.scrollerHeight = window.innerHeight - y - reviewBarOffset - BOTTOM_OFFSET;\n      }\n    },\n    onTabChange(currentTab) {\n      if (currentTab !== 'diffs') return;\n      this.debouncedHeightCalc();\n    },\n  },\n};\n</script>\n\n<template>\n  <div ref=\"scrollRoot\">\n    <slot :scroller-height=\"scrollerHeight\" :row-height=\"rowHeight\"></slot>\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!./tree_list_height.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!./tree_list_height.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./tree_list_height.vue?vue&type=template&id=153f4462\"\nimport script from \"./tree_list_height.vue?vue&type=script&lang=js\"\nexport * from \"./tree_list_height.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"scrollRoot\"},[_vm._t(\"default\",null,{\"scrollerHeight\":_vm.scrollerHeight,\"rowHeight\":_vm.rowHeight})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n  GlTooltipDirective,\n  GlBadge,\n  GlButtonGroup,\n  GlButton,\n  GlSearchBoxByType,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport micromatch from 'micromatch';\nimport { getModifierKey } from '~/constants';\nimport { s__, sprintf } from '~/locale';\nimport { RecycleScroller } from 'vendor/vue-virtual-scroller';\nimport DiffFileRow from './diff_file_row.vue';\nimport TreeListHeight from './tree_list_height.vue';\n\nconst MODIFIER_KEY = getModifierKey();\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlBadge,\n    GlButtonGroup,\n    GlButton,\n    TreeListHeight,\n    DiffFileRow,\n    RecycleScroller,\n    GlSearchBoxByType,\n  },\n  props: {\n    hideFileStats: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      search: '',\n    };\n  },\n  computed: {\n    ...mapState('diffs', [\n      'tree',\n      'renderTreeList',\n      'currentDiffFileId',\n      'viewedDiffFileIds',\n      'realSize',\n    ]),\n    ...mapGetters('diffs', ['allBlobs', 'linkedFile']),\n    filteredTreeList() {\n      let search = this.search.toLowerCase().trim();\n\n      if (search === '') {\n        return this.renderTreeList ? this.tree : this.allBlobs;\n      }\n\n      const searchSplit = search.split(',').filter((t) => t);\n\n      if (searchSplit.length > 1) {\n        search = `(${searchSplit.map((s) => s.replace(/(^ +| +$)/g, '')).join('|')})`;\n      } else {\n        [search] = searchSplit;\n      }\n\n      return this.allBlobs.reduce((acc, folder) => {\n        const tree = folder.tree.filter((f) =>\n          micromatch.contains(f.path, search, { nocase: true }),\n        );\n\n        if (tree.length) {\n          return acc.concat({\n            ...folder,\n            tree,\n          });\n        }\n\n        return acc;\n      }, []);\n    },\n    // Flatten the treeList so there's no nested trees\n    // This gives us fixed row height for virtual scrolling\n    // in:  [{ path: 'a', tree: [{ path: 'b' }] }, { path: 'c' }]\n    // out: [{ path: 'a', tree: [{ path: 'b' }] }, { path: 'b' }, { path: 'c' }]\n    flatFilteredTreeList() {\n      const result = [];\n      const createFlatten = (level, hidden) => (item) => {\n        result.push({\n          ...item,\n          hidden,\n          level: item.isHeader ? 0 : level,\n          key: item.key || item.path,\n        });\n        const isHidden = hidden || (item.type === 'tree' && !item.opened);\n        item.tree.forEach(createFlatten(level + 1, isHidden));\n      };\n\n      this.filteredTreeList.forEach(createFlatten(0));\n\n      return result;\n    },\n    flatListWithLinkedFile() {\n      const result = [...this.flatFilteredTreeList];\n      const linkedFileIndex = result.findIndex((item) => item.path === this.linkedFile.file_path);\n      const [linkedFileItem] = result.splice(linkedFileIndex, 1);\n\n      if (linkedFileItem.parentPath === '/')\n        return [{ ...linkedFileItem, level: 0, linked: true, hidden: false }, ...result];\n\n      // remove detached folder from the tree\n      const next = result[linkedFileIndex];\n      const prev = result[linkedFileIndex - 1];\n      const hasContainingFolder =\n        prev && prev.type === 'tree' && prev.level === linkedFileItem.level - 1;\n      const hasSibling = next && next.type !== 'tree' && next.level === linkedFileItem.level;\n      if (hasContainingFolder && !hasSibling) {\n        // folder tree is always condensed so we only need to remove the parent folder\n        result.splice(linkedFileIndex - 1, 1);\n      }\n\n      return [\n        {\n          level: 0,\n          key: 'linked-path',\n          isHeader: true,\n          opened: true,\n          path: linkedFileItem.parentPath,\n          type: 'tree',\n          hidden: false,\n        },\n        { ...linkedFileItem, level: 1, linked: true, hidden: false },\n        ...result,\n      ];\n    },\n    treeList() {\n      const list = this.linkedFile ? this.flatListWithLinkedFile : this.flatFilteredTreeList;\n      if (this.search) return list;\n      return list.filter((item) => !item.hidden);\n    },\n  },\n  watch: {\n    currentDiffFileId(hash) {\n      if (hash) {\n        this.scrollVirtualScrollerToFileHash(hash);\n        this.openFileTree(hash);\n      }\n    },\n  },\n  methods: {\n    ...mapActions('diffs', ['toggleTreeOpen', 'goToFile', 'setRenderTreeList', 'setTreeOpen']),\n\n    scrollVirtualScrollerToFileHash(hash) {\n      const index = this.treeList.findIndex((f) => f.fileHash === hash);\n      if (index !== -1) {\n        this.$refs.scroller.scrollToItem?.(index);\n      }\n    },\n    openFileTree(hash) {\n      const file = this.flatFilteredTreeList.find((f) => f.fileHash === hash);\n\n      if (file) {\n        file.path\n          .split('/')\n          .slice(0, -1)\n          .reduce((acc, part) => [...acc, acc.length ? `${acc.at(-1)}/${part}` : part], [])\n          .forEach((path) => this.setTreeOpen({ path, opened: true }));\n      }\n    },\n  },\n  searchPlaceholder: sprintf(s__('MergeRequest|Search (e.g. *.vue) (%{MODIFIER_KEY}P)'), {\n    MODIFIER_KEY,\n  }),\n};\n</script>\n\n<template>\n  <div class=\"tree-list-holder flex-column gl-flex\" data-testid=\"file-tree-container\">\n    <div class=\"gl-mb-3 gl-flex gl-items-center\">\n      <h5 class=\"gl-my-0 gl-inline-block\">{{ __('Files') }}</h5>\n      <gl-badge class=\"gl-ml-2\" data-testid=\"file-count\">{{ realSize }}</gl-badge>\n      <gl-button-group class=\"gl-ml-auto\">\n        <gl-button\n          v-gl-tooltip.hover\n          icon=\"list-bulleted\"\n          :selected=\"!renderTreeList\"\n          :title=\"__('List view')\"\n          :aria-label=\"__('List view')\"\n          data-testid=\"list-view-toggle\"\n          @click=\"setRenderTreeList({ renderTreeList: false })\"\n        />\n        <gl-button\n          v-gl-tooltip.hover\n          icon=\"file-tree\"\n          :selected=\"renderTreeList\"\n          :title=\"__('Tree view')\"\n          :aria-label=\"__('Tree view')\"\n          data-testid=\"tree-view-toggle\"\n          @click=\"setRenderTreeList({ renderTreeList: true })\"\n        />\n      </gl-button-group>\n    </div>\n    <label for=\"diff-tree-search\" class=\"sr-only\">{{ $options.searchPlaceholder }}</label>\n    <gl-search-box-by-type\n      id=\"diff-tree-search\"\n      v-model=\"search\"\n      :placeholder=\"$options.searchPlaceholder\"\n      name=\"diff-tree-search\"\n      data-testid=\"diff-tree-search\"\n      :clear-button-title=\"__('Clear search')\"\n      class=\"gl-mb-3\"\n    />\n    <tree-list-height class=\"gl-min-h-0 gl-grow\" :items-count=\"treeList.length\">\n      <template #default=\"{ scrollerHeight, rowHeight }\">\n        <div :class=\"{ 'tree-list-blobs': !renderTreeList || search }\" class=\"mr-tree-list\">\n          <recycle-scroller\n            v-if=\"treeList.length\"\n            ref=\"scroller\"\n            :style=\"{ height: `${scrollerHeight}px` }\"\n            :items=\"treeList\"\n            :item-size=\"rowHeight\"\n            :buffer=\"100\"\n            key-field=\"key\"\n          >\n            <template #default=\"{ item }\">\n              <diff-file-row\n                :file=\"item\"\n                :level=\"item.level\"\n                :viewed-files=\"viewedDiffFileIds\"\n                :hide-file-stats=\"hideFileStats\"\n                :current-diff-file-id=\"currentDiffFileId\"\n                :style=\"{ '--level': item.level }\"\n                :class=\"{ 'tree-list-parent': item.level > 0 }\"\n                class=\"gl-relative\"\n                @toggleTreeOpen=\"toggleTreeOpen\"\n                @clickFile=\"(path) => goToFile({ path })\"\n              />\n            </template>\n            <template #after>\n              <div class=\"tree-list-gutter\"></div>\n            </template>\n          </recycle-scroller>\n          <p v-else class=\"prepend-top-20 append-bottom-20 text-center\">\n            {{ s__('MergeRequest|No files found') }}\n          </p>\n        </div>\n      </template>\n    </tree-list-height>\n  </div>\n</template>\n\n<style>\n.tree-list-blobs .file-row-name {\n  margin-left: 12px;\n}\n</style>\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!./tree_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!./tree_list.vue?vue&type=script&lang=js\"","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--20-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tree_list.vue?vue&type=style&index=0&id=1f253d80&prod&lang=css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","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!./diffs_file_tree.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!./diffs_file_tree.vue?vue&type=script&lang=js\"","<script>\nimport { Mousetrap } from '~/lib/mousetrap';\nimport { keysFor, MR_TOGGLE_FILE_BROWSER } from '~/behaviors/shortcuts/keybindings';\nimport PanelResizer from '~/vue_shared/components/panel_resizer.vue';\nimport {\n  INITIAL_TREE_WIDTH,\n  MIN_TREE_WIDTH,\n  TREE_HIDE_STATS_WIDTH,\n  TREE_LIST_WIDTH_STORAGE_KEY,\n} from '../constants';\nimport TreeList from './tree_list.vue';\n\nexport default {\n  name: 'DiffsFileTree',\n  components: { TreeList, PanelResizer },\n  minTreeWidth: MIN_TREE_WIDTH,\n  maxTreeWidth: window.innerWidth / 2,\n  props: {\n    visible: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  data() {\n    const treeWidth =\n      parseInt(localStorage.getItem(TREE_LIST_WIDTH_STORAGE_KEY), 10) || INITIAL_TREE_WIDTH;\n\n    return {\n      treeWidth,\n    };\n  },\n  computed: {\n    hideFileStats() {\n      return this.treeWidth <= TREE_HIDE_STATS_WIDTH;\n    },\n  },\n  mounted() {\n    Mousetrap.bind(keysFor(MR_TOGGLE_FILE_BROWSER), this.toggle);\n  },\n  beforeDestroy() {\n    Mousetrap.unbind(keysFor(MR_TOGGLE_FILE_BROWSER), this.toggle);\n  },\n  methods: {\n    toggle() {\n      this.$emit('toggled');\n    },\n    cacheTreeListWidth(size) {\n      localStorage.setItem(TREE_LIST_WIDTH_STORAGE_KEY, size);\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"visible\" :style=\"{ width: `${treeWidth}px` }\" class=\"diff-tree-list gl-px-5\">\n    <panel-resizer\n      :size.sync=\"treeWidth\"\n      :start-size=\"treeWidth\"\n      :min-size=\"$options.minTreeWidth\"\n      :max-size=\"$options.maxTreeWidth\"\n      side=\"right\"\n      @resize-end=\"cacheTreeListWidth\"\n    />\n    <tree-list :hide-file-stats=\"hideFileStats\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./tree_list.vue?vue&type=template&id=1f253d80\"\nimport script from \"./tree_list.vue?vue&type=script&lang=js\"\nexport * from \"./tree_list.vue?vue&type=script&lang=js\"\nimport style0 from \"./tree_list.vue?vue&type=style&index=0&id=1f253d80&prod&lang=css\"\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:\"tree-list-holder flex-column gl-flex\",attrs:{\"data-testid\":\"file-tree-container\"}},[_c('div',{staticClass:\"gl-mb-3 gl-flex gl-items-center\"},[_c('h5',{staticClass:\"gl-my-0 gl-inline-block\"},[_vm._v(_vm._s(_vm.__('Files')))]),_vm._v(\" \"),_c('gl-badge',{staticClass:\"gl-ml-2\",attrs:{\"data-testid\":\"file-count\"}},[_vm._v(_vm._s(_vm.realSize))]),_vm._v(\" \"),_c('gl-button-group',{staticClass:\"gl-ml-auto\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"icon\":\"list-bulleted\",\"selected\":!_vm.renderTreeList,\"title\":_vm.__('List view'),\"aria-label\":_vm.__('List view'),\"data-testid\":\"list-view-toggle\"},on:{\"click\":function($event){return _vm.setRenderTreeList({ renderTreeList: false })}}}),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"icon\":\"file-tree\",\"selected\":_vm.renderTreeList,\"title\":_vm.__('Tree view'),\"aria-label\":_vm.__('Tree view'),\"data-testid\":\"tree-view-toggle\"},on:{\"click\":function($event){return _vm.setRenderTreeList({ renderTreeList: true })}}})],1)],1),_vm._v(\" \"),_c('label',{staticClass:\"sr-only\",attrs:{\"for\":\"diff-tree-search\"}},[_vm._v(_vm._s(_vm.$options.searchPlaceholder))]),_vm._v(\" \"),_c('gl-search-box-by-type',{staticClass:\"gl-mb-3\",attrs:{\"id\":\"diff-tree-search\",\"placeholder\":_vm.$options.searchPlaceholder,\"name\":\"diff-tree-search\",\"data-testid\":\"diff-tree-search\",\"clear-button-title\":_vm.__('Clear search')},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_vm._v(\" \"),_c('tree-list-height',{staticClass:\"gl-min-h-0 gl-grow\",attrs:{\"items-count\":_vm.treeList.length},scopedSlots:_vm._u([{key:\"default\",fn:function({ scrollerHeight, rowHeight }){return [_c('div',{staticClass:\"mr-tree-list\",class:{ 'tree-list-blobs': !_vm.renderTreeList || _vm.search }},[(_vm.treeList.length)?_c('recycle-scroller',{ref:\"scroller\",style:({ height: `${scrollerHeight}px` }),attrs:{\"items\":_vm.treeList,\"item-size\":rowHeight,\"buffer\":100,\"key-field\":\"key\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item }){return [_c('diff-file-row',{staticClass:\"gl-relative\",class:{ 'tree-list-parent': item.level > 0 },style:({ '--level': item.level }),attrs:{\"file\":item,\"level\":item.level,\"viewed-files\":_vm.viewedDiffFileIds,\"hide-file-stats\":_vm.hideFileStats,\"current-diff-file-id\":_vm.currentDiffFileId},on:{\"toggleTreeOpen\":_vm.toggleTreeOpen,\"clickFile\":(path) => _vm.goToFile({ path })}})]}},{key:\"after\",fn:function(){return [_c('div',{staticClass:\"tree-list-gutter\"})]},proxy:true}],null,true)}):_c('p',{staticClass:\"prepend-top-20 append-bottom-20 text-center\"},[_vm._v(\"\\n          \"+_vm._s(_vm.s__('MergeRequest|No files found'))+\"\\n        \")])],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./diffs_file_tree.vue?vue&type=template&id=1be523f1\"\nimport script from \"./diffs_file_tree.vue?vue&type=script&lang=js\"\nexport * from \"./diffs_file_tree.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.visible)?_c('div',{staticClass:\"diff-tree-list gl-px-5\",style:({ width: `${_vm.treeWidth}px` })},[_c('panel-resizer',{attrs:{\"size\":_vm.treeWidth,\"start-size\":_vm.treeWidth,\"min-size\":_vm.$options.minTreeWidth,\"max-size\":_vm.$options.maxTreeWidth,\"side\":\"right\"},on:{\"update:size\":function($event){_vm.treeWidth=$event},\"resize-end\":_vm.cacheTreeListWidth}}),_vm._v(\" \"),_c('tree-list',{attrs:{\"hide-file-stats\":_vm.hideFileStats}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlButtonGroup, GlTooltipDirective } from '@gitlab/ui';\nimport SettingsDropdown from '~/diffs/components/settings_dropdown.vue';\nimport DiffStats from '~/diffs/components/diff_stats.vue';\nimport { sanitize } from '~/lib/dompurify';\nimport {\n  keysFor,\n  MR_COLLAPSE_ALL_FILES,\n  MR_EXPAND_ALL_FILES,\n} from '~/behaviors/shortcuts/keybindings';\nimport { Mousetrap } from '~/lib/mousetrap';\n\nconst createHotkeyHtml = (key) => `<kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`;\n\nexport default {\n  name: 'DiffAppControls',\n  components: { DiffStats, SettingsDropdown, GlButton, GlButtonGroup },\n  directives: {\n    glTooltip: GlTooltipDirective,\n  },\n  props: {\n    hasChanges: {\n      type: Boolean,\n      required: true,\n    },\n    diffsCount: {\n      type: String,\n      default: '',\n      required: false,\n    },\n    addedLines: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n    removedLines: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n    showWhitespace: {\n      type: Boolean,\n      required: true,\n    },\n    diffViewType: {\n      type: String,\n      required: true,\n    },\n    viewDiffsFileByFile: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    expandButtonInfo() {\n      const keys = keysFor(MR_EXPAND_ALL_FILES);\n      return {\n        title: MR_EXPAND_ALL_FILES.description,\n        keys,\n        tooltip: sanitize(`${MR_EXPAND_ALL_FILES.description} ${createHotkeyHtml(keys[0])}`),\n      };\n    },\n    collapseButtonInfo() {\n      const keys = keysFor(MR_COLLAPSE_ALL_FILES);\n      return {\n        title: MR_COLLAPSE_ALL_FILES.description,\n        keys,\n        tooltip: sanitize(`${MR_COLLAPSE_ALL_FILES.description} ${createHotkeyHtml(keys[0])}`),\n      };\n    },\n  },\n  mounted() {\n    Mousetrap.bind(this.expandButtonInfo.keys, this.expandAllFiles);\n    Mousetrap.bind(this.collapseButtonInfo.keys, this.collapseAllFiles);\n  },\n  beforeDestroy() {\n    Mousetrap.unbind(this.expandButtonInfo.keys, this.expandAllFiles);\n    Mousetrap.unbind(this.collapseButtonInfo.keys, this.collapseAllFiles);\n  },\n  methods: {\n    expandAllFiles() {\n      this.$emit('expandAllFiles');\n    },\n    collapseAllFiles() {\n      this.$emit('collapseAllFiles');\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-hidden gl-items-center gl-px-5 gl-pb-2 gl-pt-3 md:gl-flex\">\n    <template v-if=\"hasChanges\">\n      <diff-stats\n        class=\"inline-parallel-buttons ml-auto gl-hidden md:gl-flex\"\n        :diffs-count=\"diffsCount\"\n        :added-lines=\"addedLines\"\n        :removed-lines=\"removedLines\"\n      />\n      <gl-button-group class=\"gl-mr-3\">\n        <gl-button\n          v-gl-tooltip.html=\"expandButtonInfo.tooltip\"\n          icon=\"expand\"\n          variant=\"default\"\n          :aria-label=\"expandButtonInfo.title\"\n          :aria-keyshortcuts=\"expandButtonInfo.keys[0]\"\n          @click=\"$emit('expandAllFiles')\"\n        />\n        <gl-button\n          v-gl-tooltip.html=\"collapseButtonInfo.tooltip\"\n          icon=\"collapse\"\n          variant=\"default\"\n          :aria-label=\"collapseButtonInfo.title\"\n          :aria-keyshortcuts=\"collapseButtonInfo.keys[0]\"\n          @click=\"$emit('collapseAllFiles')\"\n        />\n      </gl-button-group>\n    </template>\n    <settings-dropdown\n      :show-whitespace=\"showWhitespace\"\n      :view-diffs-file-by-file=\"viewDiffsFileByFile\"\n      :diff-view-type=\"diffViewType\"\n      @updateDiffViewType=\"$emit('updateDiffViewType', $event)\"\n      @toggleWhitespace=\"$emit('toggleWhitespace', $event)\"\n      @toggleFileByFile=\"$emit('toggleFileByFile', $event)\"\n    />\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!./diff_app_controls.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!./diff_app_controls.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./diff_app_controls.vue?vue&type=template&id=116474a5\"\nimport script from \"./diff_app_controls.vue?vue&type=script&lang=js\"\nexport * from \"./diff_app_controls.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-hidden gl-items-center gl-px-5 gl-pb-2 gl-pt-3 md:gl-flex\"},[(_vm.hasChanges)?[_c('diff-stats',{staticClass:\"inline-parallel-buttons ml-auto gl-hidden md:gl-flex\",attrs:{\"diffs-count\":_vm.diffsCount,\"added-lines\":_vm.addedLines,\"removed-lines\":_vm.removedLines}}),_vm._v(\" \"),_c('gl-button-group',{staticClass:\"gl-mr-3\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.html\",value:(_vm.expandButtonInfo.tooltip),expression:\"expandButtonInfo.tooltip\",modifiers:{\"html\":true}}],attrs:{\"icon\":\"expand\",\"variant\":\"default\",\"aria-label\":_vm.expandButtonInfo.title,\"aria-keyshortcuts\":_vm.expandButtonInfo.keys[0]},on:{\"click\":function($event){return _vm.$emit('expandAllFiles')}}}),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.html\",value:(_vm.collapseButtonInfo.tooltip),expression:\"collapseButtonInfo.tooltip\",modifiers:{\"html\":true}}],attrs:{\"icon\":\"collapse\",\"variant\":\"default\",\"aria-label\":_vm.collapseButtonInfo.title,\"aria-keyshortcuts\":_vm.collapseButtonInfo.keys[0]},on:{\"click\":function($event){return _vm.$emit('collapseAllFiles')}}})],1)]:_vm._e(),_vm._v(\" \"),_c('settings-dropdown',{attrs:{\"show-whitespace\":_vm.showWhitespace,\"view-diffs-file-by-file\":_vm.viewDiffsFileByFile,\"diff-view-type\":_vm.diffViewType},on:{\"updateDiffViewType\":function($event){return _vm.$emit('updateDiffViewType', $event)},\"toggleWhitespace\":function($event){return _vm.$emit('toggleWhitespace', $event)},\"toggleFileByFile\":function($event){return _vm.$emit('toggleFileByFile', $event)}}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlLoadingIcon, GlPagination, GlSprintf, GlAlert } from '@gitlab/ui';\nimport { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';\nimport { debounce, throttle } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapGetters, mapActions } from 'vuex';\nimport FindingsDrawer from 'ee_component/diffs/components/shared/findings_drawer.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport api from '~/api';\nimport {\n  keysFor,\n  MR_PREVIOUS_FILE_IN_DIFF,\n  MR_NEXT_FILE_IN_DIFF,\n  MR_COMMITS_NEXT_COMMIT,\n  MR_COMMITS_PREVIOUS_COMMIT,\n} from '~/behaviors/shortcuts/keybindings';\nimport { createAlert } from '~/alert';\nimport { InternalEvents } from '~/tracking';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { parseBoolean, handleLocationHash } from '~/lib/utils/common_utils';\nimport { BV_HIDE_TOOLTIP, DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { Mousetrap } from '~/lib/mousetrap';\nimport { updateHistory, getLocationHash } from '~/lib/utils/url_utility';\nimport { __ } from '~/locale';\n\nimport notesEventHub from '~/notes/event_hub';\nimport { DynamicScroller, DynamicScrollerItem } from 'vendor/vue-virtual-scroller';\nimport getMRCodequalityAndSecurityReports from 'ee_else_ce/diffs/components/graphql/get_mr_codequality_and_security_reports.query.graphql';\nimport { sortFindingsByFile } from '../utils/sort_findings_by_file';\nimport {\n  MR_TREE_SHOW_KEY,\n  ALERT_OVERFLOW_HIDDEN,\n  ALERT_MERGE_CONFLICT,\n  ALERT_COLLAPSED_FILES,\n  INLINE_DIFF_VIEW_TYPE,\n  TRACKING_DIFF_VIEW_INLINE,\n  TRACKING_DIFF_VIEW_PARALLEL,\n  TRACKING_FILE_BROWSER_TREE,\n  TRACKING_FILE_BROWSER_LIST,\n  TRACKING_WHITESPACE_SHOW,\n  TRACKING_WHITESPACE_HIDE,\n  TRACKING_SINGLE_FILE_MODE,\n  TRACKING_MULTIPLE_FILES_MODE,\n  EVT_MR_PREPARED,\n  EVT_DISCUSSIONS_ASSIGNED,\n} from '../constants';\n\nimport { isCollapsed } from '../utils/diff_file';\nimport diffsEventHub from '../event_hub';\nimport { reviewStatuses } from '../utils/file_reviews';\nimport { diffsApp } from '../utils/performance';\nimport { updateChangesTabCount, extractFileHash } from '../utils/merge_request';\nimport { queueRedisHllEvents } from '../utils/queue_events';\nimport CollapsedFilesWarning from './collapsed_files_warning.vue';\nimport CommitWidget from './commit_widget.vue';\nimport CompareVersions from './compare_versions.vue';\nimport DiffFile from './diff_file.vue';\nimport HiddenFilesWarning from './hidden_files_warning.vue';\nimport NoChanges from './no_changes.vue';\nimport VirtualScrollerScrollSync from './virtual_scroller_scroll_sync';\nimport DiffsFileTree from './diffs_file_tree.vue';\nimport DiffAppControls from './diff_app_controls.vue';\n\nexport const FINDINGS_STATUS_PARSED = 'PARSED';\nexport const FINDINGS_STATUS_ERROR = 'ERROR';\nexport const FINDINGS_POLL_INTERVAL = 1000;\n\nexport default {\n  name: 'DiffsApp',\n  FINDINGS_STATUS_PARSED,\n  FINDINGS_STATUS_ERROR,\n  components: {\n    DiffAppControls,\n    DiffsFileTree,\n    FindingsDrawer,\n    DynamicScroller,\n    DynamicScrollerItem,\n    VirtualScrollerScrollSync,\n    CompareVersions,\n    DiffFile,\n    NoChanges,\n    HiddenFilesWarning,\n    CollapsedFilesWarning,\n    CommitWidget,\n    GlLoadingIcon,\n    GlPagination,\n    GlSprintf,\n    GlAlert,\n  },\n  mixins: [glFeatureFlagsMixin(), InternalEvents.mixin()],\n  alerts: {\n    ALERT_OVERFLOW_HIDDEN,\n    ALERT_MERGE_CONFLICT,\n    ALERT_COLLAPSED_FILES,\n  },\n  props: {\n    endpointCoverage: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    projectPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    iid: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    sastReportAvailable: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    codequalityReportAvailable: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    endpointCodequality: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    shouldShow: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    currentUser: {\n      type: Object,\n      required: true,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    changesEmptyStateIllustration: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    linkedFileUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      diffFilesLength: 0,\n      virtualScrollCurrentIndex: -1,\n      subscribedToVirtualScrollingEvents: false,\n      autoScrolled: false,\n      activeProject: undefined,\n      hasScannerError: false,\n      linkedFileStatus: '',\n      codequalityData: {},\n      sastData: {},\n      keydownTime: undefined,\n      listenersAttached: false,\n    };\n  },\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    getMRCodequalityAndSecurityReports: {\n      query: getMRCodequalityAndSecurityReports,\n      pollInterval: FINDINGS_POLL_INTERVAL,\n      variables() {\n        return { fullPath: this.projectPath, iid: this.iid };\n      },\n      skip() {\n        if (this.hasScannerError) {\n          return true;\n        }\n\n        return !this.codequalityReportAvailable && !this.sastReportAvailable;\n      },\n      update(data) {\n        if (!data?.project?.mergeRequest) {\n          return;\n        }\n\n        const { codequalityReportsComparer, sastReport } = data.project.mergeRequest;\n        this.activeProject = data.project.mergeRequest.project;\n\n        if (\n          (sastReport?.status === FINDINGS_STATUS_PARSED || !this.sastReportAvailable) &&\n          (!this.codequalityReportAvailable ||\n            codequalityReportsComparer.status === FINDINGS_STATUS_PARSED)\n        ) {\n          this.$apollo.queries.getMRCodequalityAndSecurityReports.stopPolling();\n        }\n\n        if (sastReport?.status === FINDINGS_STATUS_ERROR && this.sastReportAvailable) {\n          this.fetchScannerFindingsError();\n\n          this.$apollo.queries.getMRCodequalityAndSecurityReports.stopPolling();\n        }\n\n        if (codequalityReportsComparer?.report?.newErrors) {\n          this.codequalityData = sortFindingsByFile(codequalityReportsComparer.report.newErrors);\n        }\n\n        if (sastReport?.report) {\n          this.sastData = sastReport.report;\n        }\n      },\n      error() {\n        this.fetchScannerFindingsError();\n        this.$apollo.queries.getMRCodequalityAndSecurityReports.stopPolling();\n      },\n    },\n  },\n  computed: {\n    ...mapState('diffs', {\n      numTotalFiles: 'realSize',\n      numVisibleFiles: 'size',\n    }),\n    ...mapState('findingsDrawer', ['activeDrawer']),\n    ...mapState('diffs', [\n      'isLoading',\n      'diffViewType',\n      'commit',\n      'renderOverflowWarning',\n      'plainDiffPath',\n      'emailPatchPath',\n      'retrievingBatches',\n      'startVersion',\n      'latestDiff',\n      'currentDiffFileId',\n      'isTreeLoaded',\n      'conflictResolutionPath',\n      'canMerge',\n      'hasConflicts',\n      'viewDiffsFileByFile',\n      'mrReviews',\n      'renderTreeList',\n      'showWhitespace',\n      'targetBranchName',\n      'branchName',\n      'showTreeList',\n      'addedLines',\n      'removedLines',\n    ]),\n    ...mapGetters('diffs', [\n      'whichCollapsedTypes',\n      'isParallelView',\n      'currentDiffIndex',\n      'isVirtualScrollingEnabled',\n      'isBatchLoading',\n      'isBatchLoadingError',\n      'flatBlobsList',\n      'diffFiles',\n    ]),\n    ...mapGetters(['isNotesFetched', 'getNoteableData']),\n    ...mapGetters('findingsDrawer', ['activeDrawer']),\n    diffs() {\n      if (!this.viewDiffsFileByFile) {\n        return this.diffFiles;\n      }\n\n      return this.diffFiles.filter((file, i) => {\n        return file.file_hash === this.currentDiffFileId || (i === 0 && !this.currentDiffFileId);\n      });\n    },\n    canCurrentUserFork() {\n      return this.currentUser.can_fork === true && this.currentUser.can_create_merge_request;\n    },\n    renderDiffFiles() {\n      return this.flatBlobsList.length > 0;\n    },\n    diffsIncomplete() {\n      return this.flatBlobsList.length !== this.diffFiles.length;\n    },\n    isFullChangeset() {\n      return this.startVersion === null && this.latestDiff;\n    },\n    showFileByFileNavigation() {\n      return this.flatBlobsList.length > 1 && this.viewDiffsFileByFile;\n    },\n    currentFileNumber() {\n      return this.currentDiffIndex + 1;\n    },\n    previousFileNumber() {\n      const { currentDiffIndex } = this;\n\n      return currentDiffIndex >= 1 ? currentDiffIndex : null;\n    },\n    nextFileNumber() {\n      const { currentFileNumber, flatBlobsList } = this;\n\n      return currentFileNumber < flatBlobsList.length ? currentFileNumber + 1 : null;\n    },\n    visibleWarning() {\n      let visible = false;\n\n      if (this.renderOverflowWarning) {\n        visible = this.$options.alerts.ALERT_OVERFLOW_HIDDEN;\n      } else if (this.isFullChangeset && this.hasConflicts) {\n        visible = this.$options.alerts.ALERT_MERGE_CONFLICT;\n      } else if (this.whichCollapsedTypes.automatic && !this.viewDiffsFileByFile) {\n        visible = this.$options.alerts.ALERT_COLLAPSED_FILES;\n      }\n\n      return visible;\n    },\n    fileReviews() {\n      return reviewStatuses(this.diffFiles, this.mrReviews);\n    },\n    resourceId() {\n      return convertToGraphQLId('MergeRequest', this.getNoteableData.id);\n    },\n    renderFileTree() {\n      return this.renderDiffFiles && this.showTreeList;\n    },\n    hideTooltips() {\n      const hide = () => {\n        if (!this.shouldShow) return;\n        this.$root.$emit(BV_HIDE_TOOLTIP);\n      };\n      return throttle(hide, 100);\n    },\n    hasChanges() {\n      return this.diffFiles.length > 0;\n    },\n  },\n  watch: {\n    commit(newCommit, oldCommit) {\n      const commitChangedAfterRender = newCommit && !this.isLoading;\n      const commitIsDifferent = oldCommit && newCommit.id !== oldCommit.id;\n      const url = window?.location ? String(window.location) : '';\n\n      if (commitChangedAfterRender && commitIsDifferent) {\n        updateHistory({\n          title: document.title,\n          url: url.replace(oldCommit.id, newCommit.id),\n        });\n        this.refetchDiffData();\n        this.adjustView();\n      }\n    },\n    diffViewType() {\n      this.adjustView();\n    },\n    viewDiffsFileByFile(newViewFileByFile) {\n      if (!newViewFileByFile && this.diffsIncomplete) {\n        this.refetchDiffData({ refetchMeta: false });\n      }\n    },\n    shouldShow() {\n      // When the shouldShow property changed to true, the route is rendered for the first time\n      // and if we have the isLoading as true this means we didn't fetch the data\n      if (this.isLoading) {\n        this.fetchData();\n      }\n\n      this.adjustView();\n      this.subscribeToVirtualScrollingEvents();\n    },\n    renderFileTree: 'adjustView',\n    isLoading: 'adjustView',\n  },\n  mounted() {\n    if (this.shouldShow) {\n      this.fetchData();\n    }\n\n    const id = window?.location?.hash;\n\n    if (id && id.indexOf('#note') !== 0) {\n      this.setHighlightedRow({ lineCode: id.split('diff-content').pop().slice(1) });\n    }\n\n    const events = [];\n\n    if (this.renderTreeList) {\n      events.push(TRACKING_FILE_BROWSER_TREE);\n    } else {\n      events.push(TRACKING_FILE_BROWSER_LIST);\n    }\n\n    if (this.diffViewType === INLINE_DIFF_VIEW_TYPE) {\n      events.push(TRACKING_DIFF_VIEW_INLINE);\n    } else {\n      events.push(TRACKING_DIFF_VIEW_PARALLEL);\n    }\n\n    if (this.showWhitespace) {\n      events.push(TRACKING_WHITESPACE_SHOW);\n    } else {\n      events.push(TRACKING_WHITESPACE_HIDE);\n    }\n\n    if (this.viewDiffsFileByFile) {\n      events.push(TRACKING_SINGLE_FILE_MODE);\n    } else {\n      events.push(TRACKING_MULTIPLE_FILES_MODE);\n    }\n\n    queueRedisHllEvents(events, { verifyCap: true });\n\n    this.subscribeToVirtualScrollingEvents();\n    window.addEventListener('hashchange', this.handleHashChange);\n    window.addEventListener('scroll', this.hideTooltips);\n  },\n  beforeCreate() {\n    diffsApp.instrument();\n  },\n  created() {\n    this.adjustView();\n    this.subscribeToEvents();\n\n    this.slowHashHandler = debounce(() => {\n      handleLocationHash();\n      this.autoScrolled = true;\n    }, DEFAULT_DEBOUNCE_AND_THROTTLE_MS);\n    this.$watch(\n      () => this.$store.state.notes.discussions.length,\n      (newVal, prevVal) => {\n        if (newVal > prevVal) {\n          this.setDiscussions();\n        }\n      },\n    );\n  },\n  beforeDestroy() {\n    diffsApp.deinstrument();\n    this.unsubscribeFromEvents();\n    this.removeEventListeners();\n\n    window.removeEventListener('hashchange', this.handleHashChange);\n    window.removeEventListener('scroll', this.hideTooltips);\n\n    diffsEventHub.$off('scrollToFileHash', this.scrollVirtualScrollerToFileHash);\n    diffsEventHub.$off('scrollToIndex', this.scrollVirtualScrollerToIndex);\n  },\n  methods: {\n    ...mapActions(['startTaskList']),\n    ...mapActions('diffs', [\n      'moveToNeighboringCommit',\n      'fetchDiffFilesMeta',\n      'fetchDiffFilesBatch',\n      'fetchFileByFile',\n      'loadCollapsedDiff',\n      'setFileForcedOpen',\n      'fetchCoverageFiles',\n      'rereadNoteHash',\n      'startRenderDiffsQueue',\n      'assignDiscussionsToDiff',\n      'setCurrentFileHash',\n      'setHighlightedRow',\n      'goToFile',\n      'setShowTreeList',\n      'navigateToDiffFileIndex',\n      'setFileByFile',\n      'disableVirtualScroller',\n      'fetchLinkedFile',\n      'toggleTreeList',\n      'expandAllFiles',\n      'collapseAllFiles',\n      'setDiffViewType',\n      'setShowWhitespace',\n    ]),\n    ...mapActions('findingsDrawer', ['setDrawer']),\n    closeDrawer() {\n      this.setDrawer({});\n    },\n    fetchScannerFindingsError() {\n      this.hasScannerError = true;\n      createAlert({\n        message: __('Something went wrong fetching the scanner findings. Please try again.'),\n      });\n    },\n    subscribeToEvents() {\n      notesEventHub.$once('fetchDiffData', this.fetchData);\n      notesEventHub.$on('refetchDiffData', this.refetchDiffData);\n      notesEventHub.$on('fetchedNotesData', this.rereadNoteHash);\n      notesEventHub.$on('noteFormAddToReview', this.handleReviewTracking);\n      notesEventHub.$on('noteFormStartReview', this.handleReviewTracking);\n      diffsEventHub.$on('diffFilesModified', this.setDiscussions);\n      diffsEventHub.$on('doneLoadingBatches', this.autoScroll);\n      diffsEventHub.$on(EVT_MR_PREPARED, this.fetchData);\n      diffsEventHub.$on(EVT_DISCUSSIONS_ASSIGNED, this.handleHash);\n    },\n    unsubscribeFromEvents() {\n      diffsEventHub.$off(EVT_DISCUSSIONS_ASSIGNED, this.handleHash);\n      diffsEventHub.$off(EVT_MR_PREPARED, this.fetchData);\n      diffsEventHub.$off('doneLoadingBatches', this.autoScroll);\n      diffsEventHub.$off('diffFilesModified', this.setDiscussions);\n      notesEventHub.$off('noteFormStartReview', this.handleReviewTracking);\n      notesEventHub.$off('noteFormAddToReview', this.handleReviewTracking);\n      notesEventHub.$off('fetchedNotesData', this.rereadNoteHash);\n      notesEventHub.$off('refetchDiffData', this.refetchDiffData);\n      notesEventHub.$off('fetchDiffData', this.fetchData);\n    },\n    autoScroll() {\n      const lineCode = window.location.hash;\n      const sha1InHash = extractFileHash({ input: lineCode });\n\n      if (sha1InHash) {\n        const idx = this.diffs.findIndex((diffFile) => diffFile.file_hash === sha1InHash);\n        const file = this.diffs[idx];\n\n        if (!isCollapsed(file)) return;\n\n        this.loadCollapsedDiff({ file })\n          .then(() => {\n            this.setDiscussions();\n            this.setFileForcedOpen({ filePath: file.new_path });\n\n            this.$nextTick(() => this.scrollVirtualScrollerToIndex(idx));\n          })\n          .catch(() => {});\n      }\n    },\n    handleHash() {\n      if (this.viewDiffsFileByFile && !this.autoScrolled) {\n        const file = this.diffs[0];\n\n        if (file && !file.isLoadingFullFile) {\n          requestIdleCallback(() => this.slowHashHandler());\n        }\n      }\n    },\n    handleHashChange() {\n      let hash = getLocationHash();\n\n      if (this.viewDiffsFileByFile) {\n        if (!hash) {\n          hash = this.diffFiles[0].file_hash;\n        }\n\n        this.setCurrentFileHash(hash);\n        this.fetchFileByFile();\n      }\n    },\n    navigateToDiffFileNumber(number) {\n      this.navigateToDiffFileIndex(number - 1);\n    },\n    refetchDiffData({ refetchMeta = true } = {}) {\n      this.fetchData({ toggleTree: false, fetchMeta: refetchMeta });\n    },\n    fetchData({ toggleTree = true, fetchMeta = true } = {}) {\n      if (this.linkedFileUrl && this.linkedFileStatus !== 'loaded') {\n        this.linkedFileStatus = 'loading';\n        this.fetchLinkedFile(this.linkedFileUrl)\n          .then(() => {\n            this.linkedFileStatus = 'loaded';\n            if (toggleTree) this.setTreeDisplay();\n          })\n          .catch(() => {\n            this.linkedFileStatus = 'error';\n            createAlert({\n              message: __(\"Couldn't fetch the linked file.\"),\n            });\n          });\n      }\n      if (fetchMeta) {\n        this.fetchDiffFilesMeta()\n          .then((data) => {\n            let realSize = 0;\n\n            if (data) {\n              realSize = data.real_size;\n\n              if (this.viewDiffsFileByFile) {\n                this.fetchFileByFile();\n              }\n            }\n\n            this.diffFilesLength = parseInt(realSize, 10) || 0;\n            if (toggleTree) {\n              this.setTreeDisplay();\n            }\n\n            updateChangesTabCount({\n              count: this.diffFilesLength,\n            });\n          })\n          .catch(() => {\n            createAlert({\n              message: __('Something went wrong on our end. Please try again.'),\n            });\n          });\n      }\n\n      if (!this.viewDiffsFileByFile) {\n        this.fetchDiffFilesBatch(Boolean(this.linkedFileUrl))\n          .then(() => {\n            if (toggleTree) this.setTreeDisplay();\n            // Guarantee the discussions are assigned after the batch finishes.\n            // Just watching the length of the discussions or the diff files\n            // isn't enough, because with split diff loading, neither will\n            // change when loading the other half of the diff files.\n            this.setDiscussions();\n          })\n          .catch(() => {\n            createAlert({\n              message: __('Something went wrong on our end. Please try again.'),\n            });\n          });\n      }\n\n      if (this.endpointCoverage) {\n        this.fetchCoverageFiles();\n      }\n\n      if (!this.isNotesFetched) {\n        notesEventHub.$emit('fetchNotesData');\n      }\n    },\n    setDiscussions() {\n      requestIdleCallback(\n        () =>\n          this.assignDiscussionsToDiff()\n            .then(this.$nextTick)\n            .then(this.startTaskList)\n            .then(this.scrollVirtualScrollerToDiffNote),\n        { timeout: 1000 },\n      );\n    },\n    adjustView() {\n      if (this.shouldShow) {\n        this.$nextTick(() => {\n          this.setEventListeners();\n        });\n      } else {\n        this.removeEventListeners();\n      }\n    },\n    setEventListeners() {\n      if (this.listenersAttached) return;\n\n      Mousetrap.bind(keysFor(MR_PREVIOUS_FILE_IN_DIFF), () => this.jumpToFile(-1));\n      Mousetrap.bind(keysFor(MR_NEXT_FILE_IN_DIFF), () => this.jumpToFile(+1));\n\n      if (this.commit) {\n        Mousetrap.bind(keysFor(MR_COMMITS_NEXT_COMMIT), () =>\n          this.moveToNeighboringCommit({ direction: 'next' }),\n        );\n        Mousetrap.bind(keysFor(MR_COMMITS_PREVIOUS_COMMIT), () =>\n          this.moveToNeighboringCommit({ direction: 'previous' }),\n        );\n      }\n\n      Mousetrap.bind(['mod+f', 'mod+g'], () => {\n        this.keydownTime = new Date().getTime();\n      });\n\n      window.addEventListener('blur', this.handleBrowserFindActivation);\n\n      this.listenersAttached = true;\n    },\n    removeEventListeners() {\n      Mousetrap.unbind(keysFor(MR_PREVIOUS_FILE_IN_DIFF));\n      Mousetrap.unbind(keysFor(MR_NEXT_FILE_IN_DIFF));\n      Mousetrap.unbind(keysFor(MR_COMMITS_NEXT_COMMIT));\n      Mousetrap.unbind(keysFor(MR_COMMITS_PREVIOUS_COMMIT));\n      Mousetrap.unbind(['ctrl+f', 'command+f', 'mod+f', 'mod+g']);\n      window.removeEventListener('blur', this.handleBrowserFindActivation);\n      this.listenersAttached = false;\n    },\n    handleBrowserFindActivation() {\n      if (!this.keydownTime) return;\n\n      const delta = new Date().getTime() - this.keydownTime;\n\n      // To make sure the user is using the find function we need to wait for blur\n      // and max 1000ms to be sure it the search box is filtered\n      if (delta >= 0 && delta < 1000) {\n        this.disableVirtualScroller();\n\n        api.trackRedisHllUserEvent('i_code_review_user_searches_diff');\n        api.trackRedisCounterEvent('diff_searches');\n      }\n    },\n    jumpToFile(step) {\n      const targetIndex = this.currentDiffIndex + step;\n      if (targetIndex >= 0 && targetIndex < this.flatBlobsList.length) {\n        this.goToFile({ path: this.flatBlobsList[targetIndex].path });\n      }\n    },\n    setTreeDisplay() {\n      const storedTreeShow = localStorage.getItem(MR_TREE_SHOW_KEY);\n      let showTreeList = true;\n\n      if (storedTreeShow !== null) {\n        showTreeList = parseBoolean(storedTreeShow);\n      } else if (!bp.isDesktop() || (!this.isBatchLoading && this.flatBlobsList.length <= 1)) {\n        showTreeList = false;\n      }\n\n      return this.setShowTreeList({ showTreeList, saving: false });\n    },\n    async scrollVirtualScrollerToFileHash(hash) {\n      const index = this.diffFiles.findIndex((f) => f.file_hash === hash);\n\n      if (index !== -1) {\n        this.scrollVirtualScrollerToIndex(index);\n      }\n    },\n    scrollVirtualScrollerToIndex(index) {\n      this.virtualScrollCurrentIndex = index;\n    },\n    scrollVirtualScrollerToDiffNote() {\n      const id = window?.location?.hash;\n\n      if (id.startsWith('#note_')) {\n        const noteId = id.replace('#note_', '');\n        const discussion = this.$store.state.notes.discussions.find(\n          (d) => d.diff_file && d.notes.find((n) => n.id === noteId),\n        );\n\n        if (discussion) {\n          this.scrollVirtualScrollerToFileHash(discussion.diff_file.file_hash);\n        }\n      }\n    },\n    subscribeToVirtualScrollingEvents() {\n      if (this.shouldShow && !this.subscribedToVirtualScrollingEvents) {\n        diffsEventHub.$on('scrollToFileHash', this.scrollVirtualScrollerToFileHash);\n        diffsEventHub.$on('scrollToIndex', this.scrollVirtualScrollerToIndex);\n\n        this.subscribedToVirtualScrollingEvents = true;\n      }\n    },\n    reloadPage() {\n      window.location.reload();\n    },\n    handleReviewTracking(event) {\n      const types = {\n        noteFormStartReview: 'merge_request_click_start_review_on_changes_tab',\n        noteFormAddToReview: 'merge_request_click_add_to_review_on_changes_tab',\n      };\n\n      if (this.shouldShow && types[event.name]) {\n        this.trackEvent(types[event.name]);\n      }\n    },\n    fileTreeToggled() {\n      this.toggleTreeList();\n      this.adjustView();\n    },\n    isDiffViewActive(item) {\n      return this.virtualScrollCurrentIndex >= 0 && this.currentDiffFileId === item.file_hash;\n    },\n    toggleFileByFile() {\n      this.setFileByFile({ fileByFile: !this.viewDiffsFileByFile });\n    },\n    toggleWhitespace(updatedSetting) {\n      this.setShowWhitespace({ showWhitespace: updatedSetting });\n    },\n  },\n  howToMergeDocsPath: helpPagePath('user/project/merge_requests/merge_request_troubleshooting.md', {\n    anchor: 'check-out-merge-requests-locally-through-the-head-ref',\n  }),\n};\n</script>\n\n<template>\n  <div v-show=\"shouldShow\">\n    <findings-drawer :project=\"activeProject\" :drawer=\"activeDrawer\" @close=\"closeDrawer\" />\n    <div v-if=\"isLoading || !isTreeLoaded\" class=\"loading\"><gl-loading-icon size=\"lg\" /></div>\n    <div v-else id=\"diffs\" :class=\"{ active: shouldShow }\" class=\"diffs tab-pane\">\n      <div class=\"gl-flex gl-flex-wrap\">\n        <compare-versions :toggle-file-tree-visible=\"hasChanges\" />\n        <diff-app-controls\n          class=\"gl-ml-auto\"\n          :has-changes=\"hasChanges\"\n          :diffs-count=\"numTotalFiles\"\n          :added-lines=\"addedLines\"\n          :removed-lines=\"removedLines\"\n          :show-whitespace=\"showWhitespace\"\n          :view-diffs-file-by-file=\"viewDiffsFileByFile\"\n          :diff-view-type=\"diffViewType\"\n          @expandAllFiles=\"expandAllFiles\"\n          @collapseAllFiles=\"collapseAllFiles\"\n          @updateDiffViewType=\"setDiffViewType\"\n          @toggleWhitespace=\"toggleWhitespace\"\n          @toggleFileByFile=\"toggleFileByFile\"\n        />\n      </div>\n\n      <template v-if=\"!isBatchLoadingError\">\n        <collapsed-files-warning v-if=\"visibleWarning == $options.alerts.ALERT_COLLAPSED_FILES\" />\n      </template>\n\n      <div\n        :data-can-create-note=\"getNoteableData.current_user.can_create_note\"\n        class=\"files gl-mt-2 gl-flex\"\n      >\n        <diffs-file-tree :visible=\"renderFileTree\" @toggled=\"fileTreeToggled\" />\n        <div class=\"col-12 col-md-auto diff-files-holder\">\n          <commit-widget v-if=\"commit\" :commit=\"commit\" :collapsible=\"false\" />\n          <gl-alert\n            v-if=\"isBatchLoadingError\"\n            variant=\"danger\"\n            :dismissible=\"false\"\n            :primary-button-text=\"__('Reload page')\"\n            @primaryAction=\"reloadPage\"\n          >\n            {{ __(\"Error: Couldn't load some or all of the changes.\") }}\n          </gl-alert>\n          <div v-if=\"isBatchLoading && !isBatchLoadingError\" class=\"loading\">\n            <gl-loading-icon size=\"lg\" />\n          </div>\n          <template v-else-if=\"renderDiffFiles\">\n            <div v-if=\"linkedFileStatus === 'loading'\" class=\"loading\">\n              <gl-loading-icon size=\"lg\" />\n            </div>\n            <hidden-files-warning\n              v-if=\"visibleWarning == $options.alerts.ALERT_OVERFLOW_HIDDEN\"\n              :visible=\"numVisibleFiles\"\n              :total=\"numTotalFiles\"\n              :plain-diff-path=\"plainDiffPath\"\n              :email-patch-path=\"emailPatchPath\"\n            />\n            <dynamic-scroller\n              v-if=\"isVirtualScrollingEnabled\"\n              :items=\"diffs\"\n              :min-item-size=\"70\"\n              :buffer=\"1000\"\n              :use-transform=\"false\"\n              page-mode\n            >\n              <template #default=\"{ item, index, active }\">\n                <dynamic-scroller-item\n                  v-if=\"active\"\n                  :item=\"item\"\n                  :active=\"active\"\n                  :class=\"{ active }\"\n                  class=\"gl-mb-5\"\n                >\n                  <diff-file\n                    :file=\"item\"\n                    :codequality-data=\"codequalityData\"\n                    :sast-data=\"sastData\"\n                    :reviewed=\"fileReviews[item.id]\"\n                    :is-first-file=\"index === 0\"\n                    :is-last-file=\"index === diffFilesLength - 1\"\n                    :help-page-path=\"helpPagePath\"\n                    :can-current-user-fork=\"canCurrentUserFork\"\n                    :view-diffs-file-by-file=\"viewDiffsFileByFile\"\n                    :active=\"active\"\n                    :is-diff-view-active=\"isDiffViewActive(item)\"\n                  />\n                </dynamic-scroller-item>\n              </template>\n              <template #before>\n                <virtual-scroller-scroll-sync v-model=\"virtualScrollCurrentIndex\" />\n              </template>\n            </dynamic-scroller>\n            <template v-else>\n              <diff-file\n                v-for=\"(file, index) in diffs\"\n                :key=\"file.new_path\"\n                :file=\"file\"\n                :codequality-data=\"codequalityData\"\n                :sast-data=\"sastData\"\n                :reviewed=\"fileReviews[file.id]\"\n                :is-first-file=\"index === 0\"\n                :is-last-file=\"index === diffFilesLength - 1\"\n                :help-page-path=\"helpPagePath\"\n                :can-current-user-fork=\"canCurrentUserFork\"\n                :view-diffs-file-by-file=\"viewDiffsFileByFile\"\n                :is-diff-view-active=\"currentDiffFileId === file.file_hash\"\n                class=\"gl-mb-5\"\n              />\n            </template>\n            <div\n              v-if=\"showFileByFileNavigation\"\n              data-testid=\"file-by-file-navigation\"\n              class=\"gl-grid gl-text-center\"\n            >\n              <gl-pagination\n                class=\"gl-mx-auto\"\n                :value=\"currentFileNumber\"\n                :prev-page=\"previousFileNumber\"\n                :next-page=\"nextFileNumber\"\n                @input=\"navigateToDiffFileNumber\"\n              />\n              <gl-sprintf :message=\"__('File %{current} of %{total}')\">\n                <template #current>{{ currentFileNumber }}</template>\n                <template #total>{{ flatBlobsList.length }}</template>\n              </gl-sprintf>\n            </div>\n            <gl-loading-icon v-else-if=\"retrievingBatches\" size=\"lg\" />\n          </template>\n          <no-changes\n            v-else-if=\"!isBatchLoadingError\"\n            :changes-empty-state-illustration=\"changesEmptyStateIllustration\"\n          />\n        </div>\n      </div>\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!./app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"","export function sortFindingsByFile(newErrors = []) {\n  const files = {};\n  newErrors.forEach(({ line, description, severity, filePath, webUrl, engineName }) => {\n    if (!files[filePath]) {\n      files[filePath] = [];\n    }\n    files[filePath].push({\n      line,\n      description,\n      severity: severity.toLowerCase(),\n      filePath,\n      webUrl,\n      engineName,\n    });\n  });\n\n  const sortedFiles = Object.keys(files)\n    .sort()\n    .reduce((acc, key) => {\n      acc[key] = files[key];\n      return acc;\n    }, {});\n  return { files: sortedFiles };\n}\n","import { render, staticRenderFns } from \"./app.vue?vue&type=template&id=ccd6f704\"\nimport script from \"./app.vue?vue&type=script&lang=js\"\nexport * from \"./app.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shouldShow),expression:\"shouldShow\"}]},[_c('findings-drawer',{attrs:{\"project\":_vm.activeProject,\"drawer\":_vm.activeDrawer},on:{\"close\":_vm.closeDrawer}}),_vm._v(\" \"),(_vm.isLoading || !_vm.isTreeLoaded)?_c('div',{staticClass:\"loading\"},[_c('gl-loading-icon',{attrs:{\"size\":\"lg\"}})],1):_c('div',{staticClass:\"diffs tab-pane\",class:{ active: _vm.shouldShow },attrs:{\"id\":\"diffs\"}},[_c('div',{staticClass:\"gl-flex gl-flex-wrap\"},[_c('compare-versions',{attrs:{\"toggle-file-tree-visible\":_vm.hasChanges}}),_vm._v(\" \"),_c('diff-app-controls',{staticClass:\"gl-ml-auto\",attrs:{\"has-changes\":_vm.hasChanges,\"diffs-count\":_vm.numTotalFiles,\"added-lines\":_vm.addedLines,\"removed-lines\":_vm.removedLines,\"show-whitespace\":_vm.showWhitespace,\"view-diffs-file-by-file\":_vm.viewDiffsFileByFile,\"diff-view-type\":_vm.diffViewType},on:{\"expandAllFiles\":_vm.expandAllFiles,\"collapseAllFiles\":_vm.collapseAllFiles,\"updateDiffViewType\":_vm.setDiffViewType,\"toggleWhitespace\":_vm.toggleWhitespace,\"toggleFileByFile\":_vm.toggleFileByFile}})],1),_vm._v(\" \"),(!_vm.isBatchLoadingError)?[(_vm.visibleWarning == _vm.$options.alerts.ALERT_COLLAPSED_FILES)?_c('collapsed-files-warning'):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"files gl-mt-2 gl-flex\",attrs:{\"data-can-create-note\":_vm.getNoteableData.current_user.can_create_note}},[_c('diffs-file-tree',{attrs:{\"visible\":_vm.renderFileTree},on:{\"toggled\":_vm.fileTreeToggled}}),_vm._v(\" \"),_c('div',{staticClass:\"col-12 col-md-auto diff-files-holder\"},[(_vm.commit)?_c('commit-widget',{attrs:{\"commit\":_vm.commit,\"collapsible\":false}}):_vm._e(),_vm._v(\" \"),(_vm.isBatchLoadingError)?_c('gl-alert',{attrs:{\"variant\":\"danger\",\"dismissible\":false,\"primary-button-text\":_vm.__('Reload page')},on:{\"primaryAction\":_vm.reloadPage}},[_vm._v(\"\\n          \"+_vm._s(_vm.__(\"Error: Couldn't load some or all of the changes.\"))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.isBatchLoading && !_vm.isBatchLoadingError)?_c('div',{staticClass:\"loading\"},[_c('gl-loading-icon',{attrs:{\"size\":\"lg\"}})],1):(_vm.renderDiffFiles)?[(_vm.linkedFileStatus === 'loading')?_c('div',{staticClass:\"loading\"},[_c('gl-loading-icon',{attrs:{\"size\":\"lg\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.visibleWarning == _vm.$options.alerts.ALERT_OVERFLOW_HIDDEN)?_c('hidden-files-warning',{attrs:{\"visible\":_vm.numVisibleFiles,\"total\":_vm.numTotalFiles,\"plain-diff-path\":_vm.plainDiffPath,\"email-patch-path\":_vm.emailPatchPath}}):_vm._e(),_vm._v(\" \"),(_vm.isVirtualScrollingEnabled)?_c('dynamic-scroller',{attrs:{\"items\":_vm.diffs,\"min-item-size\":70,\"buffer\":1000,\"use-transform\":false,\"page-mode\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, index, active }){return [(active)?_c('dynamic-scroller-item',{staticClass:\"gl-mb-5\",class:{ active },attrs:{\"item\":item,\"active\":active}},[_c('diff-file',{attrs:{\"file\":item,\"codequality-data\":_vm.codequalityData,\"sast-data\":_vm.sastData,\"reviewed\":_vm.fileReviews[item.id],\"is-first-file\":index === 0,\"is-last-file\":index === _vm.diffFilesLength - 1,\"help-page-path\":_vm.helpPagePath,\"can-current-user-fork\":_vm.canCurrentUserFork,\"view-diffs-file-by-file\":_vm.viewDiffsFileByFile,\"active\":active,\"is-diff-view-active\":_vm.isDiffViewActive(item)}})],1):_vm._e()]}},{key:\"before\",fn:function(){return [_c('virtual-scroller-scroll-sync',{model:{value:(_vm.virtualScrollCurrentIndex),callback:function ($$v) {_vm.virtualScrollCurrentIndex=$$v},expression:\"virtualScrollCurrentIndex\"}})]},proxy:true}],null,false,3028541424)}):_vm._l((_vm.diffs),function(file,index){return _c('diff-file',{key:file.new_path,staticClass:\"gl-mb-5\",attrs:{\"file\":file,\"codequality-data\":_vm.codequalityData,\"sast-data\":_vm.sastData,\"reviewed\":_vm.fileReviews[file.id],\"is-first-file\":index === 0,\"is-last-file\":index === _vm.diffFilesLength - 1,\"help-page-path\":_vm.helpPagePath,\"can-current-user-fork\":_vm.canCurrentUserFork,\"view-diffs-file-by-file\":_vm.viewDiffsFileByFile,\"is-diff-view-active\":_vm.currentDiffFileId === file.file_hash}})}),_vm._v(\" \"),(_vm.showFileByFileNavigation)?_c('div',{staticClass:\"gl-grid gl-text-center\",attrs:{\"data-testid\":\"file-by-file-navigation\"}},[_c('gl-pagination',{staticClass:\"gl-mx-auto\",attrs:{\"value\":_vm.currentFileNumber,\"prev-page\":_vm.previousFileNumber,\"next-page\":_vm.nextFileNumber},on:{\"input\":_vm.navigateToDiffFileNumber}}),_vm._v(\" \"),_c('gl-sprintf',{attrs:{\"message\":_vm.__('File %{current} of %{total}')},scopedSlots:_vm._u([{key:\"current\",fn:function(){return [_vm._v(_vm._s(_vm.currentFileNumber))]},proxy:true},{key:\"total\",fn:function(){return [_vm._v(_vm._s(_vm.flatBlobsList.length))]},proxy:true}],null,false,2220002481)})],1):(_vm.retrievingBatches)?_c('gl-loading-icon',{attrs:{\"size\":\"lg\"}}):_vm._e()]:(!_vm.isBatchLoadingError)?_c('no-changes',{attrs:{\"changes-empty-state-illustration\":_vm.changesEmptyStateIllustration}}):_vm._e()],2)],1)],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapState, mapGetters } from 'vuex';\nimport { cleanLeadingSeparator } from '~/lib/utils/url_utility';\nimport { apolloProvider } from '~/graphql_shared/issuable_client';\nimport { getCookie, parseBoolean, removeCookie } from '~/lib/utils/common_utils';\nimport notesStore from '~/mr_notes/stores';\n\nimport eventHub from '../notes/event_hub';\nimport DiffsApp from './components/app.vue';\n\nimport { TREE_LIST_STORAGE_KEY, DIFF_WHITESPACE_COOKIE_NAME } from './constants';\n\nexport default function initDiffsApp(store = notesStore) {\n  const el = document.getElementById('js-diffs-app');\n  const { dataset } = el;\n\n  Vue.use(VueApollo);\n  const { newCommentTemplatePaths } = dataset;\n\n  const vm = new Vue({\n    el,\n    name: 'MergeRequestDiffs',\n    components: {\n      DiffsApp,\n    },\n    store,\n    apolloProvider,\n    provide: {\n      newCommentTemplatePaths: newCommentTemplatePaths ? JSON.parse(newCommentTemplatePaths) : [],\n    },\n    data() {\n      return {\n        projectPath: dataset.projectPath || '',\n        iid: dataset.iid || '',\n        endpointCoverage: dataset.endpointCoverage || '',\n        codequalityReportAvailable: parseBoolean(dataset.codequalityReportAvailable),\n        sastReportAvailable: parseBoolean(dataset.sastReportAvailable),\n        helpPagePath: dataset.helpPagePath,\n        currentUser: JSON.parse(dataset.currentUserData) || {},\n        changesEmptyStateIllustration: dataset.changesEmptyStateIllustration,\n        dismissEndpoint: dataset.dismissEndpoint,\n        showWhitespaceDefault: parseBoolean(dataset.showWhitespaceDefault),\n      };\n    },\n    computed: {\n      ...mapState({\n        activeTab: (state) => state.page.activeTab,\n      }),\n    },\n    created() {\n      const treeListStored = localStorage.getItem(TREE_LIST_STORAGE_KEY);\n      const renderTreeList = treeListStored !== null ? parseBoolean(treeListStored) : true;\n\n      this.setRenderTreeList({ renderTreeList, trackClick: false });\n\n      // NOTE: A \"true\" or \"checked\" value for `showWhitespace` is '0' not '1'.\n      // Check for cookie and save that setting for future use.\n      // Then delete the cookie as we are phasing it out and using the database as SSOT.\n      // NOTE: This can/should be removed later\n      if (getCookie(DIFF_WHITESPACE_COOKIE_NAME)) {\n        const hideWhitespace = getCookie(DIFF_WHITESPACE_COOKIE_NAME);\n        this.setShowWhitespace({\n          url: this.endpointUpdateUser,\n          showWhitespace: hideWhitespace !== '1',\n          trackClick: false,\n        });\n        removeCookie(DIFF_WHITESPACE_COOKIE_NAME);\n      } else {\n        // This is only to set the the user preference in Vuex for use later\n        this.setShowWhitespace({\n          showWhitespace: this.showWhitespaceDefault,\n          updateDatabase: false,\n          trackClick: false,\n        });\n      }\n    },\n    methods: {\n      ...mapActions('diffs', ['setRenderTreeList', 'setShowWhitespace']),\n    },\n    render(createElement) {\n      return createElement('diffs-app', {\n        props: {\n          projectPath: cleanLeadingSeparator(this.projectPath),\n          iid: this.iid,\n          endpointCoverage: this.endpointCoverage,\n          endpointCodequality: this.endpointCodequality,\n          codequalityReportAvailable: this.codequalityReportAvailable,\n          sastReportAvailable: this.sastReportAvailable,\n          currentUser: this.currentUser,\n          helpPagePath: this.helpPagePath,\n          shouldShow: this.activeTab === 'diffs',\n          changesEmptyStateIllustration: this.changesEmptyStateIllustration,\n          linkedFileUrl: dataset.linkedFileUrl,\n        },\n      });\n    },\n  });\n\n  const fileFinderEl = document.getElementById('js-diff-file-finder');\n\n  if (fileFinderEl) {\n    // eslint-disable-next-line no-new\n    new Vue({\n      el: fileFinderEl,\n      store,\n      components: {\n        FindFile: () => import('~/vue_shared/components/file_finder/index.vue'),\n      },\n      computed: {\n        ...mapState('diffs', ['fileFinderVisible', 'isLoading']),\n        ...mapGetters('diffs', ['flatBlobsList']),\n      },\n      watch: {\n        fileFinderVisible(newVal, oldVal) {\n          if (newVal && !oldVal && !this.flatBlobsList.length) {\n            eventHub.$emit('fetchDiffData');\n          }\n        },\n      },\n      methods: {\n        ...mapActions('diffs', ['toggleFileFinder', 'scrollToFile']),\n        openFile(file) {\n          window.mrTabs.tabShown('diffs');\n          this.scrollToFile({ path: file.path });\n        },\n      },\n      render(createElement) {\n        return createElement('find-file', {\n          props: {\n            files: this.flatBlobsList,\n            visible: this.fileFinderVisible,\n            loading: this.isLoading,\n            showDiffStats: true,\n            clearSearchOnClose: false,\n          },\n          on: {\n            toggle: this.toggleFileFinder,\n            click: this.openFile,\n          },\n          class: ['diff-file-finder'],\n        });\n      },\n    });\n  }\n\n  return vm;\n}\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n  REGEX_BACKSLASH,\n  REGEX_REMOVE_BACKSLASH,\n  REGEX_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n    return match === '\\\\' ? '' : match;\n  });\n};\n\nexports.supportsLookbehinds = () => {\n  const segs = process.version.slice(1).split('.').map(Number);\n  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n    return true;\n  }\n  return false;\n};\n\nexports.isWindows = options => {\n  if (options && typeof options.windows === 'boolean') {\n    return options.windows;\n  }\n  return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n  const idx = input.lastIndexOf(char, lastIdx);\n  if (idx === -1) return input;\n  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n  let output = input;\n  if (output.startsWith('./')) {\n    output = output.slice(2);\n    state.prefix = './';\n  }\n  return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n  const prepend = options.contains ? '' : '^';\n  const append = options.contains ? '' : '$';\n\n  let output = `${prepend}(?:${input})${append}`;\n  if (state.negated === true) {\n    output = `(?:^(?!${output}).*$)`;\n  }\n  return output;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-badge',{attrs:{\"variant\":\"muted\"}},[_vm._t(\"default\")],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!./user_access_role_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_access_role_badge.vue?vue&type=script&lang=js\"","<script>\n/**\n * This component applies particular styling to GlBadge that isn't\n * available in the current GlBadge variants.\n * Where possible, prefer one of the supported GlBadge variants.\n * Discussion issue: https://gitlab.com/gitlab-org/gitlab-ui/-/issues/1247\n */\nimport { GlBadge } from '@gitlab/ui';\n\nexport default {\n  name: 'UserAccessRoleBadge',\n  components: {\n    GlBadge,\n  },\n};\n</script>\n\n<template>\n  <gl-badge variant=\"muted\">\n    <slot></slot>\n  </gl-badge>\n</template>\n","import { render, staticRenderFns } from \"./user_access_role_badge.vue?vue&type=template&id=6096c5c6\"\nimport script from \"./user_access_role_badge.vue?vue&type=script&lang=js\"\nexport * from \"./user_access_role_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:({ placement: _vm.tooltipPlacement, container: _vm.tooltipContainer }),expression:\"{ placement: tooltipPlacement, container: tooltipContainer }\"}],class:_vm.cssClasses,attrs:{\"id\":_vm.id,\"data-clipboard-target\":_vm.target,\"data-clipboard-text\":_vm.text,\"title\":_vm.title,\"aria-label\":_vm.title,\"category\":_vm.category,\"icon\":\"copy-to-clipboard\"}})\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!./modal_copy_button.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!./modal_copy_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlTooltipDirective } from '@gitlab/ui';\nimport ClipboardJS from 'clipboard';\nimport { uniqueId } from 'lodash';\nimport { __ } from '~/locale';\nimport { BV_HIDE_TOOLTIP } from '~/lib/utils/constants';\n\nexport default {\n  components: {\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    text: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    id: {\n      type: String,\n      required: false,\n      default: () => uniqueId('modal-copy-button-'),\n    },\n    container: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    cssClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    modalId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    target: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    title: {\n      type: String,\n      required: false,\n      default: __('Copy'),\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top',\n    },\n    tooltipContainer: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    category: {\n      type: String,\n      required: false,\n      default: 'primary',\n    },\n  },\n  computed: {\n    modalDomId() {\n      return this.modalId ? `#${this.modalId}` : '';\n    },\n  },\n  mounted() {\n    this.$nextTick(() => {\n      this.clipboard = new ClipboardJS(this.$el, {\n        container:\n          document.querySelector(`${this.modalDomId} div.modal-content`) ||\n          document.getElementById(this.container) ||\n          document.body,\n      });\n      this.clipboard\n        .on('success', (e) => {\n          this.$root.$emit(BV_HIDE_TOOLTIP, this.id);\n          this.$emit('success', e);\n          // Clear the selection and blur the trigger so it loses its border\n          e.clearSelection();\n          e.trigger.blur();\n        })\n        .on('error', (e) => this.$emit('error', e));\n    });\n  },\n  destroyed() {\n    if (this.clipboard) {\n      this.clipboard.destroy();\n    }\n  },\n};\n</script>\n<template>\n  <gl-button\n    :id=\"id\"\n    v-gl-tooltip=\"{ placement: tooltipPlacement, container: tooltipContainer }\"\n    :class=\"cssClasses\"\n    :data-clipboard-target=\"target\"\n    :data-clipboard-text=\"text\"\n    :title=\"title\"\n    :aria-label=\"title\"\n    :category=\"category\"\n    icon=\"copy-to-clipboard\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./modal_copy_button.vue?vue&type=template&id=4c7472d6\"\nimport script from \"./modal_copy_button.vue?vue&type=script&lang=js\"\nexport * from \"./modal_copy_button.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 baseSlice = require('./_baseSlice'),\n    isIterateeCall = require('./_isIterateeCall'),\n    toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n    nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n  if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n    size = 1;\n  } else {\n    size = nativeMax(toInteger(size), 0);\n  }\n  var length = array == null ? 0 : array.length;\n  if (!length || size < 1) {\n    return [];\n  }\n  var index = 0,\n      resIndex = 0,\n      result = Array(nativeCeil(length / size));\n\n  while (index < length) {\n    result[resIndex++] = baseSlice(array, index, (index += size));\n  }\n  return result;\n}\n\nmodule.exports = chunk;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.textOnly)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.title),expression:\"title\"}]},[_vm._v(\"\\n  \"+_vm._s(_vm.__('Imported'))+\"\\n\")]):_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.title),expression:\"title\"}],staticClass:\"gl-shrink-0\"},[_vm._v(\"\\n  \"+_vm._s(_vm.__('Imported'))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlBadge, GlTooltipDirective } from '@gitlab/ui';\nimport { __, s__, sprintf } from '~/locale';\n\nimport { TYPE_EPIC, TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { TYPE_ACTIVITY, TYPE_COMMENT, TYPE_DESIGN, TYPE_SNIPPET } from '~/import/constants';\n\nconst importableTypeText = {\n  [TYPE_ACTIVITY]: __('activity'),\n  [TYPE_COMMENT]: __('comment'),\n  [TYPE_DESIGN]: __('design'),\n  [TYPE_EPIC]: __('epic'),\n  [TYPE_ISSUE]: __('issue'),\n  [TYPE_MERGE_REQUEST]: __('merge request'),\n  [TYPE_SNIPPET]: __('snippet'),\n};\n\nexport default {\n  components: {\n    GlBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    importableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    textOnly: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    title() {\n      return sprintf(s__('BulkImport|This %{importable} was imported from another instance.'), {\n        importable: importableTypeText[this.importableType],\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <span v-if=\"textOnly\" v-gl-tooltip=\"title\">\n    {{ __('Imported') }}\n  </span>\n  <gl-badge v-else v-gl-tooltip=\"title\" class=\"gl-shrink-0\">\n    {{ __('Imported') }}\n  </gl-badge>\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!./imported_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./imported_badge.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./imported_badge.vue?vue&type=template&id=03c38d80\"\nimport script from \"./imported_badge.vue?vue&type=script&lang=js\"\nexport * from \"./imported_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot';\n\n// --- Props ---\n\nconst props = {\n  footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Any Bootstrap theme variant (or custom)\n  // Falls back to `headRowVariant`\n  footRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'dark', 'light', or `null` (or custom)\n  footVariant: makeProp(PROP_TYPE_STRING),\n  tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tfootMixin = extend({\n  props,\n  methods: {\n    renderTFootCustom() {\n      const h = this.$createElement;\n      if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n        return h(BTfoot, {\n          class: this.tfootClass || null,\n          props: {\n            footVariant: this.footVariant || this.headVariant || null\n          },\n          key: 'bv-tfoot-custom'\n        }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n          items: this.computedItems.slice(),\n          fields: this.computedFields.slice(),\n          columns: this.computedFields.length\n        }));\n      }\n      return h();\n    },\n    renderTfoot() {\n      // Passing true to renderThead will make it render a tfoot\n      return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n    }\n  }\n});\n\nexport { props, tfootMixin };\n","export const MAX_WINDOW_HEIGHT_COMPACT = 750;\n\n// Commit message textarea\nexport const MAX_TITLE_LENGTH = 50;\nexport const MAX_BODY_LENGTH = 72;\n\nexport const SIDEBAR_INIT_WIDTH = 340;\nexport const SIDEBAR_MIN_WIDTH = 260;\nexport const SIDEBAR_NAV_WIDTH = 60;\n\n// File view modes\nexport const FILE_VIEW_MODE_EDITOR = 'editor';\nexport const FILE_VIEW_MODE_PREVIEW = 'preview';\n\nexport const PERMISSION_CREATE_MR = 'createMergeRequestIn';\nexport const PERMISSION_READ_MR = 'readMergeRequest';\nexport const PERMISSION_PUSH_CODE = 'pushCode';\nexport const PUSH_RULE_REJECT_UNSIGNED_COMMITS = 'rejectUnsignedCommits';\n\n// The default permission object to use when the project data isn't available yet.\n// This helps us encapsulate checks like `canPushCode` without requiring an\n// additional check like `currentProject && canPushCode`.\nexport const DEFAULT_PERMISSIONS = {\n  [PERMISSION_PUSH_CODE]: true,\n};\n\nexport const viewerTypes = {\n  mr: 'mrdiff',\n  edit: 'editor',\n  diff: 'diff',\n};\n\nexport const diffModes = {\n  replaced: 'replaced',\n  new: 'new',\n  deleted: 'deleted',\n  renamed: 'renamed',\n  mode_changed: 'mode_changed',\n};\n\nexport const diffViewerModes = Object.freeze({\n  not_diffable: 'not_diffable',\n  no_preview: 'no_preview',\n  added: 'added',\n  deleted: 'deleted',\n  renamed: 'renamed',\n  mode_changed: 'mode_changed',\n  text: 'text',\n  image: 'image',\n});\n\nexport const diffViewerErrors = Object.freeze({\n  too_large: 'too_large',\n  stored_externally: 'server_side_but_stored_externally',\n});\n\nexport const leftSidebarViews = {\n  edit: { name: 'ide-tree' },\n  review: { name: 'ide-review' },\n  commit: { name: 'repo-commit-section' },\n};\n\nexport const rightSidebarViews = {\n  pipelines: { name: 'pipelines-list', keepAlive: true },\n  jobsDetail: { name: 'jobs-detail', keepAlive: false },\n  mergeRequestInfo: { name: 'merge-request-info', keepAlive: true },\n  terminal: { name: 'terminal', keepAlive: true },\n};\n\nexport const stageKeys = {\n  unstaged: 'unstaged',\n  staged: 'staged',\n};\n\nexport const commitItemIconMap = {\n  addition: {\n    icon: 'file-addition',\n    class: 'file-addition ide-file-addition',\n  },\n  modified: {\n    icon: 'file-modified',\n    class: 'file-modified ide-file-modified',\n  },\n  deleted: {\n    icon: 'file-deletion',\n    class: 'file-deletion ide-file-deletion',\n  },\n};\n\nexport const modalTypes = {\n  rename: 'rename',\n  tree: 'tree',\n  blob: 'blob',\n};\n\nexport const commitActionTypes = {\n  move: 'move',\n  delete: 'delete',\n  create: 'create',\n  update: 'update',\n};\n\nexport const SIDE_LEFT = 'left';\nexport const SIDE_RIGHT = 'right';\n\n// This is the maximum number of files to auto open when opening the Web IDE\n// from a merge request\nexport const MAX_MR_FILES_AUTO_OPEN = 10;\n\nexport const DEFAULT_BRANCH = 'main';\n\nexport const GITLAB_WEB_IDE_FEEDBACK_ISSUE = 'https://gitlab.com/gitlab-org/gitlab/-/issues/377367';\n\nexport const IDE_ELEMENT_ID = 'ide';\n\n// note: This path comes from `config/routes.rb`\nexport const IDE_PATH = '/-/ide';\nexport const WEB_IDE_OAUTH_CALLBACK_URL_PATH = '/-/ide/oauth_redirect';\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n  DOT_LITERAL,\n  PLUS_LITERAL,\n  QMARK_LITERAL,\n  SLASH_LITERAL,\n  ONE_CHAR,\n  QMARK,\n  END_ANCHOR,\n  DOTS_SLASH,\n  NO_DOT,\n  NO_DOTS,\n  NO_DOT_SLASH,\n  NO_DOTS_SLASH,\n  QMARK_NO_DOT,\n  STAR,\n  START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n  ...POSIX_CHARS,\n\n  SLASH_LITERAL: `[${WIN_SLASH}]`,\n  QMARK: WIN_NO_SLASH,\n  STAR: `${WIN_NO_SLASH}*?`,\n  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n  NO_DOT: `(?!${DOT_LITERAL})`,\n  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n  alnum: 'a-zA-Z0-9',\n  alpha: 'a-zA-Z',\n  ascii: '\\\\x00-\\\\x7F',\n  blank: ' \\\\t',\n  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n  digit: '0-9',\n  graph: '\\\\x21-\\\\x7E',\n  lower: 'a-z',\n  print: '\\\\x20-\\\\x7E ',\n  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n  upper: 'A-Z',\n  word: 'A-Za-z0-9_',\n  xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n  MAX_LENGTH: 1024 * 64,\n  POSIX_REGEX_SOURCE,\n\n  // regular expressions\n  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n  // Replace globs with equivalent patterns to reduce parsing time.\n  REPLACEMENTS: {\n    '***': '*',\n    '**/**': '**',\n    '**/**/**': '**'\n  },\n\n  // Digits\n  CHAR_0: 48, /* 0 */\n  CHAR_9: 57, /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 65, /* A */\n  CHAR_LOWERCASE_A: 97, /* a */\n  CHAR_UPPERCASE_Z: 90, /* Z */\n  CHAR_LOWERCASE_Z: 122, /* z */\n\n  CHAR_LEFT_PARENTHESES: 40, /* ( */\n  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n  CHAR_ASTERISK: 42, /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: 38, /* & */\n  CHAR_AT: 64, /* @ */\n  CHAR_BACKWARD_SLASH: 92, /* \\ */\n  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n  CHAR_COLON: 58, /* : */\n  CHAR_COMMA: 44, /* , */\n  CHAR_DOT: 46, /* . */\n  CHAR_DOUBLE_QUOTE: 34, /* \" */\n  CHAR_EQUAL: 61, /* = */\n  CHAR_EXCLAMATION_MARK: 33, /* ! */\n  CHAR_FORM_FEED: 12, /* \\f */\n  CHAR_FORWARD_SLASH: 47, /* / */\n  CHAR_GRAVE_ACCENT: 96, /* ` */\n  CHAR_HASH: 35, /* # */\n  CHAR_HYPHEN_MINUS: 45, /* - */\n  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n  CHAR_LINE_FEED: 10, /* \\n */\n  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n  CHAR_PERCENT: 37, /* % */\n  CHAR_PLUS: 43, /* + */\n  CHAR_QUESTION_MARK: 63, /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n  CHAR_SEMICOLON: 59, /* ; */\n  CHAR_SINGLE_QUOTE: 39, /* ' */\n  CHAR_SPACE: 32, /*   */\n  CHAR_TAB: 9, /* \\t */\n  CHAR_UNDERSCORE: 95, /* _ */\n  CHAR_VERTICAL_LINE: 124, /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n  SEP: path.sep,\n\n  /**\n   * Create EXTGLOB_CHARS\n   */\n\n  extglobChars(chars) {\n    return {\n      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n      '?': { type: 'qmark', open: '(?:', close: ')?' },\n      '+': { type: 'plus', open: '(?:', close: ')+' },\n      '*': { type: 'star', open: '(?:', close: ')*' },\n      '@': { type: 'at', open: '(?:', close: ')' }\n    };\n  },\n\n  /**\n   * Create GLOB_CHARS\n   */\n\n  globChars(win32) {\n    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n  }\n};\n","exports = module.exports = require(\"../../css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".resize-observer[data-v-8859cc6c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-8859cc6c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\", \"\"]);\n\n","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n  top: 'top',\n  bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","var baseAssignValue = require('./_baseAssignValue'),\n    createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n  if (hasOwnProperty.call(result, key)) {\n    result[key].push(value);\n  } else {\n    baseAssignValue(result, key, [value]);\n  }\n});\n\nmodule.exports = groupBy;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport { stopEvent, filterVisible } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, HOME, END, ARROW_UP, ARROW_DOWN, ENTER, SPACE, GL_DROPDOWN_CONTENTS_CLASS } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlBaseDropdown, { BASE_DROPDOWN_CLASS } from '../base_dropdown/base_dropdown';\nimport GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item';\nimport GlDisclosureDropdownGroup from './disclosure_dropdown_group';\nimport { itemsValidator, hasOnlyListItems, isItem } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst DROPDOWN_SELECTOR = `.${BASE_DROPDOWN_CLASS}`;\nconst ITEM_SELECTOR = `.${ITEM_CLASS}`;\nvar script = {\n  name: 'GlDisclosureDropdown',\n  events: {\n    GL_DROPDOWN_SHOWN,\n    GL_DROPDOWN_HIDDEN,\n    GL_DROPDOWN_BEFORE_CLOSE,\n    GL_DROPDOWN_FOCUS_CONTENT\n  },\n  components: {\n    GlBaseDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup\n  },\n  props: {\n    /**\n     * Items to display in the dropdown\n     */\n    items: {\n      type: Array,\n      required: false,\n      default: () => [],\n      validator: itemsValidator\n    },\n    /**\n     * Toggle button text\n     */\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Toggle text to be read by screen readers only\n     */\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Styling option - dropdown's toggle category\n     */\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => value in buttonCategoryOptions\n    },\n    /**\n     * Styling option - dropdown's toggle variant\n     */\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => value in dropdownVariantOptions\n    },\n    /**\n     * The size of the dropdown toggle\n     */\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => value in buttonSizeOptions\n    },\n    /**\n     * Icon name that will be rendered in the toggle button\n     */\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Set to \"true\" to disable the dropdown\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when dropdown content (items) is loading\n     * It will render a small loader in the dropdown toggle and make it disabled\n     */\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom toggle id.\n     * For instance, it can be referenced by tooltip or popover\n     */\n    toggleId: {\n      type: String,\n      required: false,\n      default: () => uniqueId('dropdown-toggle-btn-')\n    },\n    /**\n     * Additional CSS classes to customize toggle appearance\n     */\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    /**\n     * Set to \"true\" to hide the caret\n     */\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Align disclosure dropdown with respect to the toggle button\n     */\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => Object.keys(dropdownPlacements).includes(value)\n    },\n    /**\n     * The `aria-labelledby` attribute value for the toggle button\n     * Provide the string of ids seperated by space\n     */\n    toggleAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The `aria-labelledby` attribute value for the list of options\n     * Provide the string of ids seperated by space\n     */\n    listAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Render the toggle button as a block element\n     */\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom offset to be applied to Floating UI's offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    dropdownOffset: {\n      type: [Number, Object],\n      required: false,\n      default: undefined\n    },\n    /**\n     * Lets the dropdown extend to match its content's width, up to a maximum width\n     * defined by the `$gl-new-dropdown-max-width` variable.\n     */\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Close the dropdown on item click (action)\n     */\n    autoClose: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n     * fit in, setting this to fixed will let it position itself above its container.\n     * https://floating-ui.com/docs/computePosition#strategy\n     */\n    positioningStrategy: {\n      type: String,\n      required: false,\n      default: POSITION_ABSOLUTE,\n      validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n    },\n    /**\n     * Opens dropdown on render\n     */\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      disclosureId: uniqueId('disclosure-'),\n      nextFocusedItemIndex: null\n    };\n  },\n  computed: {\n    disclosureTag() {\n      var _this$items;\n      if ((_this$items = this.items) !== null && _this$items !== void 0 && _this$items.length ||\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      hasOnlyListItems(this.$scopedSlots.default || this.$slots.default)) {\n        return 'ul';\n      }\n      return 'div';\n    },\n    hasCustomToggle() {\n      return Boolean(this.$scopedSlots.toggle);\n    }\n  },\n  mounted() {\n    if (this.startOpened) {\n      this.open();\n    }\n  },\n  methods: {\n    open() {\n      this.$refs.baseDropdown.open();\n    },\n    close() {\n      this.$refs.baseDropdown.close();\n    },\n    onShow() {\n      /**\n       * Emitted when dropdown is shown\n       *\n       * @event shown\n       */\n      this.$emit(GL_DROPDOWN_SHOWN);\n    },\n    onBeforeClose(event) {\n      /**\n       * Emitted when dropdown is about to be closed\n       *\n       * @event beforeClose\n       */\n      this.$emit(GL_DROPDOWN_BEFORE_CLOSE, event);\n    },\n    onHide() {\n      /**\n       * Emitted when dropdown is hidden\n       *\n       * @event hidden\n       */\n      this.$emit(GL_DROPDOWN_HIDDEN);\n      this.nextFocusedItemIndex = null;\n    },\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      const elements = this.getFocusableListItemElements();\n      if (elements.length < 1) return;\n      let stop = true;\n      if (code === HOME) {\n        this.focusItem(0, elements);\n      } else if (code === END) {\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP) {\n        this.focusNextItem(event, elements, -1);\n      } else if (code === ARROW_DOWN) {\n        this.focusNextItem(event, elements, 1);\n      } else if (code === ENTER || code === SPACE) {\n        this.handleAutoClose(event);\n      } else {\n        stop = false;\n      }\n      if (stop) {\n        stopEvent(event);\n      }\n    },\n    getFocusableListItemElements() {\n      var _this$$refs$content;\n      const items = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelectorAll(ITEM_SELECTOR);\n      return filterVisible(Array.from(items || []));\n    },\n    focusNextItem(event, elements, offset) {\n      const {\n        target\n      } = event;\n      const currentIndex = elements.indexOf(target);\n      const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n      this.focusItem(nextIndex, elements);\n    },\n    focusItem(index, elements) {\n      var _elements$index;\n      this.nextFocusedItemIndex = index;\n      (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n    },\n    closeAndFocus() {\n      this.$refs.baseDropdown.closeAndFocus();\n    },\n    handleAction(action) {\n      // See https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4376 for\n      // detailed explanation why we need requestAnimationFrame\n      window.requestAnimationFrame(() => {\n        /**\n         * Emitted when one of disclosure dropdown items is clicked\n         *\n         * @event action\n         */\n        this.$emit('action', action);\n      });\n    },\n    handleAutoClose(e) {\n      if (this.autoClose && e.target.closest(ITEM_SELECTOR) && e.target.closest(DROPDOWN_SELECTOR) === this.$refs.baseDropdown.$el) {\n        this.closeAndFocus();\n      }\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\n    },\n    isItem\n  },\n  GL_DROPDOWN_CONTENTS_CLASS\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",staticClass:\"gl-disclosure-dropdown\",attrs:{\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.toggleText,\"toggle-class\":_vm.toggleClass,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"block\":_vm.block,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide,_vm.$options.events.GL_DROPDOWN_BEFORE_CLOSE,_vm.onBeforeClose,_vm.$options.events.GL_DROPDOWN_FOCUS_CONTENT,_vm.onKeydown]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"header\"),_vm._v(\" \"),_c(_vm.disclosureTag,{ref:\"content\",tag:\"component\",class:_vm.$options.GL_DROPDOWN_CONTENTS_CLASS,attrs:{\"id\":_vm.disclosureId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.toggleId,\"data-testid\":\"disclosure-content\",\"tabindex\":\"-1\"},on:{\"keydown\":_vm.onKeydown,\"click\":_vm.handleAutoClose}},[_vm._t(\"default\",function(){return [_vm._l((_vm.items),function(item,index){return [(_vm.isItem(item))?[_c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([('list-item' in _vm.$scopedSlots)?{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}:null],null,true)})]:[_c('gl-disclosure-dropdown-group',{key:item.name,attrs:{\"bordered\":index !== 0,\"group\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.$scopedSlots['list-item'])?_vm._l((item.items),function(groupItem){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":groupItem},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":groupItem})]},proxy:true}],null,true)})}):_vm._e()],2)]]})]})],2),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { DROPDOWN_SELECTOR, ITEM_SELECTOR };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"file-holder\"},[_c('div',{staticClass:\"code blob-viewer file-content gl-flex gl-items-center gl-overflow-auto gl-rounded-base\",class:_vm.userColorScheme},[_c('div',{staticClass:\"line-numbers diff-line-num gl-border-r gl-sticky gl-left-0 gl-z-1 !gl-min-w-fit !gl-pl-3 !gl-pr-0\"},_vm._l((_vm.lineNumbers),function(line){return _c('gl-link',{key:line.lineNumber,staticClass:\"file-line-num gl-cursor-default !gl-no-underline\",class:_vm.$options.unselectedInlineNumberMarkClassName,attrs:{\"id\":_vm.lineNumberId(line),\"data-testid\":\"line-number\"}},[_vm._v(\"\\n        \"+_vm._s(line.lineNumber)+\"\\n      \")])}),1),_vm._v(\" \"),_c('code-block',{staticClass:\"highlight gl-grow !gl-overflow-visible !gl-border-none !gl-p-0 !gl-leading-20\"},[(_vm.isHighlighted)?_c('code',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.sourceCodeLines),expression:\"sourceCodeLines\"}],staticClass:\"!gl-block\"}):_c('span',{staticClass:\"plain-lines\"},[_vm._v(_vm._s(_vm.sourceCodeLines))])])],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!./vulnerability_file_content_viewer.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!./vulnerability_file_content_viewer.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink } from '@gitlab/ui';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport CodeBlock from '~/vue_shared/components/code_block.vue';\nimport {\n  unselectedInlineNumberMark,\n  numMarkerIdPrefix,\n} from 'ee/vue_shared/components/code_flow/utils/constants';\nimport {\n  markdownBlobData,\n  scrollToSpecificCodeFlow,\n} from 'ee/vue_shared/components/code_flow/utils/utils';\n\nexport default {\n  name: 'VulnerabilityFileContentViewer',\n  components: { CodeBlock, GlLink },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    startLine: { type: Number, required: false, default: null },\n    endLine: { type: Number, required: false, default: null },\n    isHighlighted: { type: Boolean, required: false, default: false },\n    content: { type: String, required: true },\n    highlightInfo: { type: Array, required: false, default: () => [] },\n    selectedStepNumber: { type: Number, required: false, default: undefined },\n  },\n  computed: {\n    lineNumbers() {\n      const linesNumbers = this.highlightInfo.map((highlight) => {\n        return {\n          lineNumber: highlight.startLine,\n          stepNumber: highlight.stepNumber,\n        };\n      });\n      return Array.from({ length: this.endLine - this.startLine + 1 }, (_, i) => {\n        const currentLineNumber = this.startLine + i;\n        return {\n          lineNumber: currentLineNumber,\n          // Combines the step numbers into a comma-separated string\n          stepNumbers: linesNumbers\n            .filter((line) => line.lineNumber === currentLineNumber)\n            .map((step) => step.stepNumber),\n        };\n      });\n    },\n    sourceCodeLines() {\n      const lines = this.content.split('\\n');\n      // content is the entire file, the GraphQL query does not have the ability to get only certain lines of the\n      // file. Because we only need certain lines, we'll split the lines into an array, slice out only those lines, then\n      // rejoin it back into a string so that the code block component can render it properly.\n      return lines\n        .slice(Math.max(this.startLine - 1, 0), Math.min(this.endLine, lines.length))\n        .map((line) => line || ' ') // to display empty lines as well!\n        .join('\\n');\n    },\n    userColorScheme() {\n      return gon.user_color_scheme;\n    },\n  },\n  watch: {\n    /**\n     * when the user selects a different step in the code flow\n     * we need to highlight the new row and scroll to it\n     */\n    selectedStepNumber() {\n      markdownBlobData(this.selectedStepNumber);\n      scrollToSpecificCodeFlow(this.selectedStepNumber);\n    },\n  },\n  mounted() {\n    /**\n     * when the user closes and opens the collapse, this component is mounted again,\n     * so we need to highlight the new row and scroll to it\n     */\n    markdownBlobData(this.selectedStepNumber);\n    scrollToSpecificCodeFlow(this.selectedStepNumber);\n  },\n  /**\n   * 1. when the component is load for the first time, the sourceCodeLines is empty\n   * (because of async function 'highlightContent' in the parent),\n   * so when sourceCodeLines is updated, we need to highlight the new row and scroll to it\n   * 2. when the user opens more code blocks, this component is updated,\n   * so we need to highlight the new row and scroll to it\n   */\n  updated() {\n    markdownBlobData(this.selectedStepNumber);\n    scrollToSpecificCodeFlow(this.selectedStepNumber);\n  },\n  methods: {\n    lineNumberId(line) {\n      return `${numMarkerIdPrefix}${line.stepNumbers}-L${line.lineNumber}`;\n    },\n  },\n  unselectedInlineNumberMarkClassName: unselectedInlineNumberMark,\n};\n</script>\n\n<template>\n  <div class=\"file-holder\">\n    <div\n      :class=\"userColorScheme\"\n      class=\"code blob-viewer file-content gl-flex gl-items-center gl-overflow-auto gl-rounded-base\"\n    >\n      <div\n        class=\"line-numbers diff-line-num gl-border-r gl-sticky gl-left-0 gl-z-1 !gl-min-w-fit !gl-pl-3 !gl-pr-0\"\n      >\n        <gl-link\n          v-for=\"line in lineNumbers\"\n          :id=\"lineNumberId(line)\"\n          :key=\"line.lineNumber\"\n          class=\"file-line-num gl-cursor-default !gl-no-underline\"\n          :class=\"$options.unselectedInlineNumberMarkClassName\"\n          data-testid=\"line-number\"\n        >\n          {{ line.lineNumber }}\n        </gl-link>\n      </div>\n\n      <code-block\n        class=\"highlight gl-grow !gl-overflow-visible !gl-border-none !gl-p-0 !gl-leading-20\"\n      >\n        <code v-if=\"isHighlighted\" v-safe-html=\"sourceCodeLines\" class=\"!gl-block\"></code>\n        <span v-else class=\"plain-lines\">{{ sourceCodeLines }}</span>\n      </code-block>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./vulnerability_file_content_viewer.vue?vue&type=template&id=95f11142\"\nimport script from \"./vulnerability_file_content_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./vulnerability_file_content_viewer.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 { invert } from 'lodash';\nimport { __, s__, sprintf } from '~/locale';\nimport {\n  STATUS_TRIGGERED,\n  STATUS_ACKNOWLEDGED,\n  STATUS_RESOLVED,\n  IssuableAttributeType as IssuableAttributeTypeFoss,\n  IssuableAttributeState as IssuableAttributeStateFoss,\n  LocalizedIssuableAttributeType as LocalizedIssuableAttributeTypeFoss,\n  dropdowni18nText as dropdowni18nTextFoss,\n  Tracking,\n  defaultEpicSort,\n  epicIidPattern,\n} from '~/sidebar/constants';\n\nexport { Tracking, defaultEpicSort, epicIidPattern };\n\nexport const edit = __('Edit');\nexport const none = __('None');\n\nexport const HEALTH_STATUS_I18N_ASSIGN_HEALTH_STATUS = s__('Sidebar|Select health status');\nexport const HEALTH_STATUS_I18N_FETCH_ERROR = __(\n  'An error occurred while fetching the health status.',\n);\nexport const HEALTH_STATUS_I18N_HEALTH_STATUS = s__('Sidebar|Health status');\nexport const HEALTH_STATUS_I18N_NO_STATUS = s__('Sidebar|No status');\nexport const HEALTH_STATUS_I18N_NONE = s__('Sidebar|None');\nexport const HEALTH_STATUS_I18N_SELECT_HEALTH_STATUS = __('Select health status');\nexport const HEALTH_STATUS_I18N_UPDATE_ERROR = __(\n  'Something went wrong while setting %{issuableType} health status.',\n);\nexport const HEALTH_STATUS_OPEN_DROPDOWN_DELAY = 100;\n\nexport const HEALTH_STATUS_AT_RISK = 'atRisk';\nexport const HEALTH_STATUS_NEEDS_ATTENTION = 'needsAttention';\nexport const HEALTH_STATUS_ON_TRACK = 'onTrack';\n\nexport const healthStatusTextMap = {\n  [HEALTH_STATUS_ON_TRACK]: __('On track'),\n  [HEALTH_STATUS_NEEDS_ATTENTION]: __('Needs attention'),\n  [HEALTH_STATUS_AT_RISK]: __('At risk'),\n};\n\nexport const healthStatusVariantMap = {\n  [HEALTH_STATUS_ON_TRACK]: 'success',\n  [HEALTH_STATUS_NEEDS_ATTENTION]: 'warning',\n  [HEALTH_STATUS_AT_RISK]: 'danger',\n};\n\nexport const healthStatusIconMap = {\n  [HEALTH_STATUS_ON_TRACK]: 'status-health',\n  [HEALTH_STATUS_NEEDS_ATTENTION]: 'warning',\n  [HEALTH_STATUS_AT_RISK]: 'error',\n};\n\nexport const healthStatusColorMap = {\n  [HEALTH_STATUS_ON_TRACK]: 'gl-text-success',\n  [HEALTH_STATUS_NEEDS_ATTENTION]: 'gl-text-orange-500',\n  [HEALTH_STATUS_AT_RISK]: 'gl-text-red-500',\n};\n\nexport const healthStatusForRestApi = {\n  NO_STATUS: '0',\n  [HEALTH_STATUS_ON_TRACK]: 'on_track',\n  [HEALTH_STATUS_NEEDS_ATTENTION]: 'needs_attention',\n  [HEALTH_STATUS_AT_RISK]: 'at_risk',\n};\n\nexport const healthStatusDropdownOptions = [\n  { text: __('On track'), value: HEALTH_STATUS_ON_TRACK },\n  { text: __('Needs attention'), value: HEALTH_STATUS_NEEDS_ATTENTION },\n  { text: __('At risk'), value: HEALTH_STATUS_AT_RISK },\n];\n\nexport const healthStatusTracking = {\n  event: Tracking.editEvent,\n  label: Tracking.rightSidebarLabel,\n  property: 'health_status',\n};\n\nexport const iterationSelectTextMap = {\n  iteration: __('Iteration'),\n  noIteration: __('No iteration'),\n  assignIteration: __('Select iteration'),\n  iterationSelectFail: __('Failed to set iteration on this issue. Please try again.'),\n  currentIterationFetchError: __('Failed to fetch the iteration for this issue. Please try again.'),\n  iterationsFetchError: __('Failed to fetch the iterations for the group. Please try again.'),\n  noIterationsFound: s__('Iterations|No iterations found'),\n};\n\nexport const noAttributeId = null;\n\nexport const noEpic = {\n  id: 0,\n  title: __('No Epic'),\n};\n\nexport const placeholderEpic = {\n  id: -1,\n  title: __('Select epic'),\n};\n\nexport const SIDEBAR_ESCALATION_POLICY_TITLE = __('Escalation policy');\n\nexport const MAX_DISPLAY_WEIGHT = 99999;\n\nexport const CVE_ID_REQUEST_SIDEBAR_I18N = {\n  action: s__('CVE|Request CVE ID'),\n  description: s__('CVE|CVE ID Request'),\n  createRequest: s__('CVE|Create CVE ID Request'),\n  whyRequest: s__('CVE|Why Request a CVE ID?'),\n  whyText1: s__(\n    'CVE|Common Vulnerability Enumeration (CVE) identifiers are used to track distinct vulnerabilities in specific versions of code.',\n  ),\n  whyText2: s__(\n    'CVE|As a maintainer, requesting a CVE for a vulnerability in your project will help your users stay secure and informed.',\n  ),\n  learnMore: __('Learn more'),\n};\n\nexport const IssuableAttributeType = {\n  ...IssuableAttributeTypeFoss,\n  Iteration: 'iteration',\n  Epic: 'epic',\n  EscalationPolicy: 'escalation policy', // eslint-disable-line @gitlab/require-i18n-strings\n  Parent: 'parent',\n};\n\nexport const LocalizedIssuableAttributeType = {\n  ...LocalizedIssuableAttributeTypeFoss,\n  Iteration: s__('Issuable|iteration'),\n  Epic: s__('Issuable|epic'),\n  EscalationPolicy: s__('Issuable|escalation policy'),\n};\n\n// The reason we did this conversion is that we want to keep track of the keys via referencing the object itself\n// Thus we have to convert value as key, and use is in the method.\nexport const IssuableAttributeTypeKeyMap = invert(IssuableAttributeType);\n\nexport const IssuableAttributeState = {\n  ...IssuableAttributeStateFoss,\n  [IssuableAttributeType.Iteration]: 'opened',\n  [IssuableAttributeType.Epic]: 'opened',\n};\n\nexport function dropdowni18nText(issuableAttribute, issuableType) {\n  let noAttributesFound = s__('DropdownWidget|No %{issuableAttribute} found');\n\n  if (issuableAttribute === LocalizedIssuableAttributeType.Iteration) {\n    noAttributesFound = s__('DropdownWidget|No open %{issuableAttribute} found');\n  }\n\n  return {\n    ...dropdowni18nTextFoss(issuableAttribute, issuableType),\n    noAttributesFound: sprintf(noAttributesFound, {\n      issuableAttribute,\n    }),\n  };\n}\n\nexport const i18nHelpText = {\n  title: s__('IncidentManagement|Page your team with escalation policies'),\n  detail: s__(\n    'IncidentManagement|Use escalation policies to automatically page your team when incidents are created.',\n  ),\n  linkText: __('Learn more'),\n};\n\nexport const i18nPolicyText = {\n  paged: s__('IncidentManagement|Paged'),\n  title: SIDEBAR_ESCALATION_POLICY_TITLE,\n  none,\n};\n\nexport const i18nStatusHeaderText = s__('IncidentManagement|Assign paging status');\nconst STOPS_PAGING = s__('IncidentManagement|Stops paging');\n\nexport const STATUS_SUBTEXTS = {\n  [STATUS_TRIGGERED]: '',\n\n  [STATUS_ACKNOWLEDGED]: STOPS_PAGING,\n  [STATUS_RESOLVED]: STOPS_PAGING,\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"updateIssuableSeverity\"},\"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\":\"severity\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableSeverity\"}}},\"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\":\"issueSetSeverity\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"projectPath\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":258}};\n    doc.loc.source = {\"body\":\"mutation updateIssuableSeverity($projectPath: ID!, $severity: IssuableSeverity!, $iid: String!) {\\n  issueSetSeverity(input: { iid: $iid, severity: $severity, projectPath: $projectPath }) {\\n    errors\\n    issue {\\n      iid\\n      id\\n      severity\\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[\"updateIssuableSeverity\"] = oneQuery(doc, \"updateIssuableSeverity\");\n        \n","// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport { sprintf, s__, __ } from '~/locale';\n\nexport default {\n  props: {\n    discussionId: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    resolveDiscussion: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isDraft: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    ...mapGetters(['isDiscussionResolved']),\n    resolvedStatusMessage() {\n      let message;\n      const discussionResolved = this.isDiscussionResolved(\n        'draft' in this ? this.draft.discussion_id : this.discussionId,\n      );\n      const discussionToBeResolved =\n        'draft' in this ? this.draft.resolve_discussion : this.resolveDiscussion;\n\n      if (discussionToBeResolved && discussionResolved && !this.$options.showStaysResolved) {\n        return undefined;\n      }\n\n      if (discussionToBeResolved) {\n        message = discussionResolved\n          ? s__('MergeRequests|Thread stays resolved')\n          : s__('MergeRequests|Thread will be resolved');\n      } else if (discussionResolved) {\n        message = s__('MergeRequests|Thread will be unresolved');\n      } else if (this.$options.showStaysResolved) {\n        message = s__('MergeRequests|Thread stays unresolved');\n      }\n\n      return message;\n    },\n    componentClasses() {\n      return this.resolveDiscussion ? 'is-resolving-discussion' : 'is-unresolving-discussion';\n    },\n    resolveButtonTitle() {\n      const escapeParameters = false;\n\n      if (this.isDraft || this.discussionId) return this.resolvedStatusMessage;\n\n      let title = __('Resolve thread');\n\n      if (this.resolvedBy) {\n        title = sprintf(\n          __('Resolved by %{name}'),\n          { name: this.resolvedBy.name },\n          escapeParameters,\n        );\n      }\n\n      return title;\n    },\n  },\n  showStaysResolved: true,\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"file-container\"},[_c('div',{staticClass:\"file-content\"},[_c('p',{staticClass:\"file-info gl-mt-3\"},[_vm._v(\"\\n      \"+_vm._s(_vm.fileName)+\"\\n      \"),(_vm.fileSize > 0)?[_vm._v(\" (\"+_vm._s(_vm.fileSizeReadable)+\") \")]:_vm._e()],2),_vm._v(\" \"),_c('a',{staticClass:\"btn btn-default\",attrs:{\"href\":_vm.path,\"rel\":\"nofollow\",\"download\":_vm.fileName,\"target\":\"_blank\"}},[_c('gl-icon',{staticClass:\"float-left gl-mr-3\",attrs:{\"size\":16,\"name\":\"download\"}}),_vm._v(\"\\n      \"+_vm._s(_vm.__('Download'))+\"\\n    \")],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./download_viewer.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!./download_viewer.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { numberToHumanSize } from '~/lib/utils/number_utils';\n\nexport default {\n  components: {\n    GlIcon,\n  },\n  props: {\n    path: {\n      type: String,\n      required: true,\n    },\n    filePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    fileSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n  },\n  computed: {\n    fileSizeReadable() {\n      return numberToHumanSize(this.fileSize);\n    },\n    fileName() {\n      // path could be a base64 uri too, so check if filePath was passed additionally\n      return (this.filePath || this.path).split('/').pop();\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"file-container\">\n    <div class=\"file-content\">\n      <p class=\"file-info gl-mt-3\">\n        {{ fileName }}\n        <template v-if=\"fileSize > 0\"> ({{ fileSizeReadable }}) </template>\n      </p>\n      <a :href=\"path\" class=\"btn btn-default\" rel=\"nofollow\" :download=\"fileName\" target=\"_blank\">\n        <gl-icon :size=\"16\" name=\"download\" class=\"float-left gl-mr-3\" />\n        {{ __('Download') }}\n      </a>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./download_viewer.vue?vue&type=template&id=535df327\"\nimport script from \"./download_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./download_viewer.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","exports = module.exports = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.file-row {\\n  display: flex;\\n  align-items: center;\\n  height: var(--file-row-height, 32px);\\n  padding: 4px 8px;\\n  margin-left: -8px;\\n  margin-right: -8px;\\n  border-radius: 3px;\\n  text-align: left;\\n  cursor: pointer;\\n}\\n.file-row-name-container {\\n  display: flex;\\n  width: 100%;\\n  align-items: center;\\n  overflow: visible;\\n}\\n.file-row-name {\\n  display: inline-block;\\n  flex: 1;\\n  max-width: inherit;\\n  height: 19px;\\n  line-height: 16px;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  margin-left: calc(var(--level) * 16px);\\n}\\n.file-row-name .file-row-icon {\\n  margin-right: 2px;\\n  vertical-align: middle;\\n}\\n\", \"\"]);\n\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./local_storage_sync.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!./local_storage_sync.vue?vue&type=script&lang=js\"","<script>\nimport { isEqual, isString } from 'lodash';\n\n/**\n * This component will save and restore a value to and from localStorage.\n * The value will be saved only when the value changes; the initial value won't be saved.\n *\n * By default, the value will be saved using JSON.stringify(), and retrieved back using JSON.parse().\n *\n * If you would like to save the raw string instead, you may set the 'asString' prop to true, though be aware that this is a\n * legacy prop to maintain backwards compatibility.\n *\n * For new components saving data for the first time, it's recommended to not use 'asString' even if you're saving a string; it will still be\n * saved and restored properly using JSON.stringify()/JSON.parse().\n */\nexport default {\n  props: {\n    storageKey: {\n      type: String,\n      required: true,\n    },\n    value: {\n      type: [String, Number, Boolean, Array, Object],\n      required: false,\n      default: '',\n    },\n    asString: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    persist: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    clear: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  watch: {\n    value(newVal) {\n      if (!this.persist) return;\n\n      this.saveValue(this.serialize(newVal));\n    },\n    clear(newVal) {\n      if (newVal) {\n        localStorage.removeItem(this.storageKey);\n      }\n    },\n  },\n  mounted() {\n    // On mount, trigger update if we actually have a localStorageValue\n    const { exists, value } = this.getStorageValue();\n\n    if (exists && !isEqual(value, this.value)) {\n      this.$emit('input', value);\n    }\n  },\n  methods: {\n    getStorageValue() {\n      const value = localStorage.getItem(this.storageKey);\n\n      if (value === null) {\n        return { exists: false };\n      }\n\n      try {\n        return { exists: true, value: this.deserialize(value) };\n      } catch {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] Failed to deserialize value from localStorage (key=${this.storageKey})`,\n          value,\n        );\n        // default to \"don't use localStorage value\"\n        return { exists: false };\n      }\n    },\n    saveValue(val) {\n      localStorage.setItem(this.storageKey, val);\n    },\n    serialize(val) {\n      if (!isString(val) && this.asString) {\n        // eslint-disable-next-line no-console\n        console.warn(\n          `[gitlab] LocalStorageSync is saving`,\n          val,\n          `to the key \"${this.storageKey}\", but it is not a string and the 'asString' prop is true. This will save and restore the stringified value rather than the original value. If this is not intended, please remove or set the 'asString' prop to false.`,\n        );\n      }\n\n      return this.asString ? val : JSON.stringify(val);\n    },\n    deserialize(val) {\n      return this.asString ? val : JSON.parse(val);\n    },\n  },\n  render() {\n    return this.$scopedSlots.default?.();\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./local_storage_sync.vue?vue&type=script&lang=js\"\nexport * from \"./local_storage_sync.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\nexport default createEventHub();\n","/* Developer beware! Do not add logic to showButton or hideButton\n * that will force a reflow. Doing so will create a significant performance\n * bottleneck for pages with large diffs. For a comprehensive list of what\n * causes reflows, visit https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n */\n\nimport { getCookie } from '~/lib/utils/common_utils';\n\nconst LINE_NUMBER_CLASS = 'diff-line-num';\nconst UNFOLDABLE_LINE_CLASS = 'js-unfold';\nconst NO_COMMENT_CLASS = 'no-comment-btn';\nconst EMPTY_CELL_CLASS = 'empty-cell';\nconst OLD_LINE_CLASS = 'old_line';\nconst LINE_COLUMN_CLASSES = `.${LINE_NUMBER_CLASS}, .line_content`;\nconst DIFF_CONTAINER_SELECTOR = '.files';\nconst DIFF_EXPANDED_CLASS = 'diff-expanded';\n\nexport default {\n  init($diffFile) {\n    /* Caching is used only when the following members are *true*.\n     * This is because there are likely to be\n     * differently configured versions of diffs in the same session.\n     * However if these values are true, they\n     * will be true in all cases */\n\n    if (!this.userCanCreateNote) {\n      // data-can-create-note is an empty string when true, otherwise undefined\n      this.userCanCreateNote =\n        $diffFile.closest(DIFF_CONTAINER_SELECTOR).data('canCreateNote') === '';\n    }\n\n    this.isParallelView = getCookie('diff_view') === 'parallel';\n\n    if (this.userCanCreateNote) {\n      $diffFile\n        .on('mouseover', LINE_COLUMN_CLASSES, (e) => this.showButton(this.isParallelView, e))\n        .on('mouseleave', LINE_COLUMN_CLASSES, (e) => this.hideButton(this.isParallelView, e));\n    }\n  },\n\n  showButton(isParallelView, e) {\n    const buttonParentElement = this.getButtonParent(e.currentTarget, isParallelView);\n\n    if (!this.validateButtonParent(buttonParentElement)) return;\n\n    buttonParentElement.classList.add('is-over');\n    buttonParentElement.nextElementSibling.classList.add('is-over');\n  },\n\n  hideButton(isParallelView, e) {\n    const buttonParentElement = this.getButtonParent(e.currentTarget, isParallelView);\n\n    buttonParentElement.classList.remove('is-over');\n    buttonParentElement.nextElementSibling.classList.remove('is-over');\n  },\n\n  getButtonParent(hoveredElement, isParallelView) {\n    if (isParallelView) {\n      if (!hoveredElement.classList.contains(LINE_NUMBER_CLASS)) {\n        return hoveredElement.previousElementSibling;\n      }\n    } else if (!hoveredElement.classList.contains(OLD_LINE_CLASS)) {\n      return hoveredElement.parentNode.querySelector(`.${OLD_LINE_CLASS}`);\n    }\n    return hoveredElement;\n  },\n\n  validateButtonParent(buttonParentElement) {\n    return (\n      !buttonParentElement.classList.contains(EMPTY_CELL_CLASS) &&\n      !buttonParentElement.classList.contains(UNFOLDABLE_LINE_CLASS) &&\n      !buttonParentElement.classList.contains(NO_COMMENT_CLASS) &&\n      !buttonParentElement.parentNode.classList.contains(DIFF_EXPANDED_CLASS)\n    );\n  },\n};\n","/* eslint-disable func-names, consistent-return, one-var, no-return-assign */\n\nimport $ from 'jquery';\n\n// Width where images must fits in, for 2-up this gets divided by 2\nconst availWidth = 900;\nconst viewModes = ['two-up', 'swipe'];\n\nexport default class ImageFile {\n  constructor(file) {\n    this.file = file;\n    this.requestImageInfo($('.two-up.view .frame.deleted img', this.file), () =>\n      this.requestImageInfo($('.two-up.view .frame.added img', this.file), () => {\n        this.initViewModes();\n\n        // Load two-up view after images are loaded\n        // so that we can display the correct width and height information\n        this.initView('two-up');\n      }),\n    );\n  }\n\n  initViewModes() {\n    const viewMode = viewModes[0];\n    $('.view-modes', this.file).removeClass('gl-hidden');\n    $('.view-modes-menu', this.file).on('click', 'li', (event) => {\n      if (!$(event.currentTarget).hasClass('active')) {\n        return this.activateViewMode(event.currentTarget.className);\n      }\n    });\n    return this.activateViewMode(viewMode);\n  }\n\n  activateViewMode(viewMode) {\n    $('.view-modes-menu li', this.file)\n      .removeClass('active')\n      .filter(`.${viewMode}`)\n      .addClass('active');\n\n    $(`.view:visible:not(.${viewMode})`, this.file).addClass('gl-hidden');\n    $(`.view.${viewMode}`, this.file).removeClass('gl-hidden');\n\n    return this.initView(viewMode);\n  }\n\n  initView(viewMode) {\n    return this.views[viewMode].call(this);\n  }\n  // eslint-disable-next-line class-methods-use-this\n  initDraggable($el, padding, callback) {\n    let dragging = false;\n    const $body = $('body');\n    const $offsetEl = $el.parent();\n    const dragStart = function () {\n      dragging = true;\n      $body.css('user-select', 'none');\n    };\n    const dragStop = function () {\n      dragging = false;\n      $body.css('user-select', '');\n    };\n    const dragMove = function (e) {\n      const moveX = e.pageX || e.touches[0].pageX;\n      const left = moveX - ($offsetEl.offset().left + padding);\n      if (!dragging) return;\n\n      callback(e, left);\n    };\n\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    $el.off('mousedown').off('touchstart').on('mousedown', dragStart).on('touchstart', dragStart);\n\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    $body\n      .off('mouseup')\n      .off('mousemove')\n      .off('touchend')\n      .off('touchmove')\n      .on('mouseup', dragStop)\n      .on('touchend', dragStop)\n      .on('mousemove', dragMove)\n      .on('touchmove', dragMove);\n  }\n\n  static prepareFrames(view) {\n    let maxWidth = 0;\n    let maxHeight = 0;\n    $('.frame', view)\n      .each((index, frame) => {\n        const width = $(frame).width();\n        const height = $(frame).height();\n        maxWidth = width > maxWidth ? width : maxWidth;\n        return (maxHeight = height > maxHeight ? height : maxHeight);\n      })\n      .css({\n        width: maxWidth,\n        height: maxHeight,\n      });\n    return [maxWidth, maxHeight];\n  }\n\n  views = {\n    'two-up': function () {\n      return $('.two-up.view .wrap', this.file).each((index, wrap) => {\n        $('img', wrap).each(function () {\n          const currentWidth = $(this).width();\n          if (currentWidth > availWidth / 2) {\n            return $(this).width(availWidth / 2);\n          }\n        });\n        return this.requestImageInfo($('img', wrap), (width, height) => {\n          $('.image-info .meta-width', wrap).text(`${width}px`);\n          $('.image-info .meta-height', wrap).text(`${height}px`);\n          return $('.image-info', wrap).removeClass('gl-hidden');\n        });\n      });\n    },\n    swipe() {\n      let maxWidth = 0;\n      let maxHeight = 0;\n      return $('.swipe.view', this.file).each((index, view) => {\n        const ref = ImageFile.prepareFrames(view);\n        [maxWidth, maxHeight] = ref;\n        const $swipeFrame = $('.swipe-frame', view);\n        const $swipeWrap = $('.swipe-wrap', view);\n        const $swipeBar = $('.swipe-bar', view);\n\n        $swipeFrame.css({\n          width: maxWidth + 16,\n          height: maxHeight + 28,\n        });\n        $swipeWrap.css({\n          width: maxWidth + 1,\n          height: maxHeight + 2,\n        });\n        // Set swipeBar left position to match image frame\n        $swipeBar.css({\n          left: 1,\n        });\n\n        const wrapPadding = parseInt($swipeWrap.css('right').replace('px', ''), 10);\n\n        this.initDraggable($swipeBar, wrapPadding, (e, left) => {\n          if (left > 0 && left < $swipeFrame.width() - wrapPadding * 2) {\n            $swipeWrap.width(maxWidth + 1 - left);\n            $swipeBar.css('left', left);\n          }\n        });\n      });\n    },\n    'onion-skin': function () {\n      let maxHeight, maxWidth;\n      maxWidth = 0;\n      maxHeight = 0;\n      const dragTrackWidth = $('.drag-track', this.file).width() - $('.dragger', this.file).width();\n      return $('.onion-skin.view', this.file).each((index, view) => {\n        const ref = ImageFile.prepareFrames(view);\n        [maxWidth, maxHeight] = ref;\n        const $frame = $('.onion-skin-frame', view);\n        const $frameAdded = $('.frame.added', view);\n        const $track = $('.drag-track', view);\n        const $dragger = $('.dragger', $track);\n\n        $frame.css({\n          width: maxWidth + 16,\n          height: maxHeight + 28,\n        });\n        $('.swipe-wrap', view).css({\n          width: maxWidth + 1,\n          height: maxHeight + 2,\n        });\n        $dragger.css({\n          left: dragTrackWidth,\n        });\n\n        $frameAdded.css('opacity', 1);\n        const framePadding = parseInt($frameAdded.css('right').replace('px', ''), 10);\n\n        this.initDraggable($dragger, framePadding, (e, left) => {\n          const opacity = left / dragTrackWidth;\n\n          if (opacity >= 0 && opacity <= 1) {\n            $dragger.css('left', left);\n            $frameAdded.css('opacity', opacity);\n          }\n        });\n      });\n    },\n  };\n\n  requestImageInfo(img, callback) {\n    const domImg = img.get(0);\n    if (domImg) {\n      if (domImg.complete) {\n        return callback.call(this, domImg.naturalWidth, domImg.naturalHeight);\n      }\n      return img.on('load', () => callback.call(this, domImg.naturalWidth, domImg.naturalHeight));\n    }\n  }\n}\n","import { spriteIcon } from '~/lib/utils/common_utils';\n\nexport function createImageBadge(noteId, { x, y }, classNames = []) {\n  const buttonEl = document.createElement('button');\n  const classList = classNames.concat(['js-image-badge']);\n  classList.forEach((className) => buttonEl.classList.add(className));\n  buttonEl.setAttribute('type', 'button');\n  buttonEl.setAttribute('disabled', true);\n  buttonEl.dataset.noteId = noteId;\n  buttonEl.style.left = `${x}px`;\n  buttonEl.style.top = `${y}px`;\n\n  return buttonEl;\n}\n\nexport function addImageBadge(containerEl, { coordinate, badgeText, noteId }) {\n  const buttonEl = createImageBadge(noteId, coordinate, [\n    'gl-flex',\n    'gl-items-center',\n    'gl-justify-center',\n    'gl-text-sm',\n    'design-note-pin',\n    'on-image',\n    'gl-absolute',\n  ]);\n  buttonEl.textContent = badgeText;\n\n  containerEl.appendChild(buttonEl);\n}\n\nexport function addImageCommentBadge(containerEl, { coordinate, noteId }) {\n  const buttonEl = createImageBadge(noteId, coordinate, ['image-comment-badge']);\n  // eslint-disable-next-line no-unsanitized/property\n  buttonEl.innerHTML = spriteIcon('image-comment-dark');\n\n  containerEl.appendChild(buttonEl);\n}\n\nexport function addAvatarBadge(el, event) {\n  const { noteId, badgeNumber } = event.detail;\n\n  // Add design pin to new comment\n  const avatarBadgeEl = el.querySelector(`#${noteId} .design-note-pin`);\n  avatarBadgeEl.textContent = badgeNumber;\n  avatarBadgeEl.classList.remove('hidden');\n}\n","import { spriteIcon } from '~/lib/utils/common_utils';\n\nexport function addCommentIndicator(containerEl, { x, y }) {\n  const buttonEl = document.createElement('button');\n  buttonEl.classList.add('gl-border-0');\n  buttonEl.classList.add('gl-bg-transparent');\n  buttonEl.classList.add('comment-indicator');\n  buttonEl.setAttribute('type', 'button');\n  buttonEl.style.left = `${x}px`;\n  buttonEl.style.top = `${y}px`;\n\n  // eslint-disable-next-line no-unsanitized/property\n  buttonEl.innerHTML = spriteIcon('image-comment-dark');\n\n  containerEl.appendChild(buttonEl);\n}\n\nexport function removeCommentIndicator(imageFrameEl) {\n  const commentIndicatorEl = imageFrameEl.querySelector('.comment-indicator');\n  const imageEl = imageFrameEl.querySelector('img');\n  const willRemove = Boolean(commentIndicatorEl);\n  let meta = {};\n\n  if (willRemove) {\n    meta = {\n      x: parseInt(commentIndicatorEl.style.left, 10),\n      y: parseInt(commentIndicatorEl.style.top, 10),\n      image: {\n        width: imageEl.width,\n        height: imageEl.height,\n      },\n    };\n\n    commentIndicatorEl.remove();\n  }\n\n  return { ...meta, removed: willRemove };\n}\n\nexport function showCommentIndicator(imageFrameEl, coordinate) {\n  const { x, y } = coordinate;\n  const commentIndicatorEl = imageFrameEl.querySelector('.comment-indicator');\n\n  if (commentIndicatorEl) {\n    commentIndicatorEl.style.left = `${x}px`;\n    commentIndicatorEl.style.top = `${y}px`;\n  } else {\n    addCommentIndicator(imageFrameEl, coordinate);\n  }\n}\n\nexport function commentIndicatorOnClick(event) {\n  // Prevent from triggering onAddImageDiffNote in notes.js\n  event.stopPropagation();\n\n  const buttonEl = event.currentTarget;\n  const diffViewerEl = buttonEl.closest('.diff-viewer');\n  const textareaEl = diffViewerEl.querySelector('.note-container .note-textarea');\n  textareaEl.focus();\n}\n","import imageDiffHelper from './helpers/index';\n\nconst defaultMeta = {\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n};\n\nexport default class ImageBadge {\n  constructor(options) {\n    const { noteId, discussionId } = options;\n\n    this.actual = options.actual || defaultMeta;\n    this.browser = options.browser || defaultMeta;\n    this.noteId = noteId;\n    this.discussionId = discussionId;\n\n    if (options.imageEl && !options.browser) {\n      this.browser = imageDiffHelper.resizeCoordinatesToImageElement(options.imageEl, this.actual);\n    }\n  }\n}\n","import * as badgeHelper from './badge_helper';\nimport * as commentIndicatorHelper from './comment_indicator_helper';\nimport * as domHelper from './dom_helper';\nimport * as utilsHelper from './utils_helper';\n\nexport default {\n  addCommentIndicator: commentIndicatorHelper.addCommentIndicator,\n  removeCommentIndicator: commentIndicatorHelper.removeCommentIndicator,\n  showCommentIndicator: commentIndicatorHelper.showCommentIndicator,\n  commentIndicatorOnClick: commentIndicatorHelper.commentIndicatorOnClick,\n\n  addImageBadge: badgeHelper.addImageBadge,\n  addImageCommentBadge: badgeHelper.addImageCommentBadge,\n  addAvatarBadge: badgeHelper.addAvatarBadge,\n\n  setPositionDataAttribute: domHelper.setPositionDataAttribute,\n  updateDiscussionAvatarBadgeNumber: domHelper.updateDiscussionAvatarBadgeNumber,\n  updateDiscussionBadgeNumber: domHelper.updateDiscussionBadgeNumber,\n  toggleCollapsed: domHelper.toggleCollapsed,\n\n  resizeCoordinatesToImageElement: utilsHelper.resizeCoordinatesToImageElement,\n  generateBadgeFromDiscussionDOM: utilsHelper.generateBadgeFromDiscussionDOM,\n  getTargetSelection: utilsHelper.getTargetSelection,\n};\n","export function setPositionDataAttribute(el, options) {\n  // Update position data attribute so that the\n  // new comment form can use this data for ajax request\n  const { x, y, width, height } = options;\n  const { position } = el.dataset;\n\n  const positionObject = { ...JSON.parse(position), x, y, width, height };\n\n  el.dataset.position = JSON.stringify(positionObject);\n}\n\nexport function updateDiscussionAvatarBadgeNumber(discussionEl, newBadgeNumber) {\n  const avatarBadgeEl = discussionEl.querySelector('.image-diff-avatar-link .design-note-pin');\n  avatarBadgeEl.textContent = newBadgeNumber;\n}\n\nexport function updateDiscussionBadgeNumber(discussionEl, newBadgeNumber) {\n  const discussionBadgeEl = discussionEl.querySelector('.design-note-pin');\n  discussionBadgeEl.textContent = newBadgeNumber;\n}\n\nexport function toggleCollapsed(event) {\n  const toggleButtonEl = event.currentTarget;\n  const discussionNotesEl = toggleButtonEl.closest('.discussion-notes');\n  const formEl = discussionNotesEl.querySelector('.discussion-form');\n  const isCollapsed = discussionNotesEl.classList.contains('collapsed');\n\n  if (isCollapsed) {\n    discussionNotesEl.classList.remove('collapsed');\n  } else {\n    discussionNotesEl.classList.add('collapsed');\n  }\n\n  // Override the inline display style set in notes.js\n  if (formEl && !isCollapsed) {\n    formEl.style.display = 'none';\n  } else if (formEl && isCollapsed) {\n    formEl.style.display = 'block';\n  }\n}\n","import ImageBadge from '../image_badge';\n\nexport function resizeCoordinatesToImageElement(imageEl, meta) {\n  const { x, y, width, height } = meta;\n\n  const imageWidth = imageEl.width;\n  const imageHeight = imageEl.height;\n\n  const widthRatio = imageWidth / width;\n  const heightRatio = imageHeight / height;\n\n  return {\n    x: Math.round(x * widthRatio),\n    y: Math.round(y * heightRatio),\n    width: imageWidth,\n    height: imageHeight,\n  };\n}\n\nexport function generateBadgeFromDiscussionDOM(imageFrameEl, discussionEl) {\n  const position = JSON.parse(discussionEl.dataset.position);\n  const firstNoteEl = discussionEl.querySelector('.note');\n  const badge = new ImageBadge({\n    actual: position,\n    imageEl: imageFrameEl.querySelector('img'),\n    noteId: firstNoteEl.id,\n    discussionId: discussionEl.dataset.discussionId,\n  });\n\n  return badge;\n}\n\nexport function getTargetSelection(event) {\n  const containerEl = event.currentTarget;\n  const imageEl = containerEl.querySelector('img');\n\n  const x = event.offsetX;\n  const y = event.offsetY;\n\n  const { width, height } = imageEl;\n\n  const actualWidth = imageEl.naturalWidth;\n  const actualHeight = imageEl.naturalHeight;\n\n  const widthRatio = actualWidth / width;\n  const heightRatio = actualHeight / height;\n\n  // Browser will include the frame as a clickable target,\n  // which would result in potential 1px out of bounds value\n  // This bound the coordinates to inside the frame\n  const normalizedX = Math.max(0, x) && Math.min(x, width);\n  const normalizedY = Math.max(0, y) && Math.min(y, height);\n\n  return {\n    browser: {\n      x: normalizedX,\n      y: normalizedY,\n      width,\n      height,\n    },\n    actual: {\n      // Round x, y so that we don't need to deal with decimals\n      x: Math.round(normalizedX * widthRatio),\n      y: Math.round(normalizedY * heightRatio),\n      width: actualWidth,\n      height: actualHeight,\n    },\n  };\n}\n","import $ from 'jquery';\nimport { isImageLoaded } from '../lib/utils/image_utility';\nimport imageDiffHelper from './helpers/index';\nimport ImageBadge from './image_badge';\n\nexport default class ImageDiff {\n  constructor(el, options) {\n    this.el = el;\n    this.canCreateNote = Boolean(options && options.canCreateNote);\n    this.renderCommentBadge = Boolean(options && options.renderCommentBadge);\n    this.$noteContainer = $('.note-container', this.el);\n    this.imageBadges = [];\n  }\n\n  init() {\n    this.imageFrameEl = this.el.querySelector('.diff-file .js-image-frame');\n    this.imageEl = this.imageFrameEl.querySelector('img');\n\n    this.bindEvents();\n  }\n\n  bindEvents() {\n    this.imageClickedWrapper = this.imageClicked.bind(this);\n    this.imageBlurredWrapper = imageDiffHelper.removeCommentIndicator.bind(null, this.imageFrameEl);\n    this.addBadgeWrapper = this.addBadge.bind(this);\n    this.removeBadgeWrapper = this.removeBadge.bind(this);\n    this.renderBadgesWrapper = this.renderBadges.bind(this);\n\n    // Render badges\n    if (isImageLoaded(this.imageEl)) {\n      this.renderBadges();\n    } else {\n      this.imageEl.addEventListener('load', this.renderBadgesWrapper);\n    }\n\n    // jquery makes the event delegation here much simpler\n    this.$noteContainer.on('click', '.js-diff-notes-toggle', imageDiffHelper.toggleCollapsed);\n    $(this.el).on('click', '.comment-indicator', imageDiffHelper.commentIndicatorOnClick);\n\n    if (this.canCreateNote) {\n      this.el.addEventListener('click.imageDiff', this.imageClickedWrapper);\n      this.el.addEventListener('blur.imageDiff', this.imageBlurredWrapper);\n      this.el.addEventListener('addBadge.imageDiff', this.addBadgeWrapper);\n      this.el.addEventListener('removeBadge.imageDiff', this.removeBadgeWrapper);\n    }\n  }\n\n  imageClicked(event) {\n    const customEvent = event.detail;\n    const selection = imageDiffHelper.getTargetSelection(customEvent);\n    const el = customEvent.currentTarget;\n\n    imageDiffHelper.setPositionDataAttribute(el, selection.actual);\n    imageDiffHelper.showCommentIndicator(this.imageFrameEl, selection.browser);\n  }\n\n  renderBadges() {\n    const discussionsEls = this.el.querySelectorAll('.note-container .discussion-notes .notes');\n    [...discussionsEls].forEach(this.renderBadge.bind(this));\n  }\n\n  renderBadge(discussionEl, index) {\n    const imageBadge = imageDiffHelper.generateBadgeFromDiscussionDOM(\n      this.imageFrameEl,\n      discussionEl,\n    );\n\n    this.imageBadges.push(imageBadge);\n\n    const options = {\n      coordinate: imageBadge.browser,\n      noteId: imageBadge.noteId,\n    };\n\n    if (this.renderCommentBadge) {\n      imageDiffHelper.addImageCommentBadge(this.imageFrameEl, options);\n    } else {\n      const numberBadgeOptions = { ...options, badgeText: index + 1 };\n\n      imageDiffHelper.addImageBadge(this.imageFrameEl, numberBadgeOptions);\n    }\n  }\n\n  addBadge(event) {\n    const { x, y, width, height, noteId, discussionId } = event.detail;\n    const badgeText = this.imageBadges.length + 1;\n    const imageBadge = new ImageBadge({\n      actual: {\n        x,\n        y,\n        width,\n        height,\n      },\n      imageEl: this.imageFrameEl.querySelector('img'),\n      noteId,\n      discussionId,\n    });\n\n    this.imageBadges.push(imageBadge);\n\n    imageDiffHelper.addImageBadge(this.imageFrameEl, {\n      coordinate: imageBadge.browser,\n      badgeText,\n      noteId,\n    });\n\n    imageDiffHelper.addAvatarBadge(this.el, {\n      detail: {\n        noteId,\n        badgeNumber: badgeText,\n      },\n    });\n\n    const discussionEl = this.el.querySelector(`#discussion_${discussionId}`);\n    imageDiffHelper.updateDiscussionBadgeNumber(discussionEl, badgeText);\n  }\n\n  removeBadge(event) {\n    const { badgeNumber } = event.detail;\n    const indexToRemove = badgeNumber - 1;\n    const imageBadgeEls = this.imageFrameEl.querySelectorAll('.design-note-pin');\n\n    if (this.imageBadges.length !== badgeNumber) {\n      // Cascade badges count numbers for (avatar badges + image badges)\n      this.imageBadges.forEach((badge, index) => {\n        if (index > indexToRemove) {\n          const { discussionId } = badge;\n          const updatedBadgeNumber = index;\n          const discussionEl = this.el.querySelector(`#discussion_${discussionId}`);\n\n          imageBadgeEls[index].textContent = updatedBadgeNumber;\n\n          imageDiffHelper.updateDiscussionBadgeNumber(discussionEl, updatedBadgeNumber);\n          imageDiffHelper.updateDiscussionAvatarBadgeNumber(discussionEl, updatedBadgeNumber);\n        }\n      });\n    }\n\n    this.imageBadges.splice(indexToRemove, 1);\n\n    const imageBadgeEl = imageBadgeEls[indexToRemove];\n    imageBadgeEl.remove();\n  }\n}\n","export function isImageLoaded(element) {\n  return element.complete && element.naturalHeight !== 0;\n}\n","export const viewTypes = {\n  TWO_UP: 'TWO_UP',\n  SWIPE: 'SWIPE',\n  ONION_SKIN: 'ONION_SKIN',\n};\n\nexport function isValidViewType(validate) {\n  return Boolean(Object.getOwnPropertyNames(viewTypes).find((viewType) => viewType === validate));\n}\n","import imageDiffHelper from './helpers/index';\nimport ImageDiff from './image_diff';\nimport { viewTypes, isValidViewType } from './view_types';\n\nexport default class ReplacedImageDiff extends ImageDiff {\n  init(defaultViewType = viewTypes.TWO_UP) {\n    this.imageFrameEls = {\n      [viewTypes.TWO_UP]: this.el.querySelector('.two-up .js-image-frame'),\n      [viewTypes.SWIPE]: this.el.querySelector('.swipe .js-image-frame'),\n      [viewTypes.ONION_SKIN]: this.el.querySelector('.onion-skin .js-image-frame'),\n    };\n\n    const viewModesEl = this.el.querySelector('.view-modes-menu');\n    this.viewModesEls = {\n      [viewTypes.TWO_UP]: viewModesEl.querySelector('.two-up'),\n      [viewTypes.SWIPE]: viewModesEl.querySelector('.swipe'),\n      [viewTypes.ONION_SKIN]: viewModesEl.querySelector('.onion-skin'),\n    };\n\n    this.currentView = defaultViewType;\n    this.generateImageEls();\n    this.bindEvents();\n  }\n\n  generateImageEls() {\n    this.imageEls = {};\n\n    const viewTypeNames = Object.getOwnPropertyNames(viewTypes);\n    viewTypeNames.forEach((viewType) => {\n      this.imageEls[viewType] = this.imageFrameEls[viewType].querySelector('img');\n    });\n  }\n\n  bindEvents() {\n    super.bindEvents();\n\n    this.changeToViewTwoUp = this.changeView.bind(this, viewTypes.TWO_UP);\n    this.changeToViewSwipe = this.changeView.bind(this, viewTypes.SWIPE);\n    this.changeToViewOnionSkin = this.changeView.bind(this, viewTypes.ONION_SKIN);\n\n    this.viewModesEls[viewTypes.TWO_UP].addEventListener('click', this.changeToViewTwoUp);\n    this.viewModesEls[viewTypes.SWIPE].addEventListener('click', this.changeToViewSwipe);\n    this.viewModesEls[viewTypes.ONION_SKIN].addEventListener('click', this.changeToViewOnionSkin);\n  }\n\n  get imageEl() {\n    return this.imageEls[this.currentView];\n  }\n\n  get imageFrameEl() {\n    return this.imageFrameEls[this.currentView];\n  }\n\n  changeView(newView) {\n    if (!isValidViewType(newView)) {\n      return;\n    }\n\n    const indicator = imageDiffHelper.removeCommentIndicator(this.imageFrameEl);\n\n    this.currentView = newView;\n\n    // Clear existing badges on new view\n    const existingBadges = this.imageFrameEl.querySelectorAll('.design-note-pin');\n    [...existingBadges].map((badge) => badge.remove());\n\n    // Remove existing references to old view image badges\n    this.imageBadges = [];\n\n    // Image_file.js has a fade animation of 200ms for loading the view\n    // Need to wait an additional 250ms for the images to be displayed\n    // on window in order to re-normalize their dimensions\n    setTimeout(this.renderNewView.bind(this, indicator), 250);\n  }\n\n  renderNewView(indicator) {\n    // Generate badge coordinates on new view\n    this.renderBadges();\n\n    // Re-render indicator in new view\n    if (indicator.removed) {\n      const normalizedIndicator = imageDiffHelper.resizeCoordinatesToImageElement(this.imageEl, {\n        x: indicator.x,\n        y: indicator.y,\n        width: indicator.image.width,\n        height: indicator.image.height,\n      });\n      imageDiffHelper.showCommentIndicator(this.imageFrameEl, normalizedIndicator);\n    }\n  }\n}\n","import ImageFile from '~/commit/image_file';\nimport ImageDiff from '../image_diff';\nimport ReplacedImageDiff from '../replaced_image_diff';\n\nfunction initImageDiff(fileEl, canCreateNote, renderCommentBadge) {\n  const options = {\n    canCreateNote,\n    renderCommentBadge,\n  };\n  let diff;\n\n  // ImageFile needs to be invoked before initImageDiff so that badges\n  // can mount to the correct location\n  new ImageFile(fileEl); // eslint-disable-line no-new\n\n  if (fileEl.querySelector('.diff-file .js-single-image')) {\n    diff = new ImageDiff(fileEl, options);\n    diff.init();\n  } else if (fileEl.querySelector('.diff-file .js-replaced-image')) {\n    diff = new ReplacedImageDiff(fileEl, options);\n    diff.init();\n  }\n\n  return diff;\n}\n\nexport default { initImageDiff };\n","import $ from 'jquery';\nimport { GlButton } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { loadingIconForLegacyJS } from '~/loading_icon_for_legacy_js';\nimport { renderVueComponentForLegacyJS } from '~/render_vue_component_for_legacy_js';\nimport { spriteIcon } from '~/lib/utils/common_utils';\nimport FilesCommentButton from './files_comment_button';\nimport initImageDiffHelper from './image_diff/helpers/init_image_diff';\nimport axios from './lib/utils/axios_utils';\nimport { __ } from './locale';\nimport syntaxHighlight from './syntax_highlight';\n\nconst WRAPPER = '<div class=\"diff-content\"></div>';\nconst LOADING_HTML = loadingIconForLegacyJS().outerHTML;\nconst ERROR_HTML = `<div class=\"nothing-here-block\">${spriteIcon(\n  'warning-solid',\n  's16',\n)} Could not load diff</div>`;\nconst CLICK_TO_EXPAND_BUTTON_HTML = renderVueComponentForLegacyJS(\n  GlButton,\n  {\n    class: 'click-to-expand',\n    props: { variant: 'link' },\n  },\n  __('Click to expand it.'),\n).outerHTML;\nconst COLLAPSED_HTML = `<div class=\"nothing-here-block diff-collapsed\">This diff is collapsed. ${CLICK_TO_EXPAND_BUTTON_HTML}</div>`;\n\nexport default class SingleFileDiff {\n  constructor(file) {\n    this.file = file;\n    this.toggleDiff = this.toggleDiff.bind(this);\n    this.content = $('.diff-content', this.file);\n    this.$chevronRightIcon = $('.diff-toggle-caret .chevron-right', this.file);\n    this.$chevronDownIcon = $('.diff-toggle-caret .chevron-down', this.file);\n    this.diffForPath = this.content\n      .find('div:not(.note-text)[data-diff-for-path]')\n      .data('diffForPath');\n    this.isOpen = !this.diffForPath;\n    if (this.diffForPath) {\n      this.collapsedContent = this.content;\n      this.loadingContent = $(WRAPPER).addClass('loading').html(LOADING_HTML).hide();\n      this.content = null;\n      this.collapsedContent.after(this.loadingContent);\n      this.$chevronRightIcon.removeClass('gl-hidden');\n    } else {\n      this.collapsedContent = $(WRAPPER).html(COLLAPSED_HTML).hide();\n      this.content.after(this.collapsedContent);\n      this.$chevronDownIcon.removeClass('gl-hidden');\n    }\n\n    $('.js-file-title', this.file).on('click', (e) => {\n      this.toggleDiff($(e.target));\n    });\n    $('.click-to-expand', this.file).on('click', (e) => {\n      this.toggleDiff($(e.currentTarget));\n    });\n  }\n\n  toggleDiff($target, cb) {\n    if (\n      !$target.hasClass('js-file-title') &&\n      !$target.hasClass('click-to-expand') &&\n      !$target.closest('.diff-toggle-caret').length > 0\n    )\n      return;\n    this.isOpen = !this.isOpen;\n    if (!this.isOpen && !this.hasError) {\n      this.content.hide();\n      this.$chevronRightIcon.removeClass('gl-hidden');\n      this.$chevronDownIcon.addClass('gl-hidden');\n      this.collapsedContent.show();\n    } else if (this.content) {\n      this.collapsedContent.hide();\n      this.content.show();\n      this.$chevronDownIcon.removeClass('gl-hidden');\n      this.$chevronRightIcon.addClass('gl-hidden');\n    } else {\n      this.$chevronDownIcon.removeClass('gl-hidden');\n      this.$chevronRightIcon.addClass('gl-hidden');\n      return this.getContentHTML(cb); // eslint-disable-line consistent-return\n    }\n  }\n\n  getContentHTML(cb) {\n    this.collapsedContent.hide();\n    this.loadingContent.show();\n\n    return axios\n      .get(this.diffForPath)\n      .then(({ data }) => {\n        this.loadingContent.hide();\n        if (data.html) {\n          this.content = $(data.html);\n          syntaxHighlight(this.content);\n        } else {\n          this.hasError = true;\n          this.content = $(ERROR_HTML);\n        }\n        this.collapsedContent.after(this.content);\n\n        const $file = $(this.file);\n        FilesCommentButton.init($file);\n\n        const canCreateNote = $file.closest('.files').is('[data-can-create-note]');\n        initImageDiffHelper.initImageDiff($file[0], canCreateNote);\n\n        if (cb) cb();\n      })\n      .catch(() => {\n        createAlert({\n          message: __('An error occurred while retrieving diff'),\n        });\n      });\n  }\n}\n","import $ from 'jquery';\nimport { merge } from 'lodash';\nimport { createAlert } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\nimport { __ } from '~/locale';\nimport FilesCommentButton from './files_comment_button';\nimport initImageDiffHelper from './image_diff/helpers/init_image_diff';\nimport { getLocationHash } from './lib/utils/url_utility';\nimport SingleFileDiff from './single_file_diff';\n\nconst UNFOLD_COUNT = 20;\nlet isBound = false;\n\nexport default class Diff {\n  constructor({ mergeRequestEventHub } = {}) {\n    const $diffFile = $('.files .diff-file');\n\n    if (mergeRequestEventHub) {\n      this.mrHub = mergeRequestEventHub;\n    }\n\n    $diffFile.each((index, file) => {\n      if (!$.data(file, 'singleFileDiff')) {\n        $.data(file, 'singleFileDiff', new SingleFileDiff(file));\n      }\n    });\n\n    const tab = document.getElementById('diffs');\n    if (!tab || (tab && tab.dataset && tab.dataset.isLocked !== ''))\n      FilesCommentButton.init($diffFile);\n\n    const firstFile = $('.files').first().get(0);\n    const canCreateNote =\n      firstFile && Object.prototype.hasOwnProperty.call(firstFile.dataset, 'canCreateNote');\n    $diffFile.each((index, file) => initImageDiffHelper.initImageDiff(file, canCreateNote));\n\n    if (!isBound) {\n      $(document)\n        .on('click', '.js-unfold', this.handleClickUnfold.bind(this))\n        .on('click', '.diff-line-num a', this.handleClickLineNum.bind(this))\n        .on('mousedown', 'td.line_content.parallel', this.handleParallelLineDown.bind(this))\n        .on('click', '.inline-parallel-buttons a', ($e) => this.viewTypeSwitch($e));\n      isBound = true;\n    }\n\n    if (getLocationHash()) {\n      this.highlightSelectedLine();\n    }\n\n    this.openAnchoredDiff();\n\n    this.prepareRenderedDiff();\n  }\n\n  handleClickUnfold(e) {\n    const $target = $(e.target);\n    const [oldLineNumber, newLineNumber] = this.lineNumbers($target.parent());\n    const offset = newLineNumber - oldLineNumber;\n    const bottom = $target.hasClass('js-unfold-bottom');\n    let since;\n    let to;\n    let unfold = true;\n\n    if (bottom) {\n      const lineNumber = newLineNumber + 1;\n      since = lineNumber;\n      to = lineNumber + UNFOLD_COUNT;\n    } else {\n      const lineNumber = newLineNumber - 1;\n      since = lineNumber - UNFOLD_COUNT;\n      to = lineNumber;\n\n      // make sure we aren't loading more than we need\n      const prevNewLine = this.lineNumbers($target.parent().prev())[1];\n      if (since <= prevNewLine + 1) {\n        since = prevNewLine + 1;\n        unfold = false;\n      }\n    }\n\n    const file = $target.parents('.diff-file');\n    const link = file.data('blobDiffPath');\n    const view = file.data('view');\n\n    const params = { since, to, bottom, offset, unfold, view };\n    axios\n      .get(link, { params })\n      .then(({ data }) => $target.parent().replaceWith(data))\n      .catch(() =>\n        createAlert({\n          message: __('An error occurred while loading diff'),\n        }),\n      );\n  }\n\n  openAnchoredDiff(cb) {\n    const locationHash = getLocationHash();\n    const anchoredDiff = locationHash && locationHash.split('_')[0];\n\n    if (!anchoredDiff) return;\n\n    const diffTitle = $(`#${anchoredDiff}`);\n    const diffFile = diffTitle.closest('.diff-file');\n    const nothingHereBlock = $('.nothing-here-block:visible', diffFile);\n    if (nothingHereBlock.length) {\n      const clickTarget = $('.js-file-title, .click-to-expand', diffFile);\n      diffFile.data('singleFileDiff').toggleDiff(clickTarget, () => {\n        this.highlightSelectedLine();\n        this.prepareRenderedDiff();\n        if (cb) cb();\n      });\n    } else if (cb) {\n      cb();\n    }\n  }\n\n  handleClickLineNum(e) {\n    const hash = $(e.currentTarget).attr('href');\n    e.preventDefault();\n    if (window.history.pushState) {\n      window.history.pushState(null, null, hash);\n    } else {\n      window.location.hash = hash;\n    }\n    this.highlightSelectedLine();\n  }\n  // eslint-disable-next-line class-methods-use-this\n  handleParallelLineDown(e) {\n    const line = $(e.currentTarget);\n    const table = line.closest('table');\n\n    table.removeClass('left-side-selected right-side-selected');\n\n    const lineClass = ['left-side', 'right-side'].filter((name) => line.hasClass(name))[0];\n    if (lineClass) {\n      table.addClass(`${lineClass}-selected`);\n    }\n  }\n  // eslint-disable-next-line class-methods-use-this\n  diffViewType() {\n    return $('.inline-parallel-buttons a.active').data('viewType');\n  }\n  viewTypeSwitch(event) {\n    const click = event.originalEvent;\n    const diffSource = new URL(event.currentTarget.getAttribute('href'), document.location.href);\n\n    if (this.mrHub) {\n      click.preventDefault();\n      click.stopPropagation();\n\n      diffSource.pathname = `${diffSource.pathname}.json`;\n\n      this.mrHub.$emit('diff:switch-view-type', { source: diffSource.toString() });\n    }\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  lineNumbers(line) {\n    const children = line.find('.diff-line-num').toArray();\n    if (children.length !== 2) {\n      return [0, 0];\n    }\n    return children.map((elm) => parseInt($(elm).data('linenumber'), 10) || 0);\n  }\n  // eslint-disable-next-line class-methods-use-this\n  highlightSelectedLine() {\n    const hash = getLocationHash();\n    const $diffFiles = $('.diff-file');\n    $diffFiles.find('.hll').removeClass('hll');\n\n    if (hash) {\n      $diffFiles\n        .find(`tr#${hash}:not(.match) td, td#${hash}, td[data-line-code=\"${hash}\"]`)\n        .addClass('hll');\n    }\n  }\n\n  prepareRenderedDiff() {\n    const allElements = this.elementsForRenderedDiff();\n    const diff = this;\n\n    for (const [fileHash, fileElements] of Object.entries(allElements)) {\n      // eslint-disable no-param-reassign\n      fileElements.rawButton.onclick = () => {\n        diff.showRawViewer(fileHash, diff.elementsForRenderedDiff()[fileHash]);\n      };\n\n      fileElements.renderedButton.onclick = () => {\n        diff.showRenderedViewer(fileHash, diff.elementsForRenderedDiff()[fileHash]);\n      };\n      // eslint-enable no-param-reassign\n\n      diff.showRenderedViewer(fileHash, fileElements);\n    }\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  formatElementToObject = (element) => {\n    const key = element.attributes['data-file-hash'].value;\n    const name = element.attributes['data-diff-toggle-entity'].value;\n\n    return { [key]: { [name]: element } };\n  };\n\n  elementsForRenderedDiff = () => {\n    const $elements = $('[data-diff-toggle-entity]');\n\n    if ($elements.length === 0) return {};\n\n    const diff = this;\n\n    return $elements.toArray().map(diff.formatElementToObject).reduce(merge);\n  };\n\n  // eslint-disable-next-line class-methods-use-this\n  showRawViewer = (fileHash, elements) => {\n    if (elements === undefined) return;\n\n    elements.rawButton.classList.add('selected');\n    elements.renderedButton.classList.remove('selected');\n\n    elements.renderedViewer.classList.add('hidden');\n    elements.rawViewer.classList.remove('hidden');\n  };\n\n  // eslint-disable-next-line class-methods-use-this\n  showRenderedViewer = (fileHash, elements) => {\n    if (elements === undefined) return;\n\n    elements.rawButton.classList.remove('selected');\n    elements.rawViewer.classList.add('hidden');\n\n    elements.renderedButton.classList.add('selected');\n    elements.renderedViewer.classList.remove('hidden');\n  };\n}\n","var arrayReduce = require('./_arrayReduce'),\n    deburr = require('./deburr'),\n    words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\nmodule.exports = createCompounder;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('gl-button',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal\",value:(_vm.$options.modalId),expression:\"$options.modalId\"}],attrs:{\"variant\":\"link\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.__('Email a new %{name} to this project')},scopedSlots:_vm._u([{key:\"name\",fn:function(){return [_vm._v(_vm._s(_vm.issuableName))]},proxy:true}])})],1),_vm._v(\" \"),_c('gl-modal',{ref:\"modal\",attrs:{\"modal-id\":_vm.$options.modalId},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_c('gl-sprintf',{attrs:{\"message\":_vm.__('Create new %{name} by email')},scopedSlots:_vm._u([{key:\"name\",fn:function(){return [_vm._v(_vm._s(_vm.issuableName))]},proxy:true}])})]},proxy:true},{key:\"modal-footer\",fn:function(){return [_c('gl-button',{attrs:{\"category\":\"secondary\"},on:{\"click\":_vm.cancelHandler}},[_vm._v(_vm._s(_vm.__('Cancel')))])]},proxy:true}])},[_vm._v(\" \"),_c('p',[_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n            'You can create a new %{name} inside this project by sending an email to the following email address:',\n          )},scopedSlots:_vm._u([{key:\"name\",fn:function(){return [_vm._v(_vm._s(_vm.issuableName))]},proxy:true}])})],1),_vm._v(\" \"),_c('gl-form-input-group',{staticClass:\"gl-mb-4\",attrs:{\"value\":_vm.email,\"readonly\":\"\",\"select-on-click\":\"\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('modal-copy-button',{attrs:{\"text\":_vm.email,\"title\":_vm.__('Copy'),\"modal-id\":_vm.$options.modalId}}),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"href\":_vm.mailToLink,\"title\":_vm.$options.i18n.sendEmail,\"aria-label\":_vm.$options.i18n.sendEmail,\"icon\":\"mail\"}})]},proxy:true}])}),_vm._v(\" \"),_c('p',[_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n            'The subject will be used as the title of the new issue, and the message will be the description. %{quickActionsLinkStart}Quick actions%{quickActionsLinkEnd} and styling with %{markdownLinkStart}Markdown%{markdownLinkEnd} are supported.',\n          )},scopedSlots:_vm._u([{key:\"quickActionsLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.quickActionsHelpPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}},{key:\"markdownLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.markdownHelpPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}])})],1),_vm._v(\" \"),_c('p',[_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n            'This is a private email address %{helpIcon} generated just for you. Anyone who has it can create issues or merge requests as if they were you. If that happens, %{resetLinkStart}reset this token%{resetLinkEnd}.',\n          )},scopedSlots:_vm._u([{key:\"helpIcon\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.emailsHelpPagePath,\"target\":\"_blank\"}},[_c('help-icon')],1)]},proxy:true},{key:\"resetLink\",fn:function({ content }){return [_c('gl-button',{attrs:{\"variant\":\"link\",\"data-testid\":\"reset_email_token_link\"},on:{\"click\":_vm.resetIncomingEmailToken}},[_vm._v(\"\\n            \"+_vm._s(content)+\"\\n          \")])]}}])})],1)],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!./issuable_by_email.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!./issuable_by_email.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlButton,\n  GlModal,\n  GlModalDirective,\n  GlTooltipDirective,\n  GlSprintf,\n  GlLink,\n  GlFormInputGroup,\n} from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport axios from '~/lib/utils/axios_utils';\nimport { sprintf, __ } from '~/locale';\nimport ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\n\nexport default {\n  i18n: {\n    sendEmail: __('Send email'),\n  },\n  name: 'IssuableByEmail',\n  components: {\n    GlButton,\n    GlModal,\n    GlSprintf,\n    GlLink,\n    GlFormInputGroup,\n    HelpIcon,\n    ModalCopyButton,\n  },\n  directives: {\n    GlModal: GlModalDirective,\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: {\n    initialEmail: {\n      default: null,\n    },\n    issuableType: {\n      default: TYPE_ISSUE,\n    },\n    emailsHelpPagePath: {\n      default: '',\n    },\n    quickActionsHelpPath: {\n      default: '',\n    },\n    markdownHelpPath: {\n      default: '',\n    },\n    resetPath: {\n      default: '',\n    },\n  },\n  data() {\n    return {\n      email: this.initialEmail,\n      issuableName: this.issuableType === TYPE_ISSUE ? __('issue') : __('merge request'),\n    };\n  },\n  computed: {\n    mailToLink() {\n      const subject = sprintf(__('Enter the %{name} title'), {\n        name: this.issuableName,\n      });\n      const body = sprintf(__('Enter the %{name} description'), {\n        name: this.issuableName,\n      });\n      return `mailto:${this.email}?subject=${subject}&body=${body}`;\n    },\n  },\n  methods: {\n    async resetIncomingEmailToken() {\n      try {\n        const {\n          data: { new_address: newAddress },\n        } = await axios.put(this.resetPath);\n        this.email = newAddress;\n      } catch {\n        this.$toast.show(__('There was an error when reseting email token.'));\n      }\n    },\n    cancelHandler() {\n      this.$refs.modal.hide();\n    },\n  },\n  modalId: 'issuable-email-modal',\n};\n</script>\n\n<template>\n  <div>\n    <gl-button v-gl-modal=\"$options.modalId\" variant=\"link\"\n      ><gl-sprintf :message=\"__('Email a new %{name} to this project')\"\n        ><template #name>{{ issuableName }}</template></gl-sprintf\n      ></gl-button\n    >\n    <gl-modal ref=\"modal\" :modal-id=\"$options.modalId\">\n      <template #modal-title>\n        <gl-sprintf :message=\"__('Create new %{name} by email')\">\n          <template #name>{{ issuableName }}</template>\n        </gl-sprintf>\n      </template>\n      <p>\n        <gl-sprintf\n          :message=\"\n            __(\n              'You can create a new %{name} inside this project by sending an email to the following email address:',\n            )\n          \"\n        >\n          <template #name>{{ issuableName }}</template>\n        </gl-sprintf>\n      </p>\n      <gl-form-input-group :value=\"email\" readonly select-on-click class=\"gl-mb-4\">\n        <template #append>\n          <modal-copy-button :text=\"email\" :title=\"__('Copy')\" :modal-id=\"$options.modalId\" />\n          <gl-button\n            v-gl-tooltip.hover\n            :href=\"mailToLink\"\n            :title=\"$options.i18n.sendEmail\"\n            :aria-label=\"$options.i18n.sendEmail\"\n            icon=\"mail\"\n          />\n        </template>\n      </gl-form-input-group>\n      <p>\n        <gl-sprintf\n          :message=\"\n            __(\n              'The subject will be used as the title of the new issue, and the message will be the description. %{quickActionsLinkStart}Quick actions%{quickActionsLinkEnd} and styling with %{markdownLinkStart}Markdown%{markdownLinkEnd} are supported.',\n            )\n          \"\n        >\n          <template #quickActionsLink=\"{ content }\">\n            <gl-link :href=\"quickActionsHelpPath\" target=\"_blank\">{{ content }}</gl-link>\n          </template>\n          <template #markdownLink=\"{ content }\">\n            <gl-link :href=\"markdownHelpPath\" target=\"_blank\">{{ content }}</gl-link>\n          </template>\n        </gl-sprintf>\n      </p>\n      <p>\n        <gl-sprintf\n          :message=\"\n            __(\n              'This is a private email address %{helpIcon} generated just for you. Anyone who has it can create issues or merge requests as if they were you. If that happens, %{resetLinkStart}reset this token%{resetLinkEnd}.',\n            )\n          \"\n        >\n          <template #helpIcon>\n            <gl-link :href=\"emailsHelpPagePath\" target=\"_blank\">\n              <help-icon />\n            </gl-link>\n          </template>\n          <template #resetLink=\"{ content }\">\n            <gl-button\n              variant=\"link\"\n              data-testid=\"reset_email_token_link\"\n              @click=\"resetIncomingEmailToken\"\n            >\n              {{ content }}\n            </gl-button>\n          </template>\n        </gl-sprintf>\n      </p>\n      <template #modal-footer>\n        <gl-button category=\"secondary\" @click=\"cancelHandler\">{{ __('Cancel') }}</gl-button>\n      </template>\n    </gl-modal>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./issuable_by_email.vue?vue&type=template&id=063f56ce\"\nimport script from \"./issuable_by_email.vue?vue&type=script&lang=js\"\nexport * from \"./issuable_by_email.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import $ from 'jquery';\nimport { difference, intersection, union } from 'lodash';\nimport { createAlert } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\nimport { __ } from '~/locale';\n\nexport default {\n  init({ form, issues, prefixId } = {}) {\n    this.prefixId = prefixId || 'issue_';\n    this.form = form || this.getElement('.bulk-update');\n    this.$labelDropdown = this.form.find('.js-label-select');\n    this.issues = issues || this.getElement('.issues-list .issue');\n    this.willUpdateLabels = false;\n    this.bindEvents();\n  },\n\n  bindEvents() {\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    return this.form.off('submit').on('submit', this.onFormSubmit.bind(this));\n  },\n\n  onFormSubmit(e) {\n    e.preventDefault();\n    return this.submit();\n  },\n\n  submit() {\n    axios[this.form.attr('method')](this.form.attr('action'), this.getFormDataAsObject())\n      .then(() => window.location.reload())\n      .catch(() => this.onFormSubmitFailure());\n  },\n\n  onFormSubmitFailure() {\n    this.form.find('[type=\"submit\"]').enable();\n    return createAlert({\n      message: __('Issue update failed'),\n    });\n  },\n\n  /**\n   * Simple form serialization, it will return just what we need\n   * Returns key/value pairs from form data\n   */\n\n  getFormDataAsObject() {\n    const assigneeIds = this.form.find('input[name=\"update[assignee_ids][]\"]').val();\n    const formData = {\n      update: {\n        state_event: this.form.find('input[name=\"update[state_event]\"]').val(),\n        milestone_id: this.form.find('input[name=\"update[milestone_id]\"]').val(),\n        issuable_ids: this.form.find('input[name=\"update[issuable_ids]\"]').val(),\n        subscription_event: this.form.find('input[name=\"update[subscription_event]\"]').val(),\n        health_status: this.form.find('input[name=\"update[health_status]\"]').val(),\n        epic_id: this.form.find('input[name=\"update[epic_id]\"]').val(),\n        sprint_id: this.form.find('input[name=\"update[iteration_id]\"]').val(),\n        add_label_ids: [],\n        remove_label_ids: [],\n        confidential: this.form.find('input[name=\"update[confidentiality]\"]').val(),\n      },\n    };\n    if (assigneeIds) {\n      formData.update.assignee_ids = [assigneeIds];\n    }\n    if (this.willUpdateLabels) {\n      formData.update.add_label_ids = this.$labelDropdown.data('user-checked');\n      formData.update.remove_label_ids = this.$labelDropdown.data('user-unchecked');\n    }\n    return formData;\n  },\n\n  setOriginalDropdownData() {\n    const $labelSelect = $('.bulk-update .js-label-select');\n    const userCheckedIds = $labelSelect.data('user-checked') || [];\n    const userUncheckedIds = $labelSelect.data('user-unchecked') || [];\n\n    // Common labels plus user checked labels minus user unchecked labels\n    const checkedIdsToShow = difference(\n      union(this.getOriginalCommonIds(), userCheckedIds),\n      userUncheckedIds,\n    );\n\n    // Indeterminate labels minus user checked labels minus user unchecked labels\n    const indeterminateIdsToShow = difference(\n      this.getOriginalIndeterminateIds(),\n      userCheckedIds,\n      userUncheckedIds,\n    );\n\n    $labelSelect.data('marked', checkedIdsToShow);\n    $labelSelect.data('indeterminate', indeterminateIdsToShow);\n  },\n\n  // From issuable's initial bulk selection\n  getOriginalCommonIds() {\n    const labelIds = [];\n    this.getElement('.issuable-list input[type=\"checkbox\"]:checked').each((i, el) => {\n      labelIds.push(this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels'));\n    });\n    return intersection.apply(this, labelIds);\n  },\n\n  // From issuable's initial bulk selection\n  getOriginalIndeterminateIds() {\n    const uniqueIds = [];\n    const labelIds = [];\n    let issuableLabels = [];\n\n    // Collect unique label IDs for all checked issues\n    this.getElement('.issuable-list input[type=\"checkbox\"]:checked').each((i, el) => {\n      issuableLabels = this.getElement(`#${this.prefixId}${el.dataset.id}`).data('labels');\n      issuableLabels.forEach((labelId) => {\n        // Store unique IDs\n        if (uniqueIds.indexOf(labelId) === -1) {\n          uniqueIds.push(labelId);\n        }\n      });\n      // Store array of IDs per issuable\n      labelIds.push(issuableLabels);\n    });\n    // Add uniqueIds to add it as argument for _.intersection\n    labelIds.unshift(uniqueIds);\n    // Return IDs that are present but not in all selected issuables\n    return uniqueIds.filter((x) => !intersection.apply(this, labelIds).includes(x));\n  },\n\n  getElement(selector) {\n    this.scopeEl = this.scopeEl || $('.content');\n    return this.scopeEl.find(selector);\n  },\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isIssuable)?_c('li',{staticClass:\"gl-new-dropdown-item\"},[_c('button',{staticClass:\"gl-new-dropdown-item-content\",attrs:{\"type\":\"button\",\"data-testid\":\"issuable-lock\"},on:{\"click\":_vm.toggleLocked}},[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[(_vm.isLoading)?[_c('gl-loading-icon',{attrs:{\"inline\":\"\",\"size\":\"sm\"}}),_vm._v(\" \"+_vm._s(_vm.lockToggleInProgressText)+\"\\n      \")]:[_vm._v(\"\\n        \"+_vm._s(_vm.lockToggleText)+\"\\n      \")]],2)])]):_c('gl-disclosure-dropdown-item',[_c('button',{staticClass:\"gl-new-dropdown-item-content\",attrs:{\"type\":\"button\",\"data-testid\":\"issuable-lock\"},on:{\"click\":_vm.toggleLocked}},[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[(_vm.isLoading)?[_c('gl-loading-icon',{attrs:{\"inline\":\"\",\"size\":\"sm\"}}),_vm._v(\" \"+_vm._s(_vm.lockToggleInProgressText)+\"\\n      \")]:[_vm._v(\"\\n        \"+_vm._s(_vm.lockToggleText)+\"\\n      \")]],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!./issuable_lock_form.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!./issuable_lock_form.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlLoadingIcon,\n  GlDisclosureDropdownItem,\n  GlTooltipDirective,\n  GlOutsideDirective as Outside,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions } from 'vuex';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\nimport { createAlert } from '~/alert';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport eventHub from '../../event_hub';\n\nexport default {\n  locked: {\n    icon: 'lock',\n    class: 'value',\n    displayText: __('Locked'),\n  },\n  unlocked: {\n    class: ['no-value hide-collapsed'],\n    icon: 'lock-open',\n    displayText: __('Unlocked'),\n  },\n  components: {\n    GlLoadingIcon,\n    GlDisclosureDropdownItem,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    Outside,\n  },\n  inject: ['fullPath'],\n  props: {\n    isEditable: {\n      required: true,\n      type: Boolean,\n    },\n  },\n  i18n: {\n    issue: __('issue'),\n    issueCapitalized: __('Issue'),\n    mergeRequest: __('merge request'),\n    mergeRequestCapitalized: __('Merge request'),\n    lockingMergeRequest: __('Locking discussion'),\n    unlockingMergeRequest: __('Unlocking discussion'),\n    lockMergeRequest: __('Lock discussion'),\n    unlockMergeRequest: __('Unlock discussion'),\n    lockedMessage: __('Discussion locked.'),\n    unlockedMessage: __('Discussion unlocked.'),\n  },\n  data() {\n    return {\n      isLoading: false,\n      isLockDialogOpen: false,\n    };\n  },\n  computed: {\n    ...mapGetters(['getNoteableData']),\n    isIssuable() {\n      return this.getNoteableData.targetType === TYPE_ISSUE;\n    },\n    issuableDisplayName() {\n      return this.isIssuable ? this.$options.i18n.issue : this.$options.i18n.mergeRequest;\n    },\n    issuableDisplayNameCapitalized() {\n      return this.isIssuable\n        ? this.$options.i18n.issueCapitalized\n        : this.$options.i18n.mergeRequestCapitalized;\n    },\n    isLocked() {\n      return this.getNoteableData.discussion_locked;\n    },\n    lockStatus() {\n      return this.isLocked ? this.$options.locked : this.$options.unlocked;\n    },\n    lockToggleInProgressText() {\n      return this.isLocked ? this.unlockingMergeRequestText : this.lockingMergeRequestText;\n    },\n    lockToggleText() {\n      return this.isLocked ? this.unlockMergeRequestText : this.lockMergeRequestText;\n    },\n    lockingMergeRequestText() {\n      return sprintf(this.$options.i18n.lockingMergeRequest, {\n        issuableDisplayName: this.issuableDisplayName,\n      });\n    },\n    unlockingMergeRequestText() {\n      return sprintf(this.$options.i18n.unlockingMergeRequest, {\n        issuableDisplayName: this.issuableDisplayName,\n      });\n    },\n    lockMergeRequestText() {\n      return sprintf(this.$options.i18n.lockMergeRequest, {\n        issuableDisplayName: this.issuableDisplayName,\n      });\n    },\n    unlockMergeRequestText() {\n      return sprintf(this.$options.i18n.unlockMergeRequest, {\n        issuableDisplayName: this.issuableDisplayName,\n      });\n    },\n    lockedMessageText() {\n      return sprintf(this.$options.i18n.lockedMessage, {\n        issuableDisplayName: this.issuableDisplayNameCapitalized,\n      });\n    },\n    unlockedMessageText() {\n      return sprintf(this.$options.i18n.unlockedMessage, {\n        issuableDisplayName: this.issuableDisplayNameCapitalized,\n      });\n    },\n  },\n\n  created() {\n    eventHub.$on('closeLockForm', this.toggleForm);\n  },\n\n  beforeDestroy() {\n    eventHub.$off('closeLockForm', this.toggleForm);\n  },\n\n  methods: {\n    ...mapActions(['updateLockedAttribute']),\n    toggleForm() {\n      if (this.isEditable) {\n        this.isLockDialogOpen = !this.isLockDialogOpen;\n      }\n    },\n    toggleLocked() {\n      this.isLoading = true;\n\n      this.updateLockedAttribute({\n        locked: !this.isLocked,\n        fullPath: this.fullPath,\n      })\n        .then(() => {\n          toast(this.isLocked ? this.lockedMessageText : this.unlockedMessageText);\n        })\n        .catch(() => {\n          const alertMessage = __(\n            'Something went wrong trying to change the locked state of the discussion',\n          );\n          createAlert({\n            message: sprintf(alertMessage, { issuableDisplayName: this.issuableDisplayName }),\n          });\n        })\n        .finally(() => {\n          this.isLoading = false;\n        });\n    },\n    closeForm() {\n      this.isLockDialogOpen = false;\n    },\n  },\n};\n</script>\n\n<template>\n  <li v-if=\"isIssuable\" class=\"gl-new-dropdown-item\">\n    <button\n      type=\"button\"\n      class=\"gl-new-dropdown-item-content\"\n      data-testid=\"issuable-lock\"\n      @click=\"toggleLocked\"\n    >\n      <span class=\"gl-new-dropdown-item-text-wrapper\">\n        <template v-if=\"isLoading\">\n          <gl-loading-icon inline size=\"sm\" /> {{ lockToggleInProgressText }}\n        </template>\n        <template v-else>\n          {{ lockToggleText }}\n        </template>\n      </span>\n    </button>\n  </li>\n  <gl-disclosure-dropdown-item v-else>\n    <button\n      type=\"button\"\n      class=\"gl-new-dropdown-item-content\"\n      data-testid=\"issuable-lock\"\n      @click=\"toggleLocked\"\n    >\n      <span class=\"gl-new-dropdown-item-text-wrapper\">\n        <template v-if=\"isLoading\">\n          <gl-loading-icon inline size=\"sm\" /> {{ lockToggleInProgressText }}\n        </template>\n        <template v-else>\n          {{ lockToggleText }}\n        </template>\n      </span>\n    </button>\n  </gl-disclosure-dropdown-item>\n</template>\n","import { render, staticRenderFns } from \"./issuable_lock_form.vue?vue&type=template&id=3aebf866\"\nimport script from \"./issuable_lock_form.vue?vue&type=script&lang=js\"\nexport * from \"./issuable_lock_form.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:\"file-header-content gl-flex gl-items-center gl-leading-1\"},[_vm._t(\"filepath-prepend\"),_vm._v(\" \"),(_vm.fileName)?[_c('file-icon',{attrs:{\"file-name\":_vm.fileName,\"size\":16,\"aria-hidden\":\"true\",\"css-classes\":\"gl-mr-3\"}}),_vm._v(\" \"),_c(_vm.showAsLink ? 'gl-link' : 'strong',_vm._b({tag:\"component\",staticClass:\"file-title-name mr-1 js-blob-header-filepath gl-break-all gl-font-bold\",class:{ '!gl-text-blue-700 hover:gl-cursor-pointer': _vm.showAsLink },attrs:{\"data-testid\":\"file-title-content\"}},'component',_vm.linkHref,false),[_vm._v(_vm._s(_vm.fileName))])]:_vm._e(),_vm._v(\" \"),_c('clipboard-button',{attrs:{\"text\":_vm.blob.path,\"gfm\":_vm.gfmCopyText,\"title\":_vm.__('Copy file path'),\"category\":\"tertiary\",\"css-class\":\"gl-mr-2\"}}),_vm._v(\" \"),(_vm.showBlobSize)?_c('small',{staticClass:\"gl-mr-3\"},[_vm._v(_vm._s(_vm.blobSize))]):_vm._e(),_vm._v(\" \"),(_vm.showLfsBadge)?_c('gl-badge',[_vm._v(_vm._s(_vm.__('LFS')))]):_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!./blob_header_filepath.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!./blob_header_filepath.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlLink } from '@gitlab/ui';\nimport { numberToHumanSize } from '~/lib/utils/number_utils';\nimport ClipboardButton from '~/vue_shared/components/clipboard_button.vue';\nimport FileIcon from '~/vue_shared/components/file_icon.vue';\n\nexport default {\n  components: {\n    FileIcon,\n    ClipboardButton,\n    GlBadge,\n    GlLink,\n  },\n  props: {\n    blob: {\n      type: Object,\n      required: true,\n    },\n    showPath: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    showAsLink: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showBlobSize: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    blobSize() {\n      return numberToHumanSize(this.blob.size);\n    },\n    gfmCopyText() {\n      return `\\`${this.blob.path}\\``;\n    },\n    showLfsBadge() {\n      return this.blob.storedExternally && this.blob.externalStorage === 'lfs';\n    },\n    fileName() {\n      if (this.showPath) {\n        return this.blob.path;\n      }\n\n      return this.blob.name;\n    },\n    linkHref() {\n      return this.showAsLink ? { href: this.blob?.webPath } : {};\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"file-header-content gl-flex gl-items-center gl-leading-1\">\n    <slot name=\"filepath-prepend\"></slot>\n\n    <template v-if=\"fileName\">\n      <file-icon :file-name=\"fileName\" :size=\"16\" aria-hidden=\"true\" css-classes=\"gl-mr-3\" />\n      <component\n        :is=\"showAsLink ? 'gl-link' : 'strong'\"\n        v-bind=\"linkHref\"\n        class=\"file-title-name mr-1 js-blob-header-filepath gl-break-all gl-font-bold\"\n        :class=\"{ '!gl-text-blue-700 hover:gl-cursor-pointer': showAsLink }\"\n        data-testid=\"file-title-content\"\n        >{{ fileName }}</component\n      >\n    </template>\n\n    <clipboard-button\n      :text=\"blob.path\"\n      :gfm=\"gfmCopyText\"\n      :title=\"__('Copy file path')\"\n      category=\"tertiary\"\n      css-class=\"gl-mr-2\"\n    />\n\n    <small v-if=\"showBlobSize\" class=\"gl-mr-3\">{{ blobSize }}</small>\n\n    <gl-badge v-if=\"showLfsBadge\">{{ __('LFS') }}</gl-badge>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./blob_header_filepath.vue?vue&type=template&id=e3787d72\"\nimport script from \"./blob_header_filepath.vue?vue&type=script&lang=js\"\nexport * from \"./blob_header_filepath.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:\"image-diff-overlay gl-absolute gl-h-full gl-w-full\"},[(_vm.canComment)?_c('button',{staticClass:\"image-diff-overlay-add-comment js-add-image-diff-note-button gl-absolute gl-h-full gl-w-full gl-border-0 gl-bg-transparent\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.clickedImage($event.offsetX, $event.offsetY)}}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\" \"+_vm._s(_vm.__('Add image comment'))+\" \")])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.allDiscussions),function(discussion,index){return _c('design-note-pin',{key:discussion.id,staticClass:\"js-image-badge\",class:_vm.badgeClass,attrs:{\"label\":_vm.showCommentIcon ? null : _vm.toggleText(discussion, index),\"position\":_vm.getPosition(discussion),\"aria-label\":_vm.__('Show comments'),\"is-draft\":discussion.isDraft,\"is-resolved\":discussion.resolved,\"is-on-image\":\"\",\"disabled\":!_vm.shouldToggleDiscussion},on:{\"click\":function($event){return _vm.clickedToggle(discussion)}}})}),_vm._v(\" \"),(_vm.canComment && _vm.currentCommentForm)?_c('design-note-pin',{attrs:{\"position\":/* eslint-disable @gitlab/vue-no-new-non-primitive-in-template */ {\n      left: `${_vm.currentCommentForm.xPercent}%`,\n      top: `${_vm.currentCommentForm.yPercent}%`,\n    } /* eslint-enable @gitlab/vue-no-new-non-primitive-in-template */}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\n\nexport default {\n  computed: {\n    diffFileDiscussions() {\n      return this.allDiscussions.filter((d) => !d.isDraft);\n    },\n  },\n  methods: {\n    ...mapActions(['toggleDiscussion']),\n    clickedToggle(discussion) {\n      if (!discussion.isDraft) {\n        this.toggleDiscussion({ discussionId: discussion.id });\n      }\n    },\n    toggleText(discussion, index) {\n      const count = index + 1;\n\n      return discussion.isDraft ? count - this.diffFileDiscussions.length : count;\n    },\n  },\n};\n","<script>\nimport { isArray } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters } from 'vuex';\nimport imageDiffMixin from 'ee_else_ce/diffs/mixins/image_diff';\nimport DesignNotePin from '~/vue_shared/components/design_management/design_note_pin.vue';\n\nfunction calcPercent(pos, renderedSize) {\n  return (100 * pos) / renderedSize;\n}\n\nexport default {\n  name: 'ImageDiffOverlay',\n  components: {\n    DesignNotePin,\n  },\n  mixins: [imageDiffMixin],\n  props: {\n    discussions: {\n      type: [Array, Object],\n      required: true,\n    },\n    fileHash: {\n      type: String,\n      required: true,\n    },\n    canComment: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showCommentIcon: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    badgeClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    shouldToggleDiscussion: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    renderedWidth: {\n      type: Number,\n      required: true,\n    },\n    renderedHeight: {\n      type: Number,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapGetters('diffs', ['getDiffFileByHash', 'getCommentFormForDiffFile']),\n    currentCommentForm() {\n      return this.getCommentFormForDiffFile(this.fileHash);\n    },\n    allDiscussions() {\n      return isArray(this.discussions) ? this.discussions : [this.discussions];\n    },\n  },\n  methods: {\n    ...mapActions('diffs', ['openDiffFileCommentForm']),\n    getImageDimensions() {\n      return {\n        width: Math.round(this.$parent.width),\n        height: Math.round(this.$parent.height),\n      };\n    },\n    getPositionForObject(meta) {\n      const { x, y, width, height } = meta;\n\n      return {\n        x: (x / width) * 100,\n        y: (y / height) * 100,\n      };\n    },\n    getPosition(discussion) {\n      const { x, y } = this.getPositionForObject(discussion.position);\n\n      return {\n        left: `${x}%`,\n        top: `${y}%`,\n      };\n    },\n    clickedImage(x, y) {\n      const { width, height } = this.getImageDimensions();\n      const xPercent = calcPercent(x, this.renderedWidth);\n      const yPercent = calcPercent(y, this.renderedHeight);\n\n      this.openDiffFileCommentForm({\n        fileHash: this.fileHash,\n        width,\n        height,\n        x: Math.round(width * (xPercent / 100)),\n        y: Math.round(height * (yPercent / 100)),\n        xPercent,\n        yPercent,\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"image-diff-overlay gl-absolute gl-h-full gl-w-full\">\n    <button\n      v-if=\"canComment\"\n      type=\"button\"\n      class=\"image-diff-overlay-add-comment js-add-image-diff-note-button gl-absolute gl-h-full gl-w-full gl-border-0 gl-bg-transparent\"\n      @click=\"clickedImage($event.offsetX, $event.offsetY)\"\n    >\n      <span class=\"sr-only\"> {{ __('Add image comment') }} </span>\n    </button>\n\n    <design-note-pin\n      v-for=\"(discussion, index) in allDiscussions\"\n      :key=\"discussion.id\"\n      :label=\"showCommentIcon ? null : toggleText(discussion, index)\"\n      :position=\"getPosition(discussion)\"\n      :aria-label=\"__('Show comments')\"\n      class=\"js-image-badge\"\n      :class=\"badgeClass\"\n      :is-draft=\"discussion.isDraft\"\n      :is-resolved=\"discussion.resolved\"\n      is-on-image\n      :disabled=\"!shouldToggleDiscussion\"\n      @click=\"clickedToggle(discussion)\"\n    />\n\n    <design-note-pin\n      v-if=\"canComment && currentCommentForm\"\n      :position=\"/* eslint-disable @gitlab/vue-no-new-non-primitive-in-template */ {\n        left: `${currentCommentForm.xPercent}%`,\n        top: `${currentCommentForm.yPercent}%`,\n      } /* eslint-enable @gitlab/vue-no-new-non-primitive-in-template */\"\n    />\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!./image_diff_overlay.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!./image_diff_overlay.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./image_diff_overlay.vue?vue&type=template&id=50229185\"\nimport script from \"./image_diff_overlay.vue?vue&type=script&lang=js\"\nexport * from \"./image_diff_overlay.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 { invert } from 'lodash';\n\nexport const FEEDBACK_TYPE_DISMISSAL = 'dismissal';\nexport const FEEDBACK_TYPE_ISSUE = 'issue';\nexport const FEEDBACK_TYPE_MERGE_REQUEST = 'merge_request';\n\n/**\n * Security artifact file types\n */\nexport const REPORT_FILE_TYPES = {\n  ARCHIVE: 'ARCHIVE',\n  TRACE: 'TRACE',\n  METADATA: 'METADATA',\n};\n\n/**\n * Security scan report types, as provided by the backend.\n */\nexport const REPORT_TYPE_SAST = 'sast';\nexport const REPORT_TYPE_SAST_IAC = 'sast_iac';\nexport const REPORT_TYPE_DAST = 'dast';\nexport const REPORT_TYPE_DAST_PROFILES = 'dast_profiles';\nexport const REPORT_TYPE_SECRET_DETECTION = 'secret_detection';\nexport const REPORT_TYPE_DEPENDENCY_SCANNING = 'dependency_scanning';\nexport const REPORT_TYPE_CONTAINER_SCANNING = 'container_scanning';\nexport const REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY = 'container_scanning_for_registry';\nexport const REPORT_TYPE_CLUSTER_IMAGE_SCANNING = 'cluster_image_scanning';\nexport const REPORT_TYPE_COVERAGE_FUZZING = 'coverage_fuzzing';\nexport const REPORT_TYPE_CORPUS_MANAGEMENT = 'corpus_management';\nexport const REPORT_TYPE_API_FUZZING = 'api_fuzzing';\n\n/**\n * SecurityReportTypeEnum values for use with GraphQL.\n *\n * These should correspond to the lowercase security scan report types.\n */\nexport const SECURITY_REPORT_TYPE_ENUM_SAST = 'SAST';\nexport const SECURITY_REPORT_TYPE_ENUM_SECRET_DETECTION = 'SECRET_DETECTION';\n\n/**\n * A mapping from security scan report types to SecurityReportTypeEnum values.\n */\nexport const reportTypeToSecurityReportTypeEnum = {\n  [REPORT_TYPE_SAST]: SECURITY_REPORT_TYPE_ENUM_SAST,\n  [REPORT_TYPE_SECRET_DETECTION]: SECURITY_REPORT_TYPE_ENUM_SECRET_DETECTION,\n};\n\n/**\n * A mapping from SecurityReportTypeEnum values to security scan report types.\n */\nexport const securityReportTypeEnumToReportType = invert(reportTypeToSecurityReportTypeEnum);\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport\",value:({ placement: _vm.tooltipPlacement }),expression:\"{ placement: tooltipPlacement }\",modifiers:{\"viewport\":true}}],class:_vm.cssClass,attrs:{\"title\":_vm.tooltipText,\"datetime\":_vm.time}},[_vm._t(\"default\",function(){return [(_vm.enableTruncation)?[_c('gl-truncate',{attrs:{\"text\":_vm.timeAgo,\"with-tooltip\":\"\"}})]:[_vm._v(_vm._s(_vm.timeAgo))]]},{\"timeAgo\":_vm.timeAgo})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"","<script>\nimport { GlTruncate, GlTooltipDirective } from '@gitlab/ui';\n\nimport { DATE_TIME_FORMATS, DEFAULT_DATE_TIME_FORMAT } from '~/lib/utils/datetime_utility';\nimport timeagoMixin from '../mixins/timeago';\n\n/**\n * Port of ruby helper time_ago_with_tooltip\n */\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlTruncate,\n  },\n  mixins: [timeagoMixin],\n  props: {\n    time: {\n      type: [String, Number, Date],\n      required: true,\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top',\n    },\n    cssClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    dateTimeFormat: {\n      type: String,\n      required: false,\n      default: DEFAULT_DATE_TIME_FORMAT,\n      validator: (timeFormat) => DATE_TIME_FORMATS.includes(timeFormat),\n    },\n    enableTruncation: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    timeAgo() {\n      return this.timeFormatted(this.time, this.dateTimeFormat);\n    },\n    tooltipText() {\n      return this.enableTruncation ? undefined : this.tooltipTitle(this.time);\n    },\n  },\n};\n</script>\n<template>\n  <time\n    v-gl-tooltip.viewport=\"{ placement: tooltipPlacement }\"\n    :class=\"cssClass\"\n    :title=\"tooltipText\"\n    :datetime=\"time\"\n    ><slot :time-ago=\"timeAgo\"\n      ><template v-if=\"enableTruncation\"><gl-truncate :text=\"timeAgo\" with-tooltip /></template\n      ><template v-else>{{ timeAgo }}</template></slot\n    ></time\n  >\n</template>\n","import { render, staticRenderFns } from \"./time_ago_tooltip.vue?vue&type=template&id=26d04390\"\nimport script from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n  let output = [];\n\n  if (Array.isArray(input)) {\n    for (const pattern of input) {\n      const result = braces.create(pattern, options);\n      if (Array.isArray(result)) {\n        output.push(...result);\n      } else {\n        output.push(result);\n      }\n    }\n  } else {\n    output = [].concat(braces.create(input, options));\n  }\n\n  if (options && options.expand === true && options.nodupes === true) {\n    output = [...new Set(output)];\n  }\n  return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n  if (typeof input === 'string') {\n    return stringify(braces.parse(input, options), options);\n  }\n  return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n  return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n\n  let result = expand(input, options);\n\n  // filter out empty strings if specified\n  if (options.noempty === true) {\n    result = result.filter(Boolean);\n  }\n\n  // filter out duplicates if specified\n  if (options.nodupes === true) {\n    result = [...new Set(result)];\n  }\n\n  return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n  if (input === '' || input.length < 3) {\n    return [input];\n  }\n\n  return options.expand !== true\n    ? braces.compile(input, options)\n    : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","import { s__, __ } from '~/locale';\n\nexport const OPEN_REVERT_MODAL = 'openRevertModal';\nexport const REVERT_MODAL_ID = 'revert-commit-modal';\nexport const OPEN_CHERRY_PICK_MODAL = 'openCherryPickModal';\nexport const CHERRY_PICK_MODAL_ID = 'cherry-pick-commit-modal';\n\nexport const I18N_MODAL = {\n  startMergeRequest: s__('ChangeTypeAction|Start a %{newMergeRequest} with these changes'),\n  existingBranch: s__(\n    'ChangeTypeAction|Your changes will be committed to %{branchName} because a merge request is open.',\n  ),\n  branchInFork: s__(\n    'ChangeTypeAction|GitLab will create a branch in your fork and start a merge request.',\n  ),\n  newMergeRequest: __('new merge request'),\n  actionCancelText: __('Cancel'),\n};\n\nexport const I18N_REVERT_MODAL = {\n  branchLabel: s__('ChangeTypeAction|Revert in branch'),\n  actionPrimaryText: s__('ChangeTypeAction|Revert'),\n};\n\nexport const I18N_CHERRY_PICK_MODAL = {\n  branchLabel: s__('ChangeTypeAction|Pick into branch'),\n  projectLabel: s__('ChangeTypeAction|Pick into project'),\n  actionPrimaryText: s__('ChangeTypeAction|Cherry-pick'),\n};\n\nexport const PREPENDED_MODAL_TEXT = s__(\n  'ChangeTypeAction|This will create a new commit in order to revert the existing changes.',\n);\n\nexport const I18N_NO_RESULTS_MESSAGE = __('No matching results');\n\nexport const I18N_PROJECT_HEADER = s__('ChangeTypeAction|Switch project');\nexport const I18N_PROJECT_SEARCH_PLACEHOLDER = s__('ChangeTypeAction|Search projects');\n\nexport const I18N_BRANCH_HEADER = s__('ChangeTypeAction|Switch branch');\nexport const I18N_BRANCH_SEARCH_PLACEHOLDER = s__('ChangeTypeAction|Search branches');\n\nexport const PROJECT_BRANCHES_ERROR = __('Something went wrong while fetching branches');\n","import { createAlert } from '~/alert';\nimport { __ } from '~/locale';\n\nexport default {\n  computed: {\n    discussionResolved() {\n      if (this.discussion) {\n        return Boolean(this.discussion.resolved);\n      }\n\n      return this.note.resolved;\n    },\n    resolveButtonTitle() {\n      return this.discussionResolved ? __('Unresolve thread') : __('Resolve thread');\n    },\n  },\n  methods: {\n    resolveHandler(resolvedState = false) {\n      if (this.note && this.note.isDraft) {\n        return this.$emit('toggleResolveStatus');\n      }\n\n      this.isResolving = true;\n      const isResolved = this.discussionResolved || resolvedState;\n      const discussion = this.resolveAsThread;\n      let endpoint =\n        discussion && this.discussion ? this.discussion.resolve_path : `${this.note.path}/resolve`;\n\n      if (this.discussionResolvePath) {\n        endpoint = this.discussionResolvePath;\n      }\n\n      return this.toggleResolveNote({ endpoint, isResolved, discussion })\n        .then(() => {\n          this.isResolving = false;\n        })\n        .catch(() => {\n          this.isResolving = false;\n\n          const msg = __('Something went wrong while resolving this discussion. Please try again.');\n          createAlert({\n            message: msg,\n            parent: this.$el,\n          });\n        });\n    },\n  },\n};\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","import { makeModelMixin } from '../utils/model';\n\nconst {\n  mixin,\n  props,\n  prop,\n  event\n} = makeModelMixin('value');\n\nexport { event as MODEL_EVENT_NAME, prop as MODEL_PROP_NAME, mixin as modelMixin, props };\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { get } from '../../../utils/get';\nimport { isPlainObject, isNull, isUndefined } from '../../../utils/inspect';\nimport { sortKeys } from '../../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../../utils/props';\nimport { props as props$1, formOptionsMixin } from '../../../mixins/form-options';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  labelField: makeProp(PROP_TYPE_STRING, 'label'),\n  optionsField: makeProp(PROP_TYPE_STRING, 'options')\n}), 'formOptions');\n\n// --- Mixin ---\n\n// @vue/component\nconst optionsMixin = extend({\n  mixins: [formOptionsMixin],\n  props,\n  methods: {\n    normalizeOption(option) {\n      let key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      // When the option is an object, normalize it\n      if (isPlainObject(option)) {\n        const value = get(option, this.valueField);\n        const text = get(option, this.textField);\n        const options = get(option, this.optionsField, null);\n        // When it has options, create an `<optgroup>` object\n        if (!isNull(options)) {\n          return {\n            label: String(get(option, this.labelField) || text),\n            options: this.normalizeOptions(options)\n          };\n        }\n        // Otherwise create an `<option>` object\n        return {\n          value: isUndefined(value) ? key || text : value,\n          text: String(isUndefined(text) ? key : text),\n          html: get(option, this.htmlField),\n          disabled: Boolean(get(option, this.disabledField))\n        };\n      }\n      // Otherwise create an `<option>` object from the given value\n      return {\n        value: key || option,\n        text: String(option),\n        disabled: false\n      };\n    }\n  }\n});\n\nexport { optionsMixin, props };\n","import { extend, mergeData } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_ANY } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  value: makeProp(PROP_TYPE_ANY, undefined, true) // Required\n}, NAME_FORM_SELECT_OPTION);\n\n// --- Main component ---\n\n// @vue/component\nconst BFormSelectOption = /*#__PURE__*/extend({\n  name: NAME_FORM_SELECT_OPTION,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      value,\n      disabled\n    } = props;\n    return h('option', mergeData(data, {\n      attrs: {\n        disabled\n      },\n      domProps: {\n        value\n      }\n    }), children);\n  }\n});\n\nexport { BFormSelectOption, props };\n","import { extend } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, formOptionsMixin } from '../../mixins/form-options';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BFormSelectOption } from './form-select-option';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  label: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n}), NAME_FORM_SELECT_OPTION_GROUP);\n\n// --- Main component ---\n\n// @vue/component\nconst BFormSelectOptionGroup = /*#__PURE__*/extend({\n  name: NAME_FORM_SELECT_OPTION_GROUP,\n  mixins: [normalizeSlotMixin, formOptionsMixin],\n  props,\n  render(h) {\n    const {\n      label\n    } = this;\n    const $options = this.formOptions.map((option, index) => {\n      const {\n        value,\n        text,\n        html,\n        disabled\n      } = option;\n      return h(BFormSelectOption, {\n        attrs: {\n          value,\n          disabled\n        },\n        domProps: htmlOrText(html, text),\n        key: `option_${index}`\n      });\n    });\n    return h('optgroup', {\n      attrs: {\n        label\n      }\n    }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n  }\n});\n\nexport { BFormSelectOptionGroup, props };\n","import { extend } from '../../vue';\nimport { NAME_FORM_SELECT } from '../../constants/components';\nimport { EVENT_NAME_CHANGE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { from } from '../../utils/array';\nimport { attemptFocus, attemptBlur } from '../../utils/dom';\nimport { htmlOrText } from '../../utils/html';\nimport { isArray } from '../../utils/inspect';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$3, formControlMixin } from '../../mixins/form-control';\nimport { props as props$4, formCustomMixin } from '../../mixins/form-custom';\nimport { props as props$5, formSizeMixin } from '../../mixins/form-size';\nimport { props as props$6, formStateMixin } from '../../mixins/form-state';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { props as props$2, modelMixin, MODEL_PROP_NAME, MODEL_EVENT_NAME } from '../../mixins/model';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { optionsMixin } from './helpers/mixin-options';\nimport { BFormSelectOption } from './form-select-option';\nimport { BFormSelectOptionGroup } from './form-select-option-group';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...props$2,\n  ...props$3,\n  ...props$4,\n  ...props$5,\n  ...props$6,\n  ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode\n  // Size of `1` can bork out Firefox\n  selectSize: makeProp(PROP_TYPE_NUMBER, 0)\n}), NAME_FORM_SELECT);\n\n// --- Main component ---\n\n// @vue/component\nconst BFormSelect = /*#__PURE__*/extend({\n  name: NAME_FORM_SELECT,\n  mixins: [idMixin, modelMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],\n  props,\n  data() {\n    return {\n      localValue: this[MODEL_PROP_NAME]\n    };\n  },\n  computed: {\n    computedSelectSize() {\n      // Custom selects with a size of zero causes the arrows to be hidden,\n      // so dont render the size attribute in this case\n      return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n    },\n    inputClass() {\n      return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? `form-control-${this.size}` : null, this.size && !this.plain ? `custom-select-${this.size}` : null, this.stateClass];\n    }\n  },\n  watch: {\n    value(newValue) {\n      this.localValue = newValue;\n    },\n    localValue() {\n      this.$emit(MODEL_EVENT_NAME, this.localValue);\n    }\n  },\n  methods: {\n    focus() {\n      attemptFocus(this.$refs.input);\n    },\n    blur() {\n      attemptBlur(this.$refs.input);\n    },\n    onChange(event) {\n      const {\n        target\n      } = event;\n      const selectedValue = from(target.options).filter(o => o.selected).map(o => '_value' in o ? o._value : o.value);\n      this.localValue = target.multiple ? selectedValue : selectedValue[0];\n      this.$nextTick(() => {\n        this.$emit(EVENT_NAME_CHANGE, this.localValue);\n      });\n    }\n  },\n  render(h) {\n    const {\n      name,\n      disabled,\n      required,\n      computedSelectSize: size,\n      localValue: value\n    } = this;\n    const $options = this.formOptions.map((option, index) => {\n      const {\n        value,\n        label,\n        options,\n        disabled\n      } = option;\n      const key = `option_${index}`;\n      return isArray(options) ? h(BFormSelectOptionGroup, {\n        props: {\n          label,\n          options\n        },\n        key\n      }) : h(BFormSelectOption, {\n        props: {\n          value,\n          disabled\n        },\n        domProps: htmlOrText(option.html, option.text),\n        key\n      });\n    });\n    return h('select', {\n      class: this.inputClass,\n      attrs: {\n        id: this.safeId(),\n        name,\n        form: this.form || null,\n        multiple: this.multiple || null,\n        size,\n        disabled,\n        required,\n        'aria-required': required ? 'true' : null,\n        'aria-invalid': this.computedAriaInvalid\n      },\n      on: {\n        change: this.onChange\n      },\n      directives: [{\n        name: 'model',\n        value\n      }],\n      ref: 'input'\n    }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n  }\n});\n\nexport { BFormSelect, props };\n","import isObject from 'lodash/isObject';\nimport { BFormSelect } from '../../../../vendor/bootstrap-vue/src/components/form-select/form-select';\nimport { formInputWidths } from '../../../../utils/constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlFormSelect',\n  components: {\n    BFormSelect\n  },\n  inheritAttrs: false,\n  props: {\n    /**\n     * Maximum width of the Select\n     */\n    width: {\n      type: [String, Object],\n      required: false,\n      default: null,\n      validator: value => {\n        const widths = isObject(value) ? Object.values(value) : [value];\n        return widths.every(width => Object.values(formInputWidths).includes(width));\n      }\n    },\n    selectClass: {\n      type: [String, Object, Array],\n      required: false,\n      default: ''\n    }\n  },\n  computed: {\n    cssClasses() {\n      if (this.width === null) {\n        return [];\n      }\n      if (isObject(this.width)) {\n        const {\n          default: defaultWidth,\n          ...nonDefaultWidths\n        } = this.width;\n        return [\n        // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n        ...(defaultWidth ? [`gl-form-select-${defaultWidth}`] : []), ...Object.entries(nonDefaultWidths).map(\n        // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n        _ref => {\n          let [breakpoint, width] = _ref;\n          return `gl-${breakpoint}-form-select-${width}`;\n        })];\n      }\n\n      // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n      return [`gl-form-select-${this.width}`];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"gl-form-select-wrapper\",class:_vm.cssClasses},[_c('b-form-select',_vm._g(_vm._b({staticClass:\"gl-form-select\",class:_vm.selectClass,scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'b-form-select',_vm.$attrs,false),_vm.$listeners))],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","export default {\n  itemsLimit: 1000,\n}\n","import { mountSidebar, getSidebarOptions } from 'ee_else_ce/sidebar/mount_sidebar';\nimport Mediator from './sidebar_mediator';\n\nexport default (store) => {\n  const mediator = new Mediator(getSidebarOptions());\n  mediator.fetch();\n\n  mountSidebar(mediator, store);\n};\n","import { diffViewerModes as viewerModes } from '~/ide/constants';\nimport { changeInPercent, numberToHumanSize } from '~/lib/utils/number_utils';\nimport { truncateSha } from '~/lib/utils/text_utility';\nimport { uuids } from '~/lib/utils/uuids';\n\nimport {\n  DIFF_FILE_SYMLINK_MODE,\n  DIFF_FILE_DELETED_MODE,\n  DIFF_FILE_MANUAL_COLLAPSE,\n  DIFF_FILE_AUTOMATIC_COLLAPSE,\n} from '../constants';\nimport { getDerivedMergeRequestInformation } from './merge_request';\n\nfunction fileSymlinkInformation(file, fileList) {\n  const duplicates = fileList.filter((iteratedFile) => iteratedFile.file_hash === file.file_hash);\n  const includesSymlink = duplicates.some((iteratedFile) => {\n    return [iteratedFile.a_mode, iteratedFile.b_mode].includes(DIFF_FILE_SYMLINK_MODE);\n  });\n  const brokenSymlinkScenario = duplicates.length > 1 && includesSymlink;\n\n  return (\n    brokenSymlinkScenario && {\n      replaced: file.b_mode === DIFF_FILE_DELETED_MODE,\n      wasSymbolic: file.a_mode === DIFF_FILE_SYMLINK_MODE,\n      isSymbolic: file.b_mode === DIFF_FILE_SYMLINK_MODE,\n      wasReal: ![DIFF_FILE_SYMLINK_MODE, DIFF_FILE_DELETED_MODE].includes(file.a_mode),\n      isReal: ![DIFF_FILE_SYMLINK_MODE, DIFF_FILE_DELETED_MODE].includes(file.b_mode),\n    }\n  );\n}\n\nfunction collapsed(file) {\n  const viewer = file.viewer || {};\n\n  return {\n    automaticallyCollapsed: viewer.automaticallyCollapsed || viewer.collapsed || false,\n    manuallyCollapsed: null,\n    forceOpen: false,\n  };\n}\n\nfunction identifier(file) {\n  const { namespace, project, id } = getDerivedMergeRequestInformation({\n    endpoint: file.load_collapsed_diff_url,\n  });\n\n  return uuids({\n    seeds: [namespace, project, id, file.file_identifier_hash, file.blob?.id],\n  })[0];\n}\n\nexport function isNotDiffable(file) {\n  return file?.viewer?.name === viewerModes.not_diffable;\n}\n\nexport function prepareRawDiffFile({ file, allFiles, meta = false, index = -1 }) {\n  const additionalProperties = {\n    brokenSymlink: fileSymlinkInformation(file, allFiles),\n    hasCommentForm: false,\n    discussions: file.discussions || [],\n    drafts: [],\n    viewer: {\n      ...file.viewer,\n      ...collapsed(file),\n    },\n  };\n\n  // It's possible, but not confirmed, that `blob.id` isn't available sometimes\n  // See: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49506#note_464692057\n  // We don't want duplicate IDs if that's the case, so we just don't assign an ID\n  if (!meta && file.blob?.id && file.load_collapsed_diff_url) {\n    additionalProperties.id = identifier(file);\n  }\n\n  if (index >= 0 && Number(index) === index) {\n    additionalProperties.order = index;\n  }\n\n  return Object.assign(file, additionalProperties);\n}\n\nexport function collapsedType(file) {\n  const isManual = typeof file?.viewer?.manuallyCollapsed === 'boolean';\n\n  return isManual ? DIFF_FILE_MANUAL_COLLAPSE : DIFF_FILE_AUTOMATIC_COLLAPSE;\n}\n\nexport function isCollapsed(file) {\n  const type = collapsedType(file);\n  const collapsedStates = {\n    [DIFF_FILE_AUTOMATIC_COLLAPSE]: file?.viewer?.automaticallyCollapsed || false,\n    [DIFF_FILE_MANUAL_COLLAPSE]: file?.viewer?.manuallyCollapsed,\n  };\n\n  return collapsedStates[type];\n}\n\nexport function getShortShaFromFile(file) {\n  return file.content_sha ? truncateSha(String(file.content_sha)) : null;\n}\n\nexport function match({ fileA, fileB, mode = 'universal' } = {}) {\n  const matching = {\n    universal: (a, b) => (a?.id && b?.id ? a.id === b.id : false),\n    /*\n     * MR mode can be wildly incorrect if there is ever the possibility of files from multiple MRs\n     *  (e.g. a browser-local merge request/file cache).\n     * That's why the default here is \"universal\" mode: UUIDs can't conflict, but you can opt into\n     *  the dangerous one.\n     *\n     * For reference:\n     *    file_identifier_hash === sha1( `${filePath}-${Boolean(isNew)}-${Boolean(isDeleted)}-${Boolean(isRenamed)}` )\n     */\n    mr: (a, b) =>\n      a?.file_identifier_hash && b?.file_identifier_hash\n        ? a.file_identifier_hash === b.file_identifier_hash\n        : false,\n  };\n\n  return (matching[mode] || (() => false))(fileA, fileB);\n}\n\nexport function stats(file) {\n  let valid = false;\n  let classes = '';\n  let sign = '';\n  let text = '';\n  let percent = 0;\n  let diff = 0;\n\n  if (file) {\n    percent = changeInPercent(file.old_size, file.new_size);\n    diff = file.new_size - file.old_size;\n    sign = diff >= 0 ? '+' : '';\n    text = `${sign}${numberToHumanSize(diff)} (${sign}${percent}%)`;\n    valid = true;\n\n    if (diff > 0) {\n      classes = 'gl-text-success';\n    } else if (diff < 0) {\n      classes = 'gl-text-danger';\n    }\n  }\n\n  return {\n    changed: diff,\n    text,\n    percent,\n    classes,\n    sign,\n    valid,\n  };\n}\n\nexport function countLinesInBetween(lines, index) {\n  if (index === 0 || !lines[index + 1]) {\n    return -1;\n  }\n\n  const prev = lines[index - 1];\n  const next = lines[index + 1];\n  return Number((next.left || next).new_line) - Number((prev.left || prev).new_line);\n}\n\nexport function findClosestMatchLine(lines, target) {\n  return (\n    lines.find((line, index) => {\n      if (!line.meta_data) return false;\n      const prevLine = lines[index - 1];\n      if (prevLine) {\n        return prevLine.new_line < target && target <= line.meta_data.new_pos;\n      }\n      return target <= line.meta_data.new_pos;\n    }) || lines[lines.length - 1]\n  );\n}\n\nexport function lineExists(lines, oldLineNumber, newLineNumber) {\n  return lines.some((line) => line.old_line === oldLineNumber && line.new_line === newLineNumber);\n}\n","import { __, sprintf } from '~/locale';\nimport { TYPE_EPIC, TYPE_INCIDENT, TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\n\nexport const linkedIssueTypesMap = {\n  BLOCKS: 'blocks',\n  IS_BLOCKED_BY: 'is_blocked_by',\n  RELATES_TO: 'relates_to',\n};\n\nexport const linkedIssueTypesTextMap = {\n  [linkedIssueTypesMap.RELATES_TO]: __('Relates to'),\n  [linkedIssueTypesMap.BLOCKS]: __('Blocks'),\n  [linkedIssueTypesMap.IS_BLOCKED_BY]: __('Is blocked by'),\n};\n\nexport const autoCompleteTextMap = {\n  true: {\n    [TYPE_ISSUE]: sprintf(\n      __(' or %{emphasisStart}#issue ID%{emphasisEnd}'),\n      { emphasisStart: '<', emphasisEnd: '>' },\n      false,\n    ),\n    [TYPE_INCIDENT]: sprintf(\n      __(' or %{emphasisStart}#ID%{emphasisEnd}'),\n      { emphasisStart: '<', emphasisEnd: '>' },\n      false,\n    ),\n    [TYPE_EPIC]: sprintf(\n      __(' or %{emphasisStart}&epic ID%{emphasisEnd}'),\n      { emphasisStart: '<', emphasisEnd: '>' },\n      false,\n    ),\n    [TYPE_MERGE_REQUEST]: sprintf(\n      __(' or %{emphasisStart}!merge request ID%{emphasisEnd}'),\n      { emphasisStart: '<', emphasisEnd: '>' },\n      false,\n    ),\n  },\n  false: {\n    [TYPE_ISSUE]: '',\n    [TYPE_EPIC]: '',\n    [TYPE_MERGE_REQUEST]: __(' or references'),\n  },\n};\n\nexport const inputPlaceholderTextMap = {\n  [TYPE_ISSUE]: __('Enter issue URL'),\n  [TYPE_INCIDENT]: __('Enter URL'),\n  [TYPE_EPIC]: __('Enter epic URL'),\n  [TYPE_MERGE_REQUEST]: __('Enter merge request URLs'),\n};\n\nexport const inputPlaceholderConfidentialTextMap = {\n  [TYPE_ISSUE]: __('Enter confidential issue URL'),\n  [TYPE_EPIC]: __('Enter confidential epic URL'),\n  [TYPE_MERGE_REQUEST]: __('Enter merge request URLs'),\n};\n\nexport const relatedIssuesRemoveErrorMap = {\n  [TYPE_ISSUE]: __('An error occurred while removing issues.'),\n  [TYPE_EPIC]: __('An error occurred while removing epics.'),\n};\n\nexport const pathIndeterminateErrorMap = {\n  [TYPE_ISSUE]: __('We could not determine the path to remove the issue'),\n  [TYPE_EPIC]: __('We could not determine the path to remove the epic'),\n};\n\nexport const itemAddFailureTypesMap = {\n  NOT_FOUND: 'not_found',\n  MAX_NUMBER_OF_CHILD_EPICS: 'conflict',\n};\n\nexport const addRelatedIssueErrorMap = {\n  [TYPE_ISSUE]: __('Issue cannot be found.'),\n  [TYPE_EPIC]: __('Epic cannot be found.'),\n};\n\nexport const addRelatedItemErrorMap = {\n  [itemAddFailureTypesMap.MAX_NUMBER_OF_CHILD_EPICS]: __(\n    'This epic already has the maximum number of child epics.',\n  ),\n};\n\n/**\n * These are used to map issuableType to the correct icon.\n * Since these are never used for any display purposes, don't wrap\n * them inside i18n functions.\n */\nexport const issuableIconMap = {\n  [TYPE_ISSUE]: 'issues',\n  [TYPE_INCIDENT]: 'issues',\n  [TYPE_EPIC]: 'epic',\n};\n\nexport const PathIdSeparator = {\n  Epic: '&',\n  Issue: '#',\n};\n\nexport const issuablesBlockHeaderTextMap = {\n  [TYPE_ISSUE]: __('Linked items'),\n  [TYPE_INCIDENT]: __('Linked incidents or issues'),\n  [TYPE_EPIC]: __('Linked epics'),\n};\n\nexport const issuablesBlockHelpTextMap = {\n  [TYPE_ISSUE]: __('Learn more about linking issues'),\n  [TYPE_INCIDENT]: __('Learn more about linking issues and incidents'),\n  [TYPE_EPIC]: __('Learn more about linking epics'),\n};\n\nexport const issuablesBlockAddButtonTextMap = {\n  [TYPE_ISSUE]: __('Add a related issue'),\n  [TYPE_EPIC]: __('Add a related epic'),\n};\n\nexport const issuablesFormCategoryHeaderTextMap = {\n  [TYPE_ISSUE]: __('The current issue'),\n  [TYPE_INCIDENT]: __('The current incident'),\n  [TYPE_EPIC]: __('The current epic'),\n};\n\nexport const issuablesFormInputTextMap = {\n  [TYPE_ISSUE]: __('the following issues'),\n  [TYPE_INCIDENT]: __('the following incidents or issues'),\n  [TYPE_EPIC]: __('the following epics'),\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getMergeRequestState\"},\"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\":[]}],\"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\":\"projectPath\"}}}],\"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\":\"state\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":190}};\n    doc.loc.source = {\"body\":\"query getMergeRequestState($projectPath: ID!, $iid: String!) {\\n  workspace: project(fullPath: $projectPath) {\\n    id\\n    issuable: mergeRequest(iid: $iid) {\\n      id\\n      state\\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[\"getMergeRequestState\"] = oneQuery(doc, \"getMergeRequestState\");\n        \n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n    : [];\n});\n\nmodule.exports = difference;\n","import GlBaseAnimatedIcon from './base_animated_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAnimatedNotificationIcon',\n  extends: GlBaseAnimatedIcon\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:_vm.iconStateClass,attrs:{\"aria-label\":_vm.ariaLabel,\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{staticClass:\"gl-animated-notifications-bottom-part\",attrs:{\"d\":\"M3.72 11.25L2.35519 12.837C2.21579 12.9991 2.33095 13.25 2.54473 13.25H13.4428C13.6586 13.25 13.773 12.995 13.6296 12.8338L12.22 11.25V7C12.22 6.06556 11.9184 5.20155 11.4073 4.5\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-notifications-top-part\",attrs:{\"d\":\"M3.72 11.75V7C3.72 4.65279 5.62279 2.75 7.97 2.75C9.38277 2.75 10.6345 3.43933 11.4073 4.5\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-notifications-line\",attrs:{\"d\":\"M1.75 14.25L14.2461 1.75391\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M6 13H10V13C10 14.1046 9.10457 15 8 15V15C6.89543 15 6 14.1046 6 13V13Z\",\"fill\":\"currentColor\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M7 2C7 1.44772 7.44772 1 8 1V1C8.55228 1 9 1.44772 9 2V2C9 2.55228 8.55228 3 8 3V3C7.44772 3 7 2.55228 7 2V2Z\",\"fill\":\"currentColor\"}})])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport { __, s__ } from '~/locale';\n\nexport const TYPE_ACTIVITY = 'activity';\nexport const TYPE_COMMENT = 'comment';\nexport const TYPE_DESIGN = 'design';\nexport const TYPE_SNIPPET = 'snippet';\n\nexport const BULK_IMPORT_STATIC_ITEMS = {\n  badges: __('Badge'),\n  boards: s__('Boards|Board'),\n  epics: __('Epic'),\n  issues: __('Issue'),\n  labels: __('Label'),\n  iterations: __('Iteration'),\n  iterations_cadences: s__('Iterations|Iteration cadence'),\n  members: __('Member'),\n  merge_requests: __('Merge request'),\n  milestones: __('Milestone'),\n  namespace_settings: s__('GroupSettings|Namespace setting'),\n  project: __('Project'),\n  self: __('Group'),\n  auto_devops: __('Auto DevOps'),\n  ci_pipelines: __('CI pipeline'),\n  container_expiration_policy: __('Container expiration policy'),\n  design: __('Design'),\n  project_feature: __('Project feature'),\n  protected_branches: __('Protected Branch'),\n  push_rule: __('Push rule'),\n  repository: __('Repository'),\n  service_desk_setting: __('Service Desk'),\n  vulnerabilities: __('Vulnerabilities'),\n  commit_notes: __('Commit notes'),\n};\n\nconst STATISTIC_ITEMS = {\n  diff_note: __('Diff notes'),\n  issue: __('Issues'),\n  issue_attachment: s__('GithubImporter|Issue attachments'),\n  issue_event: __('Issue events'),\n  label: __('Labels'),\n  lfs_object: __('LFS objects'),\n  merge_request_attachment: s__('GithubImporter|PR attachments'),\n  milestone: __('Milestones'),\n  note: __('Notes'),\n  note_attachment: s__('GithubImporter|Note attachments'),\n  protected_branch: __('Protected branches'),\n  collaborator: s__('GithubImporter|Collaborators'),\n  pull_request: s__('GithubImporter|Pull requests'),\n  pull_request_merged_by: s__('GithubImporter|PR mergers'),\n  pull_request_review: s__('GithubImporter|PR reviews'),\n  pull_request_review_request: s__('GithubImporter|PR reviewers'),\n  release: __('Releases'),\n  release_attachment: s__('GithubImporter|Release attachments'),\n};\n\n// support both camel case and snake case versions\nObject.assign(STATISTIC_ITEMS, convertObjectPropsToCamelCase(STATISTIC_ITEMS));\n\nexport { STATISTIC_ITEMS };\n","// These utility methods come from the Gitlab repo; app/assets/javascripts/lib/utils/datetime_utility.js\n\n/**\n * This method allows you to create new Date instance from existing\n * date instance without keeping the reference.\n *\n * @param {Date} date\n */\nconst newDate = date => date instanceof Date ? new Date(date.getTime()) : new Date();\n\n/**\n * Computes the difference between 2 date objects.\n *\n * @param {Date} a the start date\n * @param {Date} b the end date\n * @example\n * // returns 5\n * getDayDifference(new Date('2020-08-10'), new Date('2020-08-15'));\n * @returns {Number} Number of days between the 2 dates\n */\nconst getDayDifference = (a, b) => {\n  const millisecondsPerDay = 1000 * 60 * 60 * 24;\n  const date1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\n  const date2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\n  return Math.floor((date2 - date1) / millisecondsPerDay);\n};\n\n/**\n * Subtracts a given number of days from a given date and returns the new date.\n *\n * @param {Date} date the date that we will substract days from\n * @param {Number} daysInPast number of days that are subtracted from a given date\n * @example\n * // returns Mon Aug 10 2020 00:00:00\n * getDateInPast(new Date('2020-08-15'), 5);\n * @returns {Date} Date in past as Date object\n */\nconst getDateInPast = (date, daysInPast) => new Date(newDate(date).setDate(date.getDate() - daysInPast));\n\n/**\n * Adds a given number of days to a given date and returns the new date.\n *\n * @param {Date} date the date that we will add days to\n * @param {Number} daysInFuture number of days that are added to a given date\n * @example\n * // returns Mon Aug 15 2020 00:00:00\n * getDateInFuture(new Date('2020-08-10'), 5);\n * @returns {Date} Date in future as Date object\n */\nconst getDateInFuture = (date, daysInFuture) => new Date(newDate(date).setDate(date.getDate() + daysInFuture));\n\n/**\n * Are the given two dates equal\n *\n * @param {Date} date1\n * @param {Date} date2\n * @returns {Boolean}\n */\nconst areDatesEqual = (date1, date2) => Boolean(date1 && date2 && new Date(date1).getTime() === new Date(date2).getTime());\n\nexport { areDatesEqual, getDateInFuture, getDateInPast, getDayDifference, newDate };\n","import GlBaseAnimatedIcon from './base_animated_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAnimatedTodoIcon',\n  extends: GlBaseAnimatedIcon\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:_vm.iconStateClass,attrs:{\"aria-label\":_vm.ariaLabel,\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{staticClass:\"gl-animated-todo-box\",attrs:{\"d\":\"M14.25 6.75L14.25 13C14.25 13.6904 13.6904 14.25 13 14.25L3 14.25C2.30964 14.25 1.75 13.6904 1.75 13L1.75 3C1.75 2.30964 2.30964 1.75 3 1.75L13.25 1.75\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-todo-plus-line\",attrs:{\"d\":\"M10.75 3L15.25 3\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-todo-plus-line\",attrs:{\"d\":\"M13 5.25L13 0.75\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-todo-check\",attrs:{\"d\":\"M6.75 7.76299L9.15312 10.2469L15.25 4.15\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}})])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"updateIssueLocked\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssueSetLockedInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issueSetLocked\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"discussionLocked\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":160}};\n    doc.loc.source = {\"body\":\"mutation updateIssueLocked($input: IssueSetLockedInput!) {\\n  issueSetLocked(input: $input) {\\n    issue {\\n      id\\n      discussionLocked\\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[\"updateIssueLocked\"] = oneQuery(doc, \"updateIssueLocked\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.displayAsText)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:({ disabled: _vm.disableTooltip }),expression:\"{ disabled: disableTooltip }\"}],staticClass:\"gl-inline-flex gl-items-center\",class:[_vm.statusColor, _vm.textSizeClass, !_vm.disableTooltip ? 'gl-cursor-help' : undefined],attrs:{\"data-testid\":\"status-text\",\"title\":_vm.__('Health status')}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"size\":16,\"name\":_vm.statusIcon}}),_vm._v(_vm._s(_vm.statusText))],1):_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-font-bold\",attrs:{\"title\":_vm.__('Health status'),\"variant\":_vm.statusClass}},[_vm._v(\"\\n  \"+_vm._s(_vm.statusText)+\"\\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!./issue_health_status.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!./issue_health_status.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport {\n  healthStatusTextMap,\n  healthStatusVariantMap,\n  healthStatusIconMap,\n  healthStatusColorMap,\n} from 'ee/sidebar/constants';\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlBadge,\n    GlIcon,\n  },\n  props: {\n    healthStatus: {\n      type: String,\n      required: true,\n      validator: (value) => Object.keys(healthStatusTextMap).includes(value),\n    },\n    displayAsText: {\n      type: Boolean,\n      required: false,\n    },\n    textSize: {\n      type: String,\n      required: false,\n      default: 'base',\n      validator: (value) => ['base', 'sm'].includes(value),\n    },\n    disableTooltip: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    statusText() {\n      return healthStatusTextMap[this.healthStatus];\n    },\n    statusClass() {\n      return healthStatusVariantMap[this.healthStatus];\n    },\n    statusIcon() {\n      return healthStatusIconMap[this.healthStatus];\n    },\n    statusColor() {\n      return healthStatusColorMap[this.healthStatus];\n    },\n    textSizeClass() {\n      switch (this.textSize) {\n        case 'sm':\n          return 'gl-text-sm';\n        case 'base':\n        default:\n          return 'gl-text-base';\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <span\n    v-if=\"displayAsText\"\n    v-gl-tooltip=\"{ disabled: disableTooltip }\"\n    data-testid=\"status-text\"\n    :title=\"__('Health status')\"\n    class=\"gl-inline-flex gl-items-center\"\n    :class=\"[statusColor, textSizeClass, !disableTooltip ? 'gl-cursor-help' : undefined]\"\n    ><gl-icon class=\"gl-mr-2\" :size=\"16\" :name=\"statusIcon\" />{{ statusText }}</span\n  >\n  <gl-badge\n    v-else\n    v-gl-tooltip\n    class=\"gl-font-bold\"\n    :title=\"__('Health status')\"\n    :variant=\"statusClass\"\n  >\n    {{ statusText }}\n  </gl-badge>\n</template>\n","import { render, staticRenderFns } from \"./issue_health_status.vue?vue&type=template&id=a58aa410\"\nimport script from \"./issue_health_status.vue?vue&type=script&lang=js\"\nexport * from \"./issue_health_status.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 basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"projectIssueEpicMutation\"},\"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\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"attributeId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EpicID\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuableSetAttribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"issueSetEpic\"},\"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\":\"fullPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"attributeId\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuable\"},\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasParent\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"attribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"epic\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":345}};\n    doc.loc.source = {\"body\":\"mutation projectIssueEpicMutation($fullPath: ID!, $iid: String!, $attributeId: EpicID) {\\n  issuableSetAttribute: issueSetEpic(\\n    input: { projectPath: $fullPath, iid: $iid, epicId: $attributeId }\\n  ) {\\n    errors\\n    issuable: issue {\\n      id\\n      hasParent\\n      attribute: epic {\\n        title\\n        id\\n        state\\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[\"projectIssueEpicMutation\"] = oneQuery(doc, \"projectIssueEpicMutation\");\n        \n","import truncate from 'lodash/truncate';\nimport get from 'lodash/get';\nimport { avatarsInlineSizeOptions } from '../../../utils/constants';\nimport GlAvatar from '../avatar/avatar';\nimport GlTooltip from '../tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'AvatarsInline',\n  components: {\n    GlAvatar,\n    GlTooltip\n  },\n  props: {\n    avatars: {\n      type: Array,\n      required: true\n    },\n    maxVisible: {\n      type: Number,\n      required: true\n    },\n    avatarSize: {\n      type: Number,\n      required: true,\n      validator: value => avatarsInlineSizeOptions.includes(value)\n    },\n    collapsed: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    badgeSrOnlyText: {\n      type: String,\n      required: true\n    },\n    badgeTooltipProp: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    badgeTooltipMaxChars: {\n      type: Number,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    hiddenAvatars() {\n      return this.avatars.slice(this.maxVisible);\n    },\n    collapsable() {\n      return this.hiddenAvatars.length > 0;\n    },\n    visibleAvatars() {\n      return this.collapsed ? this.avatars.slice(0, this.maxVisible) : this.avatars;\n    },\n    badgeSize() {\n      return {\n        16: 'sm',\n        24: 'md',\n        32: 'lg'\n      }[this.avatarSize] || 'lg';\n    },\n    badgeLabel() {\n      return `+${this.hiddenAvatars.length}`;\n    },\n    badgeTooltipTitle() {\n      if (!this.badgeTooltipProp) {\n        return '';\n      }\n      const tooltipTitle = this.hiddenAvatars.map(avatar => get(avatar, this.badgeTooltipProp, '').trim()).join(', ');\n\n      // truncate will append '...'\n      // we need to take these extra 3 characters into account in badgeTooltipMaxChars\n      return this.badgeTooltipMaxChars ? truncate(tooltipTitle, {\n        length: this.badgeTooltipMaxChars\n      }) : tooltipTitle;\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-avatars-inline\",class:(\"gl-avatars-inline-\" + _vm.badgeSize)},[_vm._l((_vm.visibleAvatars),function(avatar,index){return _c('div',{key:index,staticClass:\"gl-avatars-inline-child\"},[_vm._t(\"avatar\",function(){return [_c('gl-avatar',_vm._b({attrs:{\"size\":_vm.avatarSize}},'gl-avatar',avatar,false))]},{\"avatar\":avatar})],2)}),_vm._v(\" \"),(_vm.collapsed && _vm.collapsable)?_c('div',{staticClass:\"gl-avatars-inline-child\"},[(_vm.badgeTooltipProp)?_c('gl-tooltip',{attrs:{\"target\":function () { return _vm.$refs.badge; }}},[_vm._v(\"\\n      \"+_vm._s(_vm.badgeTooltipTitle)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),_c('span',{ref:\"badge\",class:['gl-avatars-inline-badge', _vm.badgeSize],attrs:{\"data-testid\":\"collapsed-avatars-badge\",\"aria-hidden\":\"true\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.badgeLabel)+\"\\n    \")]),_vm._v(\" \"),_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"badge-sr-only-text\"}},[_vm._v(_vm._s(_vm.badgeSrOnlyText))])],1):_vm._e()],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueIterationsAliased\"},\"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\":\"title\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IterationState\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"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\":\"attributes\"},\"name\":{\"kind\":\"Name\",\"value\":\"iterations\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"EnumValue\",\"value\":\"TITLE\"},{\"kind\":\"EnumValue\",\"value\":\"CADENCE_TITLE\"}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"IterationFragment\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":341}};\n    doc.loc.source = {\"body\":\"#import \\\"./iteration.fragment.graphql\\\"\\n\\nquery issueIterationsAliased($fullPath: ID!, $title: String, $state: IterationState) {\\n  workspace: group(fullPath: $fullPath) {\\n    id\\n    attributes: iterations(search: $title, in: [TITLE, CADENCE_TITLE], state: $state) {\\n      nodes {\\n        ...IterationFragment\\n        state\\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(\"./iteration.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[\"issueIterationsAliased\"] = oneQuery(doc, \"issueIterationsAliased\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestPrepared\"},\"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\":\"mergeRequestMergeStatusUpdated\"},\"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\":\"preparedAt\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":186}};\n    doc.loc.source = {\"body\":\"subscription mergeRequestPrepared($issuableId: IssuableID!) {\\n  mergeRequestMergeStatusUpdated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      id\\n      preparedAt\\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[\"mergeRequestPrepared\"] = oneQuery(doc, \"mergeRequestPrepared\");\n        \n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAAAAAAdJSU2AAACNElEQVR4AdXYBa7jMBCA4b3/JZahzIkjp2qt+BWUWnG5ln2XxaJJb2b5F2ukL4wvzK/rP7bUcbf92u6oftLSe1ldk8efsfaVeEjusZZeC6e1RllaCk/yG6ag1lZ4WwPX69uyD6tAe/g2ipAlNMRS37awDLaFrpcMWxXQOi0jnWCWjFkSZomYJWDWKmatYNZyEWkJsvQimoZYah5NgdaLxagCtF6GRy0DshZPkeYwS/KIJWGWYjwYUzDLxCwDtJ54OKglimBLqHWahii2g1pmHLLGBmwVoRjcKlmgOdw65H5qKuGWCVi5Qlhs6m1sENZi4q3AWNvca5UYy2RjT/SAsiZey6CsIvc0wVlV5lJ0ibPMyLUGCmlxQq0IM0hLdWyro7CWEc3sXsqaK4O2zLxOsmtpfW5Q1u68ZrVmepaaNXEewawtI9X5Xl3U3n1qND6+rfPzvqoIWz/fklNCSLY153YV53J/XUxGCJnKZ1lajsn3/Ffegf6Y5pV2LUsSNL2UHzxUfh3TlYpZqqTpXZm0KZk9zJcqaEmaWPHDw0pxe05K7bWOLHFLWXVetqpYmrjle4+1y0aBaF4UOQ1NU+lYezJClkjLUnSEjqhH6zjAW4OjtY39Ibq+sawUb6W2RQfoqG0VeKuwrRJvlba17faRdbe2pTtYq6Nty/S7yAbGsQjWIq41wVoT1+IdZNy1djUcVdu5lklQWC0xHkt1X31qNEE1Pr3qKv/9XiSNj6Aaifj3/69+AYujsR/MvkpZAAAAAElFTkSuQmCC\"","var baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    baseUniq = require('./_baseUniq'),\n    isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\n\nexport default {\n  computed: {\n    ...mapGetters(['getNoteableDataByProp']),\n    isProjectArchived() {\n      return this.getNoteableDataByProp('is_project_archived');\n    },\n    archivedProjectDocsPath() {\n      return this.getNoteableDataByProp('archived_project_docs_path');\n    },\n    lockedIssueDocsPath() {\n      return this.getNoteableDataByProp('locked_discussion_docs_path');\n    },\n  },\n  methods: {\n    isLocked(issue) {\n      return Boolean(issue.discussion_locked);\n    },\n  },\n};\n","/**\n * See https://gitlab.com/gitlab-org/gitlab/-/issues/331267 for more information on this vendored\n * dependency\n */\n\nimport config from './config'\n\nimport RecycleScroller from './components/RecycleScroller.vue'\nimport DynamicScroller from './components/DynamicScroller.vue'\nimport DynamicScrollerItem from './components/DynamicScrollerItem.vue'\n\nexport { default as IdState } from './mixins/IdState'\n\nexport {\n  RecycleScroller,\n  DynamicScroller,\n  DynamicScrollerItem,\n}\n\nfunction registerComponents (Vue, prefix) {\n  Vue.component(`${prefix}recycle-scroller`, RecycleScroller)\n  Vue.component(`${prefix}RecycleScroller`, RecycleScroller)\n  Vue.component(`${prefix}dynamic-scroller`, DynamicScroller)\n  Vue.component(`${prefix}DynamicScroller`, DynamicScroller)\n  Vue.component(`${prefix}dynamic-scroller-item`, DynamicScrollerItem)\n  Vue.component(`${prefix}DynamicScrollerItem`, DynamicScrollerItem)\n}\n\nconst plugin = {\n  // eslint-disable-next-line no-undef\n  install (Vue, options) {\n    const finalOptions = Object.assign({}, {\n      installComponents: true,\n      componentsPrefix: '',\n    }, options)\n\n    for (const key in finalOptions) {\n      if (typeof finalOptions[key] !== 'undefined') {\n        config[key] = finalOptions[key]\n      }\n    }\n\n    if (finalOptions.installComponents) {\n      registerComponents(Vue, finalOptions.componentsPrefix)\n    }\n  },\n}\n\nexport default plugin\n\n// Auto-install\nlet GlobalVue = null\nif (typeof window !== 'undefined') {\n  GlobalVue = window.Vue\n} else if (typeof global !== 'undefined') {\n  GlobalVue = global.Vue\n}\nif (GlobalVue) {\n  GlobalVue.use(plugin)\n}\n","// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport { getDraftReplyFormData, getDraftFormData } from '~/batch_comments/utils';\nimport {\n  TEXT_DIFF_POSITION_TYPE,\n  IMAGE_DIFF_POSITION_TYPE,\n  FILE_DIFF_POSITION_TYPE,\n} from '~/diffs/constants';\nimport { createAlert } from '~/alert';\nimport { clearDraft } from '~/lib/utils/autosave';\nimport { sprintf } from '~/locale';\nimport { formatLineRange } from '~/notes/components/multiline_comment_utils';\nimport { SAVING_THE_COMMENT_FAILED, SOMETHING_WENT_WRONG } from '~/diffs/i18n';\n\nexport default {\n  computed: {\n    ...mapState({\n      noteableData: (state) => state.notes.noteableData,\n      notesData: (state) => state.notes.notesData,\n      withBatchComments: (state) => state.batchComments?.withBatchComments,\n    }),\n    ...mapGetters('diffs', ['getDiffFileByHash']),\n    ...mapGetters('batchComments', ['shouldRenderDraftRowInDiscussion', 'draftForDiscussion']),\n    ...mapState('diffs', ['commit', 'showWhitespace']),\n  },\n  methods: {\n    ...mapActions('diffs', ['cancelCommentForm', 'toggleFileCommentForm']),\n    ...mapActions('batchComments', ['addDraftToReview', 'saveDraft', 'insertDraftIntoDrafts']),\n    // eslint-disable-next-line max-params\n    addReplyToReview(noteText, isResolving, parentElement, errorCallback) {\n      const postData = getDraftReplyFormData({\n        in_reply_to_discussion_id: this.discussion.reply_id,\n        target_type: this.getNoteableData.targetType,\n        notesData: this.notesData,\n        draft_note: {\n          note: noteText,\n          resolve_discussion: isResolving,\n        },\n      });\n\n      if (this.discussion.for_commit) {\n        postData.note_project_id = this.discussion.project_id;\n      }\n\n      this.saveDraft(postData)\n        .then(() => {\n          this.isReplying = false;\n          this.handleClearForm(this.discussion.line_code);\n        })\n        .catch((response) => {\n          const reason = response?.data?.errors;\n          const errorMessage = reason\n            ? sprintf(SAVING_THE_COMMENT_FAILED, { reason })\n            : SOMETHING_WENT_WRONG;\n\n          createAlert({\n            message: errorMessage,\n            parent: parentElement,\n          });\n\n          errorCallback();\n        });\n    },\n    // eslint-disable-next-line max-params\n    addToReview(note, positionType = null, parentElement, errorCallback) {\n      const lineRange =\n        (this.line && this.commentLineStart && formatLineRange(this.commentLineStart, this.line)) ||\n        {};\n      const position =\n        positionType ||\n        (this.diffFileCommentForm ? IMAGE_DIFF_POSITION_TYPE : TEXT_DIFF_POSITION_TYPE);\n      const diffFile = this.diffFile || this.file;\n      const postData = getDraftFormData({\n        note,\n        notesData: this.notesData,\n        noteableData: this.noteableData,\n        noteableType: this.noteableType,\n        noteTargetLine: this.noteTargetLine,\n        diffViewType: this.diffViewType,\n        diffFile,\n        linePosition: this.position,\n        positionType: position,\n        ...this.diffFileCommentForm,\n        lineRange,\n        showWhitespace: this.showWhitespace,\n      });\n\n      const diffFileHeadSha = this.commit && diffFile?.diff_refs?.head_sha;\n\n      postData.data.note.commit_id = diffFileHeadSha || null;\n\n      return this.saveDraft(postData)\n        .then(() => {\n          if (position === IMAGE_DIFF_POSITION_TYPE) {\n            this.closeDiffFileCommentForm(this.diffFileHash);\n          } else if (this.line?.line_code) {\n            this.handleClearForm(this.line.line_code);\n          } else if (position === FILE_DIFF_POSITION_TYPE) {\n            this.toggleFileCommentForm(diffFile.file_path);\n          }\n        })\n        .catch((response) => {\n          const reason = response?.data?.errors;\n          const errorMessage = reason\n            ? sprintf(SAVING_THE_COMMENT_FAILED, { reason })\n            : SOMETHING_WENT_WRONG;\n\n          createAlert({\n            message: errorMessage,\n            parent: parentElement,\n          });\n\n          errorCallback();\n        });\n    },\n    handleClearForm(lineCode) {\n      this.cancelCommentForm({\n        lineCode,\n        fileHash: this.diffFileHash,\n      });\n      this.$nextTick(() => {\n        if (this.autosaveKey) {\n          clearDraft(this.autosaveKey);\n        } else {\n          // TODO: remove the following after replacing the autosave mixin\n          // https://gitlab.com/gitlab-org/gitlab-foss/issues/60587\n          this.resetAutoSave();\n        }\n      });\n    },\n    showDraft(replyId) {\n      return this.withBatchComments && this.shouldRenderDraftRowInDiscussion(replyId);\n    },\n  },\n};\n","var asciiWords = require('./_asciiWords'),\n    hasUnicodeWord = require('./_hasUnicodeWord'),\n    toString = require('./toString'),\n    unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","import { translate } from '../../../utils/i18n';\nimport { progressBarVariantOptions } from '../../../utils/constants';\nimport { toFloat } from '../../../utils/number_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst backgroundClasses = {\n  [progressBarVariantOptions.primary]: 'gl-progress-bar-primary',\n  [progressBarVariantOptions.success]: 'gl-progress-bar-success',\n  [progressBarVariantOptions.danger]: 'gl-progress-bar-danger',\n  [progressBarVariantOptions.warning]: 'gl-progress-bar-warning'\n};\nvar script = {\n  name: 'GlProgressBar',\n  props: {\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: translate('GlProgressBar.ariaLabel', 'Progress bar')\n    },\n    value: {\n      type: [Number, String],\n      required: false,\n      default: 0\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: 'primary',\n      validator: value => Object.keys(progressBarVariantOptions).includes(value)\n    },\n    max: {\n      type: [Number, String],\n      required: false,\n      default: 100\n    },\n    height: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    progressHeight() {\n      return {\n        height: this.height\n      };\n    },\n    computedValue() {\n      return toFloat(this.value, 0);\n    },\n    computedMax() {\n      const max = toFloat(this.max, 100);\n      return max > 0 ? max : 100;\n    },\n    progressBarStyles() {\n      return {\n        transform: `scaleX(${this.computedValue / this.computedMax})`\n      };\n    },\n    classes() {\n      return ['gl-progress', backgroundClasses[this.variant]];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-progress-bar progress\",style:(_vm.progressHeight)},[_c('div',{class:_vm.classes,style:(_vm.progressBarStyles),attrs:{\"role\":\"progressbar\",\"aria-label\":_vm.ariaLabel,\"aria-valuemin\":\"0\",\"aria-valuemax\":String(_vm.computedMax),\"aria-valuenow\":_vm.computedValue}})])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import 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',{attrs:{\"data-testid\":\"image-viewer\"}},[_c('div',{staticClass:\"position-relative\",class:_vm.innerCssClasses},[_c('img',{ref:\"contentImg\",attrs:{\"src\":_vm.safePath},on:{\"load\":_vm.onImgLoad}}),_vm._v(\" \"),_vm._t(\"image-overlay\",null,{\"renderedWidth\":_vm.renderedWidth,\"renderedHeight\":_vm.renderedHeight})],2),_vm._v(\" \"),(_vm.renderInfo)?_c('p',{staticClass:\"image-info\"},[(_vm.hasFileSize)?[_vm._v(\"\\n      \"+_vm._s(_vm.fileSizeReadable)+\"\\n    \")]:_vm._e(),_vm._v(\" \"),(_vm.hasFileSize && _vm.hasDimensions)?[_vm._v(\" | \")]:_vm._e(),_vm._v(\" \"),(_vm.hasDimensions)?[_c('strong',[_vm._v(_vm._s(_vm.s__('ImageViewerDimensions|W')))]),_vm._v(\": \"+_vm._s(_vm.width)+\" | \"),_c('strong',[_vm._v(_vm._s(_vm.s__('ImageViewerDimensions|H')))]),_vm._v(\": \"+_vm._s(_vm.height)+\"\\n    \")]:_vm._e()],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { throttle } from 'lodash';\nimport { numberToHumanSize } from '~/lib/utils/number_utils';\nimport { encodeSaferUrl } from '~/lib/utils/url_utility';\n\nconst BLOB_PREFIX = 'blob:';\n\nexport default {\n  props: {\n    path: {\n      type: String,\n      required: true,\n    },\n    fileSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n    renderInfo: {\n      type: Boolean,\n      default: true,\n      required: false,\n    },\n    innerCssClasses: {\n      type: [Array, Object, String],\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      width: 0,\n      height: 0,\n      renderedWidth: 0,\n      renderedHeight: 0,\n    };\n  },\n  computed: {\n    fileSizeReadable() {\n      return numberToHumanSize(this.fileSize);\n    },\n\n    hasFileSize() {\n      return this.fileSize > 0;\n    },\n    hasDimensions() {\n      return this.width && this.height;\n    },\n    safePath() {\n      return this.path.startsWith(BLOB_PREFIX) ? this.path : encodeSaferUrl(this.path);\n    },\n  },\n  beforeDestroy() {\n    window.removeEventListener('resize', this.resizeThrottled, false);\n  },\n  mounted() {\n    // The onImgLoad may have happened before the control was actually mounted\n    this.onImgLoad();\n    this.resizeThrottled = throttle(this.onImgLoad, 400);\n    window.addEventListener('resize', this.resizeThrottled, false);\n  },\n  methods: {\n    onImgLoad() {\n      requestIdleCallback(this.calculateImgSize, { timeout: 1000 });\n    },\n    calculateImgSize() {\n      const { contentImg } = this.$refs;\n\n      if (contentImg) {\n        this.width = contentImg.naturalWidth;\n        this.height = contentImg.naturalHeight;\n\n        this.$nextTick(() => {\n          this.renderedWidth = contentImg.clientWidth;\n          this.renderedHeight = contentImg.clientHeight;\n\n          this.$emit('imgLoaded', {\n            width: this.width,\n            height: this.height,\n            renderedWidth: this.renderedWidth,\n            renderedHeight: this.renderedHeight,\n          });\n        });\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"image-viewer\">\n    <div :class=\"innerCssClasses\" class=\"position-relative\">\n      <img ref=\"contentImg\" :src=\"safePath\" @load=\"onImgLoad\" />\n      <slot\n        name=\"image-overlay\"\n        :rendered-width=\"renderedWidth\"\n        :rendered-height=\"renderedHeight\"\n      ></slot>\n    </div>\n    <p v-if=\"renderInfo\" class=\"image-info\">\n      <template v-if=\"hasFileSize\">\n        {{ fileSizeReadable }}\n      </template>\n      <template v-if=\"hasFileSize && hasDimensions\"> | </template>\n      <template v-if=\"hasDimensions\">\n        <strong>{{ s__('ImageViewerDimensions|W') }}</strong\n        >: {{ width }} | <strong>{{ s__('ImageViewerDimensions|H') }}</strong\n        >: {{ height }}\n      </template>\n    </p>\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!./image_viewer.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!./image_viewer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./image_viewer.vue?vue&type=template&id=bc7de830\"\nimport script from \"./image_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./image_viewer.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","function getInternetExplorerVersion() {\n  var ua = window.navigator.userAgent;\n  var msie = ua.indexOf('MSIE ');\n\n  if (msie > 0) {\n    // IE 10 or older => return version number\n    return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n  }\n\n  var trident = ua.indexOf('Trident/');\n\n  if (trident > 0) {\n    // IE 11 => return version number\n    var rv = ua.indexOf('rv:');\n    return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n  }\n\n  var edge = ua.indexOf('Edge/');\n\n  if (edge > 0) {\n    // Edge (IE 12+) => return version number\n    return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n  } // other browser\n\n\n  return -1;\n}\n\n//\nvar isIE;\n\nfunction initCompat() {\n  if (!initCompat.init) {\n    initCompat.init = true;\n    isIE = getInternetExplorerVersion() !== -1;\n  }\n}\n\nvar script = {\n  name: 'ResizeObserver',\n  props: {\n    emitOnMount: {\n      type: Boolean,\n      default: false\n    },\n    ignoreWidth: {\n      type: Boolean,\n      default: false\n    },\n    ignoreHeight: {\n      type: Boolean,\n      default: false\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    initCompat();\n    this.$nextTick(function () {\n      _this._w = _this.$el.offsetWidth;\n      _this._h = _this.$el.offsetHeight;\n\n      if (_this.emitOnMount) {\n        _this.emitSize();\n      }\n    });\n    var object = document.createElement('object');\n    this._resizeObject = object;\n    object.setAttribute('aria-hidden', 'true');\n    object.setAttribute('tabindex', -1);\n    object.onload = this.addResizeHandlers;\n    object.type = 'text/html';\n\n    if (isIE) {\n      this.$el.appendChild(object);\n    }\n\n    object.data = 'about:blank';\n\n    if (!isIE) {\n      this.$el.appendChild(object);\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.removeResizeHandlers();\n  },\n  methods: {\n    compareAndNotify: function compareAndNotify() {\n      if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) {\n        this._w = this.$el.offsetWidth;\n        this._h = this.$el.offsetHeight;\n        this.emitSize();\n      }\n    },\n    emitSize: function emitSize() {\n      this.$emit('notify', {\n        width: this._w,\n        height: this._h\n      });\n    },\n    addResizeHandlers: function addResizeHandlers() {\n      this._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\n      this.compareAndNotify();\n    },\n    removeResizeHandlers: function removeResizeHandlers() {\n      if (this._resizeObject && this._resizeObject.onload) {\n        if (!isIE && this._resizeObject.contentDocument) {\n          this._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n        }\n\n        this.$el.removeChild(this._resizeObject);\n        this._resizeObject.onload = null;\n        this._resizeObject = null;\n      }\n    }\n  }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n  if (typeof shadowMode !== 'boolean') {\n    createInjectorSSR = createInjector;\n    createInjector = shadowMode;\n    shadowMode = false;\n  } // Vue.extend constructor export interop.\n\n\n  var options = typeof script === 'function' ? script.options : script; // render functions\n\n  if (template && template.render) {\n    options.render = template.render;\n    options.staticRenderFns = template.staticRenderFns;\n    options._compiled = true; // functional template\n\n    if (isFunctionalTemplate) {\n      options.functional = true;\n    }\n  } // scopedId\n\n\n  if (scopeId) {\n    options._scopeId = scopeId;\n  }\n\n  var hook;\n\n  if (moduleIdentifier) {\n    // server build\n    hook = function hook(context) {\n      // 2.3 injection\n      context = context || // cached call\n      this.$vnode && this.$vnode.ssrContext || // stateful\n      this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n      // 2.2 with runInNewContext: true\n\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__;\n      } // inject component styles\n\n\n      if (style) {\n        style.call(this, createInjectorSSR(context));\n      } // register component module identifier for async chunk inference\n\n\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier);\n      }\n    }; // used by ssr in case component is cached and beforeCreate\n    // never gets called\n\n\n    options._ssrRegister = hook;\n  } else if (style) {\n    hook = shadowMode ? function (context) {\n      style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\n    } : function (context) {\n      style.call(this, createInjector(context));\n    };\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // register for functional component in vue file\n      var originalRender = options.render;\n\n      options.render = function renderWithStyleInjection(h, context) {\n        hook.call(context);\n        return originalRender(h, context);\n      };\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate;\n      options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n    }\n  }\n\n  return script;\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n  var _vm = this;\n\n  var _h = _vm.$createElement;\n\n  var _c = _vm._self._c || _h;\n\n  return _c(\"div\", {\n    staticClass: \"resize-observer\",\n    attrs: {\n      tabindex: \"-1\"\n    }\n  });\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = \"data-v-8859cc6c\";\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n  render: __vue_render__,\n  staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction install(Vue) {\n  // eslint-disable-next-line vue/component-definition-name-casing\n  Vue.component('resize-observer', __vue_component__);\n  Vue.component('ResizeObserver', __vue_component__);\n}\n\nvar plugin = {\n  // eslint-disable-next-line no-undef\n  version: \"1.0.1\",\n  install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n  GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n  GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n  GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { __vue_component__ as ResizeObserver, install };\n//# sourceMappingURL=vue-resize.esm.js.map\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"md-area-wrapper gl-rounded-lg !gl-px-0\"},[(!_vm.isDefaultEditorEnabled)?_c('local-storage-sync',{attrs:{\"value\":_vm.editingMode,\"as-string\":\"\",\"storage-key\":_vm.$options.EDITING_MODE_KEY},on:{\"input\":_vm.onEditingModeRestored}}):_vm._e(),_vm._v(\" \"),(_vm.alert)?_c('gl-alert',{staticClass:\"gl-mb-4\",attrs:{\"variant\":_vm.alert.variant,\"primary-button-text\":_vm.alert.primaryButtonText,\"secondary-button-text\":_vm.alert.secondaryButtonText},on:{\"primaryAction\":_vm.alert.primaryAction,\"secondaryAction\":_vm.alert.secondaryAction,\"dismiss\":_vm.alert.dismiss}},[_vm._v(\"\\n    \"+_vm._s(_vm.alert.message)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(!_vm.isContentEditorActive)?_c('markdown-field',_vm._b({ref:\"markdownField\",attrs:{\"data-testid\":\"markdown-field\",\"markdown-preview-path\":_vm.renderMarkdownPath,\"can-attach-file\":!_vm.disableAttachments,\"can-suggest\":_vm.codeSuggestionsConfig.canSuggest,\"line\":_vm.codeSuggestionsConfig.line,\"lines\":_vm.codeSuggestionsConfig.lines,\"show-suggest-popover\":_vm.codeSuggestionsConfig.showPopover,\"textarea-value\":_vm.markdown,\"uploads-path\":_vm.uploadsPath,\"enable-autocomplete\":_vm.enableAutocomplete,\"autocomplete-data-sources\":_vm.autocompleteDataSources,\"markdown-docs-path\":_vm.markdownDocsPath,\"supports-quick-actions\":_vm.supportsQuickActions,\"show-content-editor-switcher\":_vm.enableContentEditor,\"drawio-enabled\":_vm.drawioEnabled,\"restricted-tool-bar-items\":_vm.markdownFieldRestrictedToolBarItems,\"remove-border\":true},on:{\"enableContentEditor\":function($event){return _vm.onEditingModeChange('contentEditor')},\"handleSuggestDismissed\":() => _vm.$emit('handleSuggestDismissed')},scopedSlots:_vm._u([{key:\"header-buttons\",fn:function(){return [_vm._t(\"header-buttons\")]},proxy:true},{key:\"toolbar\",fn:function(){return [_vm._t(\"toolbar\")]},proxy:true},{key:\"textarea\",fn:function(){return [_c('textarea',_vm._b({ref:\"textarea\",staticClass:\"note-textarea js-gfm-input markdown-area\",attrs:{\"dir\":\"auto\",\"data-can-suggest\":_vm.codeSuggestionsConfig.canSuggest,\"data-noteable-type\":_vm.noteableType,\"data-supports-quick-actions\":_vm.supportsQuickActions,\"data-testid\":_vm.formFieldProps['data-testid'] || 'markdown-editor-form-field',\"disabled\":_vm.disabled},domProps:{\"value\":_vm.markdown},on:{\"input\":_vm.updateMarkdownFromMarkdownField,\"keydown\":function($event){return _vm.$emit('keydown', $event)}}},'textarea',_vm.formFieldProps,false))]},proxy:true}],null,true)},'markdown-field',_vm.$attrs,false)):_c('div',[_c('content-editor',{ref:\"contentEditor\",attrs:{\"render-markdown\":_vm.renderMarkdown,\"markdown-docs-path\":_vm.markdownDocsPath,\"uploads-path\":_vm.uploadsPath,\"markdown\":_vm.markdown,\"supports-quick-actions\":_vm.supportsQuickActions,\"autofocus\":_vm.contentEditorAutofocused,\"placeholder\":_vm.formFieldProps.placeholder,\"drawio-enabled\":_vm.drawioEnabled,\"enable-autocomplete\":_vm.enableAutocomplete,\"autocomplete-data-sources\":_vm.autocompleteDataSources,\"editable\":!_vm.disabled,\"disable-attachments\":_vm.disableAttachments,\"code-suggestions-config\":_vm.codeSuggestionsConfig,\"data-testid\":_vm.formFieldProps['data-testid'] || 'markdown-editor-form-field'},on:{\"initialized\":_vm.setEditorAsAutofocused,\"change\":_vm.updateMarkdownFromContentEditor,\"keydown\":_vm.onKeydown,\"enableMarkdownEditor\":function($event){return _vm.onEditingModeChange('markdownField')}},scopedSlots:_vm._u([{key:\"header-buttons\",fn:function(){return [_vm._t(\"header-buttons\")]},proxy:true},{key:\"toolbar\",fn:function(){return [_vm._t(\"toolbar\")]},proxy:true}],null,true)}),_vm._v(\" \"),_c('input',_vm._b({attrs:{\"type\":\"hidden\"},domProps:{\"value\":_vm.markdown}},'input',_vm.formFieldProps,false))],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAlert } from '@gitlab/ui';\nimport Autosize from 'autosize';\nimport { __ } from '~/locale';\nimport axios from '~/lib/utils/axios_utils';\nimport { updateDraft, clearDraft, getDraft } from '~/lib/utils/autosave';\nimport { setUrlParams, joinPaths } from '~/lib/utils/url_utility';\nimport LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';\nimport {\n  EDITING_MODE_KEY,\n  EDITING_MODE_MARKDOWN_FIELD,\n  EDITING_MODE_CONTENT_EDITOR,\n  CLEAR_AUTOSAVE_ENTRY_EVENT,\n} from '../../constants';\nimport MarkdownField from './field.vue';\nimport eventHub from './eventhub';\n\nasync function sleep(t = 10) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, t);\n  });\n}\n\nasync function waitFor(getEl, interval = 10, timeout = 2000) {\n  if (timeout <= 0) return null;\n\n  const el = getEl();\n  if (el) return el;\n\n  await sleep(interval);\n  return waitFor(getEl, timeout - interval);\n}\n\nexport default {\n  components: {\n    GlAlert,\n    MarkdownField,\n    LocalStorageSync,\n    ContentEditor: () =>\n      import(\n        /* webpackChunkName: 'content_editor' */ '~/content_editor/components/content_editor.vue'\n      ),\n  },\n  props: {\n    value: {\n      type: String,\n      required: true,\n    },\n    setFacade: {\n      type: Function,\n      required: false,\n      default: null,\n    },\n    renderMarkdownPath: {\n      type: String,\n      required: true,\n    },\n    uploadsPath: {\n      type: String,\n      required: false,\n      default: () => window.uploads_path || '',\n    },\n    enableContentEditor: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    formFieldProps: {\n      type: Object,\n      required: true,\n    },\n    autofocus: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    enableAutocomplete: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    autocompleteDataSources: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    supportsQuickActions: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    markdownDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    drawioEnabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    disableAttachments: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    codeSuggestionsConfig: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    restrictedToolBarItems: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    restoreFromAutosave: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    let editingMode;\n    switch (window.gon?.text_editor) {\n      case 'rich_text_editor':\n        editingMode = EDITING_MODE_CONTENT_EDITOR;\n        break;\n      case 'plain_text_editor':\n        editingMode = EDITING_MODE_MARKDOWN_FIELD;\n        break;\n      default:\n        editingMode =\n          localStorage.getItem(this.$options.EDITING_MODE_KEY) || EDITING_MODE_MARKDOWN_FIELD;\n    }\n\n    const autosaveValue = this.autosaveKey ? getDraft(this.autosaveKey) : '';\n    const initialValue = this.restoreFromAutosave ? autosaveValue : this.value;\n\n    return {\n      alert: null,\n      markdown: initialValue || autosaveValue || '',\n      editingMode,\n      autofocused: false,\n    };\n  },\n  computed: {\n    isContentEditorActive() {\n      return this.enableContentEditor && this.editingMode === EDITING_MODE_CONTENT_EDITOR;\n    },\n    contentEditorAutofocused() {\n      // Match textarea focus behavior\n      return this.autofocus && !this.autofocused ? 'end' : false;\n    },\n    markdownFieldRestrictedToolBarItems() {\n      const restrictAttachments = this.disableAttachments ? ['attach-file'] : [];\n\n      return [...this.restrictedToolBarItems, ...restrictAttachments];\n    },\n    isDefaultEditorEnabled() {\n      return ['plain_text_editor', 'rich_text_editor'].includes(window.gon?.text_editor);\n    },\n  },\n  watch: {\n    value: 'updateValue',\n  },\n  mounted() {\n    this.autofocusTextarea();\n\n    this.$emit('input', this.markdown);\n    this.saveDraft();\n\n    this.setFacade?.({\n      getValue: () => this.getValue(),\n      setValue: (val) => this.setValue(val),\n    });\n\n    eventHub.$on(CLEAR_AUTOSAVE_ENTRY_EVENT, this.clearDraft);\n  },\n  beforeDestroy() {\n    eventHub.$off(CLEAR_AUTOSAVE_ENTRY_EVENT, this.clearDraft);\n  },\n  methods: {\n    getValue() {\n      return this.markdown;\n    },\n    setValue(value) {\n      this.$emit('input', value);\n      this.updateValue(value);\n    },\n    updateValue(value) {\n      this.markdown = value;\n      this.saveDraft();\n      this.autosizeTextarea();\n    },\n    append(value) {\n      if (!value) {\n        this.focus();\n        return;\n      }\n      const newValue = [this.markdown.trim(), value].filter(Boolean).join('\\n\\n');\n      this.updateValue(`${newValue}\\n\\n`);\n      this.$nextTick(() => {\n        this.focus();\n      });\n    },\n    setTemplate(template, force = false) {\n      if (!this.markdown || force) {\n        this.setValue(template);\n      } else {\n        const dismiss = () => {\n          this.alert = null;\n        };\n        this.alert = {\n          message: this.$options.i18n.applyTemplateAlert.message,\n          variant: 'warning',\n          primaryButtonText: this.$options.i18n.applyTemplateAlert.primaryButtonText,\n          secondaryButtonText: this.$options.i18n.applyTemplateAlert.secondaryButtonText,\n          primaryAction: () => {\n            this.setValue(template, true);\n            dismiss();\n          },\n          secondaryAction: dismiss,\n          dismiss,\n        };\n      }\n    },\n    updateMarkdownFromContentEditor({ markdown }) {\n      this.markdown = markdown;\n      this.$emit('input', markdown);\n\n      this.saveDraft();\n    },\n    updateMarkdownFromMarkdownField({ target }) {\n      this.markdown = target.value;\n      this.$emit('input', target.value);\n\n      this.saveDraft();\n    },\n    renderMarkdown(markdown) {\n      const url = setUrlParams(\n        { render_quick_actions: this.supportsQuickActions },\n        joinPaths(window.location.origin, this.renderMarkdownPath),\n      );\n      return axios\n        .post(url, { text: markdown })\n        .then(({ data: { html, body, ...otherData } = {} } = {}) => ({\n          body: body || html,\n          ...otherData,\n        }));\n    },\n    onEditingModeChange(editingMode) {\n      this.editingMode = editingMode;\n      this.notifyEditingModeChange(editingMode);\n    },\n    onEditingModeRestored(editingMode) {\n      if (!this.isDefaultEditorEnabled) return;\n      if (editingMode === EDITING_MODE_CONTENT_EDITOR && !this.enableContentEditor) {\n        this.editingMode = EDITING_MODE_MARKDOWN_FIELD;\n        return;\n      }\n\n      this.editingMode = editingMode;\n      this.$emit(editingMode);\n      this.notifyEditingModeChange(editingMode);\n    },\n    async notifyEditingModeChange(editingMode) {\n      this.$emit(editingMode);\n\n      const componentToFocus =\n        editingMode === EDITING_MODE_CONTENT_EDITOR\n          ? () => this.$refs.contentEditor\n          : () => this.$refs.textarea;\n\n      (await waitFor(componentToFocus)).focus();\n    },\n    autofocusTextarea() {\n      if (this.autofocus && this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$refs.textarea.focus();\n        this.setEditorAsAutofocused();\n      }\n    },\n    focus() {\n      if (this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$refs.textarea.focus();\n      } else {\n        this.$refs.contentEditor.focus();\n      }\n    },\n    setEditorAsAutofocused() {\n      this.autofocused = true;\n    },\n    saveDraft() {\n      if (!this.autosaveKey) return;\n      if (this.markdown) updateDraft(this.autosaveKey, this.markdown);\n      else clearDraft(this.autosaveKey);\n    },\n    clearDraft(key) {\n      if (!this.autosaveKey || key !== this.autosaveKey) return;\n      clearDraft(this.autosaveKey);\n    },\n    togglePreview(value) {\n      if (this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$refs.markdownField.previewMarkdown = value;\n      }\n    },\n    autosizeTextarea() {\n      if (this.editingMode === EDITING_MODE_MARKDOWN_FIELD) {\n        this.$nextTick(() => {\n          Autosize.update(this.$refs.textarea);\n        });\n      }\n    },\n    onKeydown(event) {\n      const isModifierKey = event.ctrlKey || event.metaKey;\n      if (isModifierKey && event.key === 'k') {\n        event.preventDefault();\n      }\n      this.$emit('keydown', event);\n    },\n  },\n  EDITING_MODE_KEY,\n  i18n: {\n    applyTemplateAlert: {\n      message: __(\n        'Applying a template will replace the existing content. Any changes you have made will be lost.',\n      ),\n      primaryButtonText: __('Apply template'),\n      secondaryButtonText: __('Cancel'),\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"md-area-wrapper gl-rounded-lg !gl-px-0\">\n    <local-storage-sync\n      v-if=\"!isDefaultEditorEnabled\"\n      :value=\"editingMode\"\n      as-string\n      :storage-key=\"$options.EDITING_MODE_KEY\"\n      @input=\"onEditingModeRestored\"\n    />\n    <gl-alert\n      v-if=\"alert\"\n      class=\"gl-mb-4\"\n      :variant=\"alert.variant\"\n      :primary-button-text=\"alert.primaryButtonText\"\n      :secondary-button-text=\"alert.secondaryButtonText\"\n      @primaryAction=\"alert.primaryAction\"\n      @secondaryAction=\"alert.secondaryAction\"\n      @dismiss=\"alert.dismiss\"\n    >\n      {{ alert.message }}\n    </gl-alert>\n    <markdown-field\n      v-if=\"!isContentEditorActive\"\n      ref=\"markdownField\"\n      v-bind=\"$attrs\"\n      data-testid=\"markdown-field\"\n      :markdown-preview-path=\"renderMarkdownPath\"\n      :can-attach-file=\"!disableAttachments\"\n      :can-suggest=\"codeSuggestionsConfig.canSuggest\"\n      :line=\"codeSuggestionsConfig.line\"\n      :lines=\"codeSuggestionsConfig.lines\"\n      :show-suggest-popover=\"codeSuggestionsConfig.showPopover\"\n      :textarea-value=\"markdown\"\n      :uploads-path=\"uploadsPath\"\n      :enable-autocomplete=\"enableAutocomplete\"\n      :autocomplete-data-sources=\"autocompleteDataSources\"\n      :markdown-docs-path=\"markdownDocsPath\"\n      :supports-quick-actions=\"supportsQuickActions\"\n      :show-content-editor-switcher=\"enableContentEditor\"\n      :drawio-enabled=\"drawioEnabled\"\n      :restricted-tool-bar-items=\"markdownFieldRestrictedToolBarItems\"\n      :remove-border=\"true\"\n      @enableContentEditor=\"onEditingModeChange('contentEditor')\"\n      @handleSuggestDismissed=\"() => $emit('handleSuggestDismissed')\"\n    >\n      <template #header-buttons><slot name=\"header-buttons\"></slot></template>\n      <template #toolbar><slot name=\"toolbar\"></slot></template>\n      <template #textarea>\n        <textarea\n          v-bind=\"formFieldProps\"\n          ref=\"textarea\"\n          :value=\"markdown\"\n          class=\"note-textarea js-gfm-input markdown-area\"\n          dir=\"auto\"\n          :data-can-suggest=\"codeSuggestionsConfig.canSuggest\"\n          :data-noteable-type=\"noteableType\"\n          :data-supports-quick-actions=\"supportsQuickActions\"\n          :data-testid=\"formFieldProps['data-testid'] || 'markdown-editor-form-field'\"\n          :disabled=\"disabled\"\n          @input=\"updateMarkdownFromMarkdownField\"\n          @keydown=\"$emit('keydown', $event)\"\n        ></textarea>\n      </template>\n    </markdown-field>\n    <div v-else>\n      <content-editor\n        ref=\"contentEditor\"\n        :render-markdown=\"renderMarkdown\"\n        :markdown-docs-path=\"markdownDocsPath\"\n        :uploads-path=\"uploadsPath\"\n        :markdown=\"markdown\"\n        :supports-quick-actions=\"supportsQuickActions\"\n        :autofocus=\"contentEditorAutofocused\"\n        :placeholder=\"formFieldProps.placeholder\"\n        :drawio-enabled=\"drawioEnabled\"\n        :enable-autocomplete=\"enableAutocomplete\"\n        :autocomplete-data-sources=\"autocompleteDataSources\"\n        :editable=\"!disabled\"\n        :disable-attachments=\"disableAttachments\"\n        :code-suggestions-config=\"codeSuggestionsConfig\"\n        :data-testid=\"formFieldProps['data-testid'] || 'markdown-editor-form-field'\"\n        @initialized=\"setEditorAsAutofocused\"\n        @change=\"updateMarkdownFromContentEditor\"\n        @keydown=\"onKeydown\"\n        @enableMarkdownEditor=\"onEditingModeChange('markdownField')\"\n      >\n        <template #header-buttons><slot name=\"header-buttons\"></slot></template>\n        <template #toolbar><slot name=\"toolbar\"></slot></template>\n      </content-editor>\n      <input v-bind=\"formFieldProps\" :value=\"markdown\" type=\"hidden\" />\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!./markdown_editor.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!./markdown_editor.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./markdown_editor.vue?vue&type=template&id=27f649d3\"\nimport script from \"./markdown_editor.vue?vue&type=script&lang=js\"\nexport * from \"./markdown_editor.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","function _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction processOptions(value) {\n  var options;\n\n  if (typeof value === 'function') {\n    // Simple options (callback-only)\n    options = {\n      callback: value\n    };\n  } else {\n    // Options object\n    options = value;\n  }\n\n  return options;\n}\nfunction throttle(callback, delay) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var timeout;\n  var lastState;\n  var currentArgs;\n\n  var throttled = function throttled(state) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    currentArgs = args;\n    if (timeout && state === lastState) return;\n    var leading = options.leading;\n\n    if (typeof leading === 'function') {\n      leading = leading(state, lastState);\n    }\n\n    if ((!timeout || state !== lastState) && leading) {\n      callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n    }\n\n    lastState = state;\n    clearTimeout(timeout);\n    timeout = setTimeout(function () {\n      callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n      timeout = 0;\n    }, delay);\n  };\n\n  throttled._clear = function () {\n    clearTimeout(timeout);\n    timeout = null;\n  };\n\n  return throttled;\n}\nfunction deepEqual(val1, val2) {\n  if (val1 === val2) return true;\n\n  if (_typeof(val1) === 'object') {\n    for (var key in val1) {\n      if (!deepEqual(val1[key], val2[key])) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  return false;\n}\n\nvar VisibilityState =\n/*#__PURE__*/\nfunction () {\n  function VisibilityState(el, options, vnode) {\n    _classCallCheck(this, VisibilityState);\n\n    this.el = el;\n    this.observer = null;\n    this.frozen = false;\n    this.createObserver(options, vnode);\n  }\n\n  _createClass(VisibilityState, [{\n    key: \"createObserver\",\n    value: function createObserver(options, vnode) {\n      var _this = this;\n\n      if (this.observer) {\n        this.destroyObserver();\n      }\n\n      if (this.frozen) return;\n      this.options = processOptions(options);\n\n      this.callback = function (result, entry) {\n        _this.options.callback(result, entry);\n\n        if (result && _this.options.once) {\n          _this.frozen = true;\n\n          _this.destroyObserver();\n        }\n      }; // Throttle\n\n\n      if (this.callback && this.options.throttle) {\n        var _ref = this.options.throttleOptions || {},\n            _leading = _ref.leading;\n\n        this.callback = throttle(this.callback, this.options.throttle, {\n          leading: function leading(state) {\n            return _leading === 'both' || _leading === 'visible' && state || _leading === 'hidden' && !state;\n          }\n        });\n      }\n\n      this.oldResult = undefined;\n      this.observer = new IntersectionObserver(function (entries) {\n        var entry = entries[0];\n\n        if (entries.length > 1) {\n          var intersectingEntry = entries.find(function (e) {\n            return e.isIntersecting;\n          });\n\n          if (intersectingEntry) {\n            entry = intersectingEntry;\n          }\n        }\n\n        if (_this.callback) {\n          // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n          var result = entry.isIntersecting && entry.intersectionRatio >= _this.threshold;\n          if (result === _this.oldResult) return;\n          _this.oldResult = result;\n\n          _this.callback(result, entry);\n        }\n      }, this.options.intersection); // Wait for the element to be in document\n\n      vnode.context.$nextTick(function () {\n        if (_this.observer) {\n          _this.observer.observe(_this.el);\n        }\n      });\n    }\n  }, {\n    key: \"destroyObserver\",\n    value: function destroyObserver() {\n      if (this.observer) {\n        this.observer.disconnect();\n        this.observer = null;\n      } // Cancel throttled call\n\n\n      if (this.callback && this.callback._clear) {\n        this.callback._clear();\n\n        this.callback = null;\n      }\n    }\n  }, {\n    key: \"threshold\",\n    get: function get() {\n      return this.options.intersection && typeof this.options.intersection.threshold === 'number' ? this.options.intersection.threshold : 0;\n    }\n  }]);\n\n  return VisibilityState;\n}();\n\nfunction bind(el, _ref2, vnode) {\n  var value = _ref2.value;\n  if (!value) return;\n\n  if (typeof IntersectionObserver === 'undefined') {\n    console.warn('[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill');\n  } else {\n    var state = new VisibilityState(el, value, vnode);\n    el._vue_visibilityState = state;\n  }\n}\n\nfunction update(el, _ref3, vnode) {\n  var value = _ref3.value,\n      oldValue = _ref3.oldValue;\n  if (deepEqual(value, oldValue)) return;\n  var state = el._vue_visibilityState;\n\n  if (!value) {\n    unbind(el);\n    return;\n  }\n\n  if (state) {\n    state.createObserver(value, vnode);\n  } else {\n    bind(el, {\n      value: value\n    }, vnode);\n  }\n}\n\nfunction unbind(el) {\n  var state = el._vue_visibilityState;\n\n  if (state) {\n    state.destroyObserver();\n    delete el._vue_visibilityState;\n  }\n}\n\nvar ObserveVisibility = {\n  bind: bind,\n  update: update,\n  unbind: unbind\n};\n\nfunction install(Vue) {\n  Vue.directive('observe-visibility', ObserveVisibility);\n  /* -- Add more components here -- */\n}\n/* -- Plugin definition & Auto-install -- */\n\n/* You shouldn't have to modify the code below */\n// Plugin\n\nvar plugin = {\n  // eslint-disable-next-line no-undef\n  version: \"1.0.0\",\n  install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n  GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n  GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n  GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { ObserveVisibility, install };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissFinding\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDismissalReason\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingDismiss\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFinding\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"id\"},\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stateTransitions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"toState\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":630}};\n    doc.loc.source = {\"body\":\"mutation dismissFinding(\\n  $uuid: String!\\n  $comment: String\\n  $dismissalReason: VulnerabilityDismissalReason\\n) {\\n  securityFindingDismiss(\\n    input: { uuid: $uuid, comment: $comment, dismissalReason: $dismissalReason }\\n  ) {\\n    errors\\n    securityFinding {\\n      id: uuid\\n      state\\n      dismissalReason\\n      vulnerability {\\n        id\\n        stateTransitions(last: 1) {\\n          nodes {\\n            author {\\n              id\\n              name\\n              username\\n              webUrl\\n            }\\n            id\\n            comment\\n            createdAt\\n            toState\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"dismissFinding\"] = oneQuery(doc, \"dismissFinding\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-dropdown',{ref:\"dropdown\",attrs:{\"text\":_vm.text},on:{\"toggle\":function($event){return _vm.$emit('toggle')},\"shown\":_vm.focusSearch},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('p',{staticClass:\"gl-mb-4 gl-mt-2 gl-text-center gl-font-bold\"},[_vm._v(_vm._s(_vm.headerText))]),_vm._v(\" \"),_c('gl-dropdown-divider'),_vm._v(\" \"),_c('gl-search-box-by-type',{ref:\"search\",attrs:{\"value\":_vm.search,\"data-testid\":\"user-search-input\"},on:{\"input\":_vm.debouncedSearchKeyUpdate}})]},proxy:true},{key:\"footer\",fn:function(){return [_vm._t(\"footer\")]},proxy:true}],null,true)},[_vm._v(\" \"),_c('gl-dropdown-form',{staticClass:\"gl-relative gl-min-h-7\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-absolute gl-left-0 gl-right-0 gl-top-0\",attrs:{\"data-testid\":\"loading-participants\",\"size\":\"md\"}}):[(_vm.shouldShowParticipants)?[(_vm.isSearchEmpty)?_c('gl-dropdown-item',{attrs:{\"is-checked\":_vm.selectedIsEmpty,\"is-check-centered\":\"\",\"data-testid\":\"unassign\"},nativeOn:{\"!click\":function($event){$event.stopPropagation();return _vm.unassign.apply(null, arguments)}}},[_c('span',{staticClass:\"gl-font-bold\",class:_vm.selectedIsEmpty ? 'gl-pl-0' : 'gl-pl-6'},[_vm._v(_vm._s(_vm.$options.i18n.unassigned))])]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.showDivider(_vm.selectedFiltered))?_c('gl-dropdown-divider'):_vm._e(),_vm._v(\" \"),_vm._l((_vm.selectedFiltered),function(item){return _c('gl-dropdown-item',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],key:item.id,attrs:{\"title\":_vm.tooltipText(item),\"boundary\":\"viewport\",\"is-checked\":\"\",\"is-check-centered\":\"\",\"data-testid\":\"selected-participant\"},nativeOn:{\"!click\":function($event){$event.stopPropagation();return _vm.unselect(item.username)}}},[_c('sidebar-participant',{attrs:{\"user\":item,\"issuable-type\":_vm.issuableType,\"selected\":\"\"}})],1)}),_vm._v(\" \"),(_vm.showCurrentUser)?[_c('gl-dropdown-divider'),_vm._v(\" \"),_c('gl-dropdown-item',{attrs:{\"data-testid\":\"current-user\"},nativeOn:{\"!click\":function($event){$event.stopPropagation();return _vm.selectAssignee(_vm.currentUser)}}},[_c('sidebar-participant',{staticClass:\"!gl-pl-6\",attrs:{\"user\":_vm.currentUser,\"issuable-type\":_vm.issuableType}})],1)]:_vm._e(),_vm._v(\" \"),(_vm.showAuthor)?_c('gl-dropdown-item',{attrs:{\"data-testid\":\"issuable-author\"},nativeOn:{\"!click\":function($event){$event.stopPropagation();return _vm.selectAssignee(_vm.issuableAuthor)}}},[_c('sidebar-participant',{staticClass:\"!gl-pl-6\",attrs:{\"user\":_vm.issuableAuthor,\"issuable-type\":_vm.issuableType}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.unselectedFiltered),function(unselectedUser){return _c('gl-dropdown-item',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],key:unselectedUser.id,attrs:{\"title\":_vm.tooltipText(unselectedUser),\"boundary\":\"viewport\",\"data-testid\":\"unselected-participant\"},nativeOn:{\"!click\":function($event){$event.stopPropagation();return _vm.selectAssignee(unselectedUser)}}},[_c('sidebar-participant',{staticClass:\"!gl-pl-6\",attrs:{\"user\":unselectedUser,\"issuable-type\":_vm.issuableType}})],1)}),_vm._v(\" \"),(_vm.noUsersFound)?_c('gl-dropdown-item',{staticClass:\"!gl-pl-6\",attrs:{\"data-testid\":\"empty-results\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('No matching results'))+\"\\n      \")]):_vm._e()]],2)],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!./user_select.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user_select.vue?vue&type=script&lang=js\"","<script>\nimport { debounce } from 'lodash';\nimport {\n  GlDropdown,\n  GlDropdownDivider,\n  GlDropdownForm,\n  GlDropdownItem,\n  GlLoadingIcon,\n  GlSearchBoxByType,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport SidebarParticipant from '~/sidebar/components/assignees/sidebar_participant.vue';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { participantsQueries, userSearchQueries } from '~/sidebar/queries/constants';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\n\nexport default {\n  i18n: {\n    unassigned: __('Unassigned'),\n  },\n  components: {\n    GlDropdownForm,\n    GlDropdown,\n    GlDropdownDivider,\n    GlDropdownItem,\n    GlSearchBoxByType,\n    SidebarParticipant,\n    GlLoadingIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    headerText: {\n      type: String,\n      required: true,\n    },\n    text: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    iid: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    value: {\n      type: Array,\n      required: true,\n    },\n    allowMultipleAssignees: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    currentUser: {\n      type: Object,\n      required: true,\n    },\n    issuableType: {\n      type: String,\n      required: false,\n      default: TYPE_ISSUE,\n    },\n    isEditing: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    issuableId: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n    issuableAuthor: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      search: '',\n      participants: [],\n      searchUsers: [],\n      isSearching: false,\n    };\n  },\n  apollo: {\n    participants: {\n      query() {\n        return participantsQueries[this.issuableType].query;\n      },\n      skip() {\n        return (\n          Boolean(participantsQueries[this.issuableType].skipQuery) || !this.isEditing || !this.iid\n        );\n      },\n      variables() {\n        return {\n          iid: this.iid,\n          fullPath: this.fullPath,\n          getStatus: true,\n        };\n      },\n      update(data) {\n        return data.workspace?.issuable?.participants.nodes.map((node) => ({\n          ...node,\n          canMerge: false,\n        }));\n      },\n      error() {\n        this.$emit('error');\n      },\n    },\n    searchUsers: {\n      query() {\n        return userSearchQueries[this.issuableType].query;\n      },\n      variables() {\n        return this.searchUsersVariables;\n      },\n      skip() {\n        return !this.isEditing;\n      },\n      update(data) {\n        return (\n          data.workspace?.users\n            .filter((user) => user)\n            .map((user) => ({\n              ...user,\n              canMerge: user.mergeRequestInteraction?.canMerge || false,\n            })) || []\n        );\n      },\n      error() {\n        this.$emit('error');\n        this.isSearching = false;\n      },\n      result() {\n        this.isSearching = false;\n      },\n    },\n  },\n  computed: {\n    isMergeRequest() {\n      return this.issuableType === TYPE_MERGE_REQUEST;\n    },\n    searchUsersVariables() {\n      const variables = {\n        fullPath: this.fullPath,\n        search: this.search,\n        first: 20,\n      };\n      if (!this.isMergeRequest) {\n        return variables;\n      }\n      return {\n        ...variables,\n        mergeRequestId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.issuableId),\n      };\n    },\n    isLoading() {\n      return this.$apollo.queries.searchUsers.loading || this.$apollo.queries.participants.loading;\n    },\n    users() {\n      const filteredParticipants =\n        this.participants?.filter(\n          (user) => user.name.includes(this.search) || user.username.includes(this.search),\n        ) || [];\n\n      // TODO this de-duplication is temporary (BE fix required)\n      // https://gitlab.com/gitlab-org/gitlab/-/issues/327822\n      const mergedSearchResults = this.searchUsers\n        .concat(filteredParticipants)\n        .reduce(\n          (acc, current) => (acc.some((user) => current.id === user.id) ? acc : [...acc, current]),\n          [],\n        );\n\n      return this.moveCurrentUserAndAuthorToStart(mergedSearchResults);\n    },\n    isSearchEmpty() {\n      return this.search === '';\n    },\n    shouldShowParticipants() {\n      return this.isSearchEmpty || this.isSearching;\n    },\n    isCurrentUserInList() {\n      const isCurrentUser = (user) => user.username === this.currentUser.username;\n      return this.users.some(isCurrentUser);\n    },\n    noUsersFound() {\n      return !this.isSearchEmpty && this.users.length === 0;\n    },\n    showCurrentUser() {\n      return this.currentUser.username && !this.isCurrentUserInList && this.isSearchEmpty;\n    },\n    showAuthor() {\n      return (\n        this.issuableAuthor &&\n        !this.users.some((user) => user.id === this.issuableAuthor.id) &&\n        this.isSearchEmpty\n      );\n    },\n    selectedFiltered() {\n      if (this.shouldShowParticipants) {\n        return this.moveCurrentUserAndAuthorToStart(this.value);\n      }\n\n      const foundUsernames = this.users.map(({ username }) => username);\n      const filtered = this.value.filter(({ username }) => foundUsernames.includes(username));\n      return this.moveCurrentUserAndAuthorToStart(filtered);\n    },\n    selectedUserNames() {\n      return this.value.map(({ username }) => username);\n    },\n    unselectedFiltered() {\n      return this.users?.filter(({ username }) => !this.selectedUserNames.includes(username)) || [];\n    },\n    selectedIsEmpty() {\n      return this.selectedFiltered.length === 0;\n    },\n  },\n\n  watch: {\n    // We need to add this watcher to track the moment when user is alredy typing\n    // but query is still not started due to debounce\n    search(newVal) {\n      if (newVal) {\n        this.isSearching = true;\n      }\n    },\n  },\n  created() {\n    this.debouncedSearchKeyUpdate = debounce(this.setSearchKey, DEFAULT_DEBOUNCE_AND_THROTTLE_MS);\n  },\n  methods: {\n    selectAssignee(user) {\n      let selected = [...this.value];\n      if (!this.allowMultipleAssignees) {\n        selected = [user];\n        this.$emit('input', selected);\n        this.$refs.dropdown.hide();\n        this.$emit('toggle');\n      } else {\n        selected.push(user);\n        this.$emit('input', selected);\n      }\n      this.clearAndFocusSearch();\n    },\n    unassign() {\n      this.$emit('input', []);\n      this.$refs.dropdown.hide();\n    },\n    unselect(name) {\n      const selected = this.value.filter((user) => user.username !== name);\n      this.$emit('input', selected);\n      this.clearAndFocusSearch();\n    },\n    focusSearch() {\n      this.$refs.search.focusInput();\n    },\n    showDropdown() {\n      this.$refs.dropdown.show();\n    },\n    showDivider(list) {\n      return list.length > 0 && this.isSearchEmpty;\n    },\n    moveCurrentUserAndAuthorToStart(users = []) {\n      let sortedUsers = [...users];\n\n      const author = sortedUsers.find((user) => user.id === this.issuableAuthor?.id);\n      if (author) {\n        sortedUsers = [author, ...sortedUsers.filter((user) => user.id !== author.id)];\n      }\n\n      const currentUser = sortedUsers.find((user) => user.username === this.currentUser.username);\n\n      if (currentUser) {\n        currentUser.canMerge = this.currentUser.canMerge;\n        sortedUsers = [currentUser, ...sortedUsers.filter((user) => user.id !== currentUser.id)];\n      }\n\n      return sortedUsers;\n    },\n    setSearchKey(value) {\n      this.search = value.trim();\n    },\n    tooltipText(user) {\n      if (!this.isMergeRequest) {\n        return '';\n      }\n      return user.canMerge ? '' : __('Cannot merge');\n    },\n    clearAndFocusSearch() {\n      this.search = '';\n      this.focusSearch();\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-dropdown ref=\"dropdown\" :text=\"text\" @toggle=\"$emit('toggle')\" @shown=\"focusSearch\">\n    <template #header>\n      <p class=\"gl-mb-4 gl-mt-2 gl-text-center gl-font-bold\">{{ headerText }}</p>\n      <gl-dropdown-divider />\n      <gl-search-box-by-type\n        ref=\"search\"\n        :value=\"search\"\n        data-testid=\"user-search-input\"\n        @input=\"debouncedSearchKeyUpdate\"\n      />\n    </template>\n    <gl-dropdown-form class=\"gl-relative gl-min-h-7\">\n      <gl-loading-icon\n        v-if=\"isLoading\"\n        data-testid=\"loading-participants\"\n        size=\"md\"\n        class=\"gl-absolute gl-left-0 gl-right-0 gl-top-0\"\n      />\n      <template v-else>\n        <template v-if=\"shouldShowParticipants\">\n          <gl-dropdown-item\n            v-if=\"isSearchEmpty\"\n            :is-checked=\"selectedIsEmpty\"\n            is-check-centered\n            data-testid=\"unassign\"\n            @click.capture.native.stop=\"unassign\"\n          >\n            <span :class=\"selectedIsEmpty ? 'gl-pl-0' : 'gl-pl-6'\" class=\"gl-font-bold\">{{\n              $options.i18n.unassigned\n            }}</span>\n          </gl-dropdown-item>\n        </template>\n        <gl-dropdown-divider v-if=\"showDivider(selectedFiltered)\" />\n        <gl-dropdown-item\n          v-for=\"item in selectedFiltered\"\n          :key=\"item.id\"\n          v-gl-tooltip.left.viewport\n          :title=\"tooltipText(item)\"\n          boundary=\"viewport\"\n          is-checked\n          is-check-centered\n          data-testid=\"selected-participant\"\n          @click.capture.native.stop=\"unselect(item.username)\"\n        >\n          <sidebar-participant :user=\"item\" :issuable-type=\"issuableType\" selected />\n        </gl-dropdown-item>\n        <template v-if=\"showCurrentUser\">\n          <gl-dropdown-divider />\n          <gl-dropdown-item\n            data-testid=\"current-user\"\n            @click.capture.native.stop=\"selectAssignee(currentUser)\"\n          >\n            <sidebar-participant\n              :user=\"currentUser\"\n              :issuable-type=\"issuableType\"\n              class=\"!gl-pl-6\"\n            />\n          </gl-dropdown-item>\n        </template>\n        <gl-dropdown-item\n          v-if=\"showAuthor\"\n          data-testid=\"issuable-author\"\n          @click.capture.native.stop=\"selectAssignee(issuableAuthor)\"\n        >\n          <sidebar-participant\n            :user=\"issuableAuthor\"\n            :issuable-type=\"issuableType\"\n            class=\"!gl-pl-6\"\n          />\n        </gl-dropdown-item>\n        <gl-dropdown-item\n          v-for=\"unselectedUser in unselectedFiltered\"\n          :key=\"unselectedUser.id\"\n          v-gl-tooltip.left.viewport\n          :title=\"tooltipText(unselectedUser)\"\n          boundary=\"viewport\"\n          data-testid=\"unselected-participant\"\n          @click.capture.native.stop=\"selectAssignee(unselectedUser)\"\n        >\n          <sidebar-participant\n            :user=\"unselectedUser\"\n            :issuable-type=\"issuableType\"\n            class=\"!gl-pl-6\"\n          />\n        </gl-dropdown-item>\n        <gl-dropdown-item v-if=\"noUsersFound\" data-testid=\"empty-results\" class=\"!gl-pl-6\">\n          {{ __('No matching results') }}\n        </gl-dropdown-item>\n      </template>\n    </gl-dropdown-form>\n    <template #footer>\n      <slot name=\"footer\"></slot>\n    </template>\n  </gl-dropdown>\n</template>\n","import { render, staticRenderFns } from \"./user_select.vue?vue&type=template&id=64c3c52b\"\nimport script from \"./user_select.vue?vue&type=script&lang=js\"\nexport * from \"./user_select.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.resolvableDiscussionsCount > 0)?_c('div',{ref:\"discussionCounter\",staticClass:\"discussions-counter gl-flex\",attrs:{\"id\":\"discussionCounter\"}},[_c('div',{staticClass:\"gl-flex gl-min-h-7 gl-items-center gl-rounded-base gl-pl-4\",class:{\n      'gl-bg-orange-50': _vm.blocksMerge && !_vm.allResolved,\n      'gl-bg-gray-50': !_vm.blocksMerge || _vm.allResolved,\n      'gl-mr-3': !_vm.isNotificationsTodosButtons,\n      'gl-mr-5': _vm.isNotificationsTodosButtons,\n    },attrs:{\"data-testid\":\"discussions-counter-text\"}},[(_vm.allResolved)?[_vm._v(\"\\n      \"+_vm._s(_vm.__('All threads resolved!'))+\"\\n      \"),_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-3 gl-h-full !gl-rounded-base !gl-pt-0\",attrs:{\"icon\":\"ellipsis_v\",\"size\":\"small\",\"category\":\"tertiary\",\"placement\":\"bottom-end\",\"no-caret\":\"\",\"title\":_vm.__('Thread options'),\"aria-label\":_vm.__('Thread options'),\"toggle-class\":\"btn-icon\",\"items\":_vm.threadOptions}})]:[_vm._v(\"\\n      \"+_vm._s(_vm.n__('%d unresolved thread', '%d unresolved threads', _vm.unresolvedDiscussionsCount))+\"\\n      \"),_c('gl-button-group',{staticClass:\"gl-ml-3\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.html\",value:(_vm.previousUnresolvedDiscussionTooltip),expression:\"previousUnresolvedDiscussionTooltip\",modifiers:{\"html\":true}}],staticClass:\"discussion-previous-btn !gl-rounded-base !gl-px-2\",attrs:{\"aria-label\":_vm.previousUnresolvedDiscussionTitle,\"aria-keyshortcuts\":_vm.previousUnresolvedDiscussionShortcutKey,\"data-track-action\":\"click_button\",\"data-track-label\":\"mr_previous_unresolved_thread\",\"data-track-property\":\"click_previous_unresolved_thread_top\",\"icon\":\"chevron-lg-up\",\"category\":\"tertiary\"},on:{\"click\":_vm.jumpPrevious}}),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.html\",value:(_vm.nextUnresolvedDiscussionTooltip),expression:\"nextUnresolvedDiscussionTooltip\",modifiers:{\"html\":true}}],staticClass:\"discussion-next-btn !gl-rounded-base !gl-px-2\",attrs:{\"aria-label\":_vm.nextUnresolvedDiscussionTitle,\"aria-keyshortcuts\":_vm.nextUnresolvedDiscussionShortcutKey,\"data-track-action\":\"click_button\",\"data-track-label\":\"mr_next_unresolved_thread\",\"data-track-property\":\"click_next_unresolved_thread_top\",\"icon\":\"chevron-lg-down\",\"category\":\"tertiary\"},on:{\"click\":_vm.jumpNext}}),_vm._v(\" \"),_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"!gl-rounded-base !gl-pt-0\",attrs:{\"icon\":\"ellipsis_v\",\"size\":\"small\",\"category\":\"tertiary\",\"placement\":\"bottom-end\",\"no-caret\":\"\",\"title\":_vm.__('Thread options'),\"aria-label\":_vm.__('Thread options'),\"toggle-class\":\"btn-icon\",\"items\":_vm.threadOptions}})],1)]],2)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./discussion_counter.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!./discussion_counter.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlButtonGroup, GlDisclosureDropdown, GlTooltipDirective } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters } from 'vuex';\nimport { throttle } from 'lodash';\nimport { __ } from '~/locale';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport {\n  keysFor,\n  MR_NEXT_UNRESOLVED_DISCUSSION,\n  MR_PREVIOUS_UNRESOLVED_DISCUSSION,\n} from '~/behaviors/shortcuts/keybindings';\nimport { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';\nimport { sanitize } from '~/lib/dompurify';\nimport discussionNavigation from '../mixins/discussion_navigation';\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlDisclosureDropdown,\n    GlButton,\n    GlButtonGroup,\n  },\n  mixins: [glFeatureFlagsMixin(), discussionNavigation],\n  props: {\n    blocksMerge: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      jumpNext: throttle(this.jumpToNextDiscussion, 500),\n      jumpPrevious: throttle(this.jumpToPreviousDiscussion, 500),\n    };\n  },\n  computed: {\n    ...mapGetters([\n      'getNoteableData',\n      'resolvableDiscussionsCount',\n      'unresolvedDiscussionsCount',\n      'allResolvableDiscussions',\n      'allVisibleDiscussionsExpanded',\n    ]),\n    allResolved() {\n      return this.unresolvedDiscussionsCount === 0;\n    },\n    toggleThreadsLabel() {\n      return !this.allVisibleDiscussionsExpanded\n        ? __('Show all comments')\n        : __('Hide all comments');\n    },\n    nextUnresolvedDiscussionShortcutKey() {\n      return shouldDisableShortcuts() ? null : keysFor(MR_NEXT_UNRESOLVED_DISCUSSION)[0];\n    },\n    nextUnresolvedDiscussionTitle() {\n      return MR_NEXT_UNRESOLVED_DISCUSSION.description;\n    },\n    nextUnresolvedDiscussionTooltip() {\n      const description = this.nextUnresolvedDiscussionTitle;\n      const key = this.nextUnresolvedDiscussionShortcutKey;\n      return shouldDisableShortcuts()\n        ? description\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`);\n    },\n    previousUnresolvedDiscussionShortcutKey() {\n      return shouldDisableShortcuts() ? null : keysFor(MR_PREVIOUS_UNRESOLVED_DISCUSSION)[0];\n    },\n    previousUnresolvedDiscussionTitle() {\n      return MR_PREVIOUS_UNRESOLVED_DISCUSSION.description;\n    },\n    previousUnresolvedDiscussionTooltip() {\n      const description = this.previousUnresolvedDiscussionTitle;\n      const key = this.previousUnresolvedDiscussionShortcutKey;\n      return shouldDisableShortcuts()\n        ? description\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`);\n    },\n    resolveAllDiscussionsIssuePath() {\n      return this.getNoteableData.create_issue_to_resolve_discussions_path;\n    },\n    threadOptions() {\n      const options = [\n        {\n          text: this.toggleThreadsLabel,\n          action: this.toggleAllVisibleDiscussions,\n          extraAttrs: {\n            'data-testid': 'toggle-all-discussions-btn',\n          },\n        },\n      ];\n\n      if (this.resolveAllDiscussionsIssuePath && !this.allResolved) {\n        options.push({\n          text: __('Resolve all with new issue'),\n          href: this.resolveAllDiscussionsIssuePath,\n          extraAttrs: {\n            'data-testid': 'resolve-all-with-issue-link',\n          },\n        });\n      }\n\n      return options;\n    },\n    isNotificationsTodosButtons() {\n      return this.glFeatures.notificationsTodosButtons;\n    },\n  },\n  methods: {\n    ...mapActions(['toggleAllVisibleDiscussions']),\n  },\n};\n</script>\n\n<template>\n  <div\n    v-if=\"resolvableDiscussionsCount > 0\"\n    id=\"discussionCounter\"\n    ref=\"discussionCounter\"\n    class=\"discussions-counter gl-flex\"\n  >\n    <div\n      class=\"gl-flex gl-min-h-7 gl-items-center gl-rounded-base gl-pl-4\"\n      :class=\"{\n        'gl-bg-orange-50': blocksMerge && !allResolved,\n        'gl-bg-gray-50': !blocksMerge || allResolved,\n        'gl-mr-3': !isNotificationsTodosButtons,\n        'gl-mr-5': isNotificationsTodosButtons,\n      }\"\n      data-testid=\"discussions-counter-text\"\n    >\n      <template v-if=\"allResolved\">\n        {{ __('All threads resolved!') }}\n        <gl-disclosure-dropdown\n          v-gl-tooltip\n          icon=\"ellipsis_v\"\n          size=\"small\"\n          category=\"tertiary\"\n          placement=\"bottom-end\"\n          no-caret\n          :title=\"__('Thread options')\"\n          :aria-label=\"__('Thread options')\"\n          toggle-class=\"btn-icon\"\n          class=\"gl-ml-3 gl-h-full !gl-rounded-base !gl-pt-0\"\n          :items=\"threadOptions\"\n        />\n      </template>\n      <template v-else>\n        {{ n__('%d unresolved thread', '%d unresolved threads', unresolvedDiscussionsCount) }}\n        <gl-button-group class=\"gl-ml-3\">\n          <gl-button\n            v-gl-tooltip.html=\"previousUnresolvedDiscussionTooltip\"\n            :aria-label=\"previousUnresolvedDiscussionTitle\"\n            :aria-keyshortcuts=\"previousUnresolvedDiscussionShortcutKey\"\n            class=\"discussion-previous-btn !gl-rounded-base !gl-px-2\"\n            data-track-action=\"click_button\"\n            data-track-label=\"mr_previous_unresolved_thread\"\n            data-track-property=\"click_previous_unresolved_thread_top\"\n            icon=\"chevron-lg-up\"\n            category=\"tertiary\"\n            @click=\"jumpPrevious\"\n          />\n          <gl-button\n            v-gl-tooltip.html=\"nextUnresolvedDiscussionTooltip\"\n            :aria-label=\"nextUnresolvedDiscussionTitle\"\n            :aria-keyshortcuts=\"nextUnresolvedDiscussionShortcutKey\"\n            class=\"discussion-next-btn !gl-rounded-base !gl-px-2\"\n            data-track-action=\"click_button\"\n            data-track-label=\"mr_next_unresolved_thread\"\n            data-track-property=\"click_next_unresolved_thread_top\"\n            icon=\"chevron-lg-down\"\n            category=\"tertiary\"\n            @click=\"jumpNext\"\n          />\n          <gl-disclosure-dropdown\n            v-gl-tooltip\n            icon=\"ellipsis_v\"\n            size=\"small\"\n            category=\"tertiary\"\n            placement=\"bottom-end\"\n            no-caret\n            :title=\"__('Thread options')\"\n            :aria-label=\"__('Thread options')\"\n            toggle-class=\"btn-icon\"\n            class=\"!gl-rounded-base !gl-pt-0\"\n            :items=\"threadOptions\"\n          />\n        </gl-button-group>\n      </template>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./discussion_counter.vue?vue&type=template&id=648c7cb8\"\nimport script from \"./discussion_counter.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_counter.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 { parseBoolean, getCookie } from '~/lib/utils/common_utils';\nimport mrNotes from '~/mr_notes/stores';\nimport { getLocationHash, getParameterValues } from '~/lib/utils/url_utility';\nimport eventHub from '~/notes/event_hub';\nimport { initReviewBar } from '~/batch_comments';\nimport { initDiscussionCounter } from '~/mr_notes/discussion_counter';\nimport { initOverviewTabCounter } from '~/mr_notes/init_count';\nimport { getDerivedMergeRequestInformation } from '~/diffs/utils/merge_request';\nimport { getReviewsForMergeRequest } from '~/diffs/utils/file_reviews';\nimport { DIFF_VIEW_COOKIE_NAME, INLINE_DIFF_VIEW_TYPE } from '~/diffs/constants';\n\nfunction setupMrNotesState(store, notesDataset, diffsDataset) {\n  const noteableData = JSON.parse(notesDataset.noteableData);\n  noteableData.noteableType = notesDataset.noteableType;\n  noteableData.targetType = notesDataset.targetType;\n  noteableData.discussion_locked = parseBoolean(notesDataset.isLocked);\n  const notesData = JSON.parse(notesDataset.notesData);\n  const currentUserData = JSON.parse(notesDataset.currentUserData);\n  const endpoints = { metadata: notesDataset.endpointMetadata };\n\n  const { mrPath } = getDerivedMergeRequestInformation({ endpoint: diffsDataset.endpoint });\n\n  store.dispatch('setNotesData', notesData);\n  store.dispatch('setNoteableData', noteableData);\n  store.dispatch('setUserData', currentUserData);\n  store.dispatch('setTargetNoteHash', getLocationHash());\n  store.dispatch('setEndpoints', endpoints);\n  store.dispatch('diffs/setBaseConfig', {\n    endpoint: diffsDataset.endpoint,\n    endpointMetadata: diffsDataset.endpointMetadata,\n    endpointBatch: diffsDataset.endpointBatch,\n    endpointDiffForPath: diffsDataset.endpointDiffForPath,\n    endpointCoverage: diffsDataset.endpointCoverage,\n    endpointUpdateUser: diffsDataset.updateCurrentUserPath,\n    projectPath: diffsDataset.projectPath,\n    dismissEndpoint: diffsDataset.dismissEndpoint,\n    showSuggestPopover: parseBoolean(diffsDataset.showSuggestPopover),\n    viewDiffsFileByFile: parseBoolean(diffsDataset.fileByFileDefault),\n    defaultSuggestionCommitMessage: diffsDataset.defaultSuggestionCommitMessage,\n    mrReviews: getReviewsForMergeRequest(mrPath),\n    diffViewType:\n      getParameterValues('view')[0] || getCookie(DIFF_VIEW_COOKIE_NAME) || INLINE_DIFF_VIEW_TYPE,\n    perPage: Number(diffsDataset.perPage),\n  });\n}\n\nexport function initMrStateLazyLoad(store = mrNotes, { reviewBarParams } = {}) {\n  store.dispatch('setActiveTab', window.mrTabs.getCurrentAction());\n  window.mrTabs.eventHub.$on('MergeRequestTabChange', (value) =>\n    store.dispatch('setActiveTab', value),\n  );\n\n  const discussionsEl = document.getElementById('js-vue-mr-discussions');\n  const diffsEl = document.getElementById('js-diffs-app');\n\n  let stop = () => {};\n  stop = store.watch(\n    (state) => state.page.activeTab,\n    (activeTab) => {\n      setupMrNotesState(store, discussionsEl.dataset, diffsEl.dataset);\n\n      // prevent loading MR state on commits and pipelines pages\n      // this is due to them having a shared controller with the Overview page\n      if (['diffs', 'show'].includes(activeTab)) {\n        eventHub.$once('fetchNotesData', () => store.dispatch('fetchNotes'));\n\n        requestIdleCallback(() => {\n          initReviewBar(reviewBarParams);\n          initOverviewTabCounter();\n          initDiscussionCounter();\n        });\n        stop();\n      }\n    },\n    { immediate: true },\n  );\n}\n","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters } from 'vuex';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport { apolloProvider } from '~/graphql_shared/issuable_client';\nimport store from '~/mr_notes/stores';\n\nexport const initReviewBar = () => {\n  const el = document.getElementById('js-review-bar');\n\n  if (!el) return;\n\n  Vue.use(VueApollo);\n\n  // eslint-disable-next-line no-new\n  new Vue({\n    el,\n    store,\n    apolloProvider,\n    components: {\n      ReviewBar: () => import('./components/review_bar.vue'),\n    },\n    provide: {\n      newCommentTemplatePaths: JSON.parse(el.dataset.newCommentTemplatePaths),\n      canSummarize: parseBoolean(el.dataset.canSummarize),\n    },\n    computed: {\n      ...mapGetters('batchComments', ['draftsCount']),\n    },\n    mounted() {\n      this.fetchDrafts();\n    },\n    methods: {\n      ...mapActions('batchComments', ['fetchDrafts']),\n    },\n    render(createElement) {\n      if (this.draftsCount === 0) return null;\n\n      return createElement('review-bar');\n    },\n  });\n};\n","import store from '~/mr_notes/stores';\n\nexport function initOverviewTabCounter() {\n  const discussionsCount = document.querySelector('.js-discussions-count');\n  store.watch(\n    (state, getters) => getters.discussionTabCounter,\n    (val) => {\n      if (typeof val !== 'undefined') {\n        discussionsCount.textContent = val;\n      }\n    },\n  );\n}\n","import Vue from 'vue';\nimport DiscussionCounter from '~/notes/components/discussion_counter.vue';\nimport store from '~/mr_notes/stores';\n\nexport function initDiscussionCounter() {\n  const el = document.getElementById('js-vue-discussion-counter');\n\n  if (el) {\n    const { blocksMerge } = el.dataset;\n\n    // eslint-disable-next-line no-new\n    new Vue({\n      el,\n      name: 'DiscussionCounter',\n      components: {\n        DiscussionCounter,\n      },\n      store,\n      render(createElement) {\n        return createElement('discussion-counter', {\n          props: {\n            blocksMerge: blocksMerge === 'true',\n          },\n        });\n      },\n    });\n  }\n}\n","import initMrNotes from '~/mr_notes/init_mr_notes';\n\nexport default () => {\n  initMrNotes();\n};\n","import initCherryPickCommitModal from '~/projects/commit/init_cherry_pick_commit_modal';\nimport initRevertCommitModal from '~/projects/commit/init_revert_commit_modal';\nimport { initMrStateLazyLoad } from '~/mr_notes/init';\nimport MergeRequest from '../merge_request';\nimport { resetServiceWorkersPublicPath } from '../lib/utils/webpack';\n\nexport default function initMrNotes(lazyLoadParams) {\n  resetServiceWorkersPublicPath();\n\n  const mrShowNode = document.querySelector('.merge-request');\n  // eslint-disable-next-line no-new\n  new MergeRequest({\n    action: mrShowNode.dataset.mrAction,\n  });\n\n  initMrStateLazyLoad(undefined, lazyLoadParams);\n\n  document.addEventListener('merged:UpdateActions', () => {\n    initRevertCommitModal('i_code_review_post_merge_submit_revert_modal');\n    initCherryPickCommitModal('i_code_review_post_merge_submit_cherry_pick_modal');\n  });\n}\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sticky_header.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!./sticky_header.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlIntersectionObserver,\n  GlLink,\n  GlSprintf,\n  GlBadge,\n  GlIcon,\n  GlTooltipDirective,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapState } from 'vuex';\nimport { __ } from '~/locale';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';\nimport { sanitize } from '~/lib/dompurify';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { isLoggedIn } from '~/lib/utils/common_utils';\nimport StatusBadge from '~/issuable/components/status_badge.vue';\nimport ImportedBadge from '~/vue_shared/components/imported_badge.vue';\nimport { TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport DiscussionCounter from '~/notes/components/discussion_counter.vue';\nimport TodoWidget from '~/sidebar/components/todo_toggle/sidebar_todo_widget.vue';\nimport SubscriptionsWidget from '~/sidebar/components/subscriptions/sidebar_subscriptions_widget.vue';\nimport ClipboardButton from '~/vue_shared/components/clipboard_button.vue';\nimport titleSubscription from '../queries/title.subscription.graphql';\nimport { badgeState } from './merge_request_header.vue';\n\nexport default {\n  TYPE_MERGE_REQUEST,\n  apollo: {\n    $subscribe: {\n      // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n      title: {\n        query() {\n          return titleSubscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return !this.issuableId;\n        },\n        result({ data: { mergeRequestMergeStatusUpdated } }) {\n          if (mergeRequestMergeStatusUpdated) {\n            this.titleHtml = mergeRequestMergeStatusUpdated.titleHtml;\n          }\n        },\n      },\n    },\n  },\n  components: {\n    GlIntersectionObserver,\n    GlLink,\n    GlSprintf,\n    GlBadge,\n    GlIcon,\n    DiscussionCounter,\n    StatusBadge,\n    ImportedBadge,\n    TodoWidget,\n    SubscriptionsWidget,\n    ClipboardButton,\n  },\n  directives: {\n    SafeHtml,\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  inject: {\n    defaultBranchName: { default: '' },\n    projectPath: { default: null },\n    sourceProjectPath: { default: null },\n    title: { default: '' },\n    isFluidLayout: { default: false },\n    blocksMerge: { default: false },\n  },\n  props: {\n    isImported: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    tabs: {\n      type: Array,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      isStickyHeaderVisible: false,\n      discussionCounter: 0,\n      titleHtml: this.title,\n    };\n  },\n  computed: {\n    ...mapGetters(['getNoteableData', 'discussionTabCounter']),\n    ...mapState({\n      activeTab: (state) => state.page.activeTab,\n      doneFetchingBatchDiscussions: (state) => state.notes.doneFetchingBatchDiscussions,\n    }),\n    badgeState() {\n      return badgeState;\n    },\n    issuableId() {\n      return convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.getNoteableData.id);\n    },\n    issuableIid() {\n      return `${this.getNoteableData.iid}`;\n    },\n    isSignedIn() {\n      return isLoggedIn();\n    },\n    isNotificationsTodosButtons() {\n      return this.glFeatures.notificationsTodosButtons;\n    },\n    isForked() {\n      return this.projectPath !== this.sourceProjectPath;\n    },\n    sourceBranch() {\n      if (this.isForked) {\n        return `${this.sourceProjectPath}:${this.getNoteableData.source_branch}`;\n      }\n\n      return this.getNoteableData.source_branch;\n    },\n    copySourceBranchTooltip() {\n      const description = __('Copy branch name');\n      return shouldDisableShortcuts()\n        ? description\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>b</kbd>`);\n    },\n    shouldShowTargetCopyButton() {\n      return this.getNoteableData.target_branch !== this.defaultBranchName;\n    },\n  },\n  watch: {\n    discussionTabCounter(val) {\n      if (this.doneFetchingBatchDiscussions) {\n        this.discussionCounter = val;\n      }\n    },\n  },\n  methods: {\n    setStickyHeaderVisible(val) {\n      this.isStickyHeaderVisible = val;\n    },\n    visitTab(e) {\n      window.mrTabs?.clickTab(e);\n    },\n  },\n  safeHtmlConfig: {\n    ADD_TAGS: ['gl-emoji'],\n  },\n};\n</script>\n\n<template>\n  <gl-intersection-observer\n    class=\"gl-relative -gl-top-5\"\n    @appear=\"setStickyHeaderVisible(false)\"\n    @disappear=\"setStickyHeaderVisible(true)\"\n  >\n    <div\n      class=\"issue-sticky-header merge-request-sticky-header gl-border-b gl-fixed gl-hidden gl-flex-col gl-justify-end gl-bg-default md:gl-flex\"\n      :class=\"{ 'gl-invisible': !isStickyHeaderVisible }\"\n    >\n      <div\n        class=\"issue-sticky-header-text gl-mx-auto gl-flex gl-w-full gl-flex-col gl-items-center\"\n        :class=\"{ 'container-limited': !isFluidLayout }\"\n      >\n        <div class=\"gl-flex gl-w-full gl-items-center gl-gap-2\">\n          <status-badge :issuable-type=\"$options.TYPE_MERGE_REQUEST\" :state=\"badgeState.state\" />\n          <imported-badge v-if=\"isImported\" :importable-type=\"$options.TYPE_MERGE_REQUEST\" />\n          <a\n            v-safe-html:[$options.safeHtmlConfig]=\"titleHtml\"\n            href=\"#top\"\n            class=\"gl-my-0 gl-ml-1 gl-mr-2 gl-hidden gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap gl-font-bold gl-text-default lg:gl-block\"\n          ></a>\n          <div class=\"gl-flex gl-items-center\">\n            <gl-sprintf :message=\"__('%{source} %{copyButton} into %{target} %{targetCopyButton}')\">\n              <template #copyButton>\n                <clipboard-button\n                  tooltip-placement=\"bottom\"\n                  :title=\"copySourceBranchTooltip\"\n                  :text=\"getNoteableData.source_branch\"\n                  size=\"small\"\n                  category=\"tertiary\"\n                  class=\"js-source-branch-copy gl-mx-1\"\n                />\n              </template>\n              <template #source>\n                <gl-link\n                  :title=\"getNoteableData.source_branch\"\n                  :href=\"getNoteableData.source_branch_path\"\n                  class=\"ref-container gl-mt-2 gl-max-w-26 gl-truncate gl-rounded-base gl-px-2 gl-text-sm gl-font-monospace\"\n                  data-testid=\"source-branch\"\n                >\n                  <span\n                    v-if=\"isForked\"\n                    v-gl-tooltip\n                    class=\"-gl-mr-2 gl-align-middle\"\n                    :title=\"__('The source project is a fork')\"\n                  >\n                    <gl-icon name=\"fork\" :size=\"12\" class=\"gl-ml-1\" />\n                  </span>\n                  {{ sourceBranch }}\n                </gl-link>\n              </template>\n              <template #targetCopyButton>\n                <clipboard-button\n                  v-if=\"shouldShowTargetCopyButton\"\n                  tooltip-placement=\"bottom\"\n                  :title=\"__('Copy branch name')\"\n                  :text=\"getNoteableData.target_branch\"\n                  size=\"small\"\n                  category=\"tertiary\"\n                  class=\"gl-mx-1\"\n                />\n              </template>\n              <template #target>\n                <gl-link\n                  :title=\"getNoteableData.target_branch\"\n                  :href=\"getNoteableData.target_branch_path\"\n                  class=\"ref-container gl-ml-2 gl-mt-2 gl-max-w-26 gl-truncate gl-rounded-base gl-px-2 gl-text-sm gl-font-monospace\"\n                >\n                  {{ getNoteableData.target_branch }}\n                </gl-link>\n              </template>\n            </gl-sprintf>\n          </div>\n        </div>\n        <div class=\"gl-flex gl-w-full\">\n          <ul\n            class=\"merge-request-tabs nav-tabs nav nav-links gl-m-0 gl-flex gl-flex-nowrap gl-border-b-0 gl-p-0\"\n          >\n            <li\n              v-for=\"(tab, index) in tabs\"\n              :key=\"tab[0]\"\n              :class=\"{ active: activeTab === tab[0] }\"\n            >\n              <gl-link :href=\"tab[2]\" :data-action=\"tab[0]\" class=\"!gl-py-4\" @click=\"visitTab\">\n                {{ tab[1] }}\n                <gl-badge variant=\"muted\">\n                  <template v-if=\"index === 0 && discussionCounter !== 0\">\n                    {{ discussionCounter }}\n                  </template>\n                  <template v-else>\n                    {{ tab[3] }}\n                  </template>\n                </gl-badge>\n              </gl-link>\n            </li>\n          </ul>\n          <div class=\"gl-ml-auto gl-hidden gl-items-center lg:gl-flex\">\n            <discussion-counter :blocks-merge=\"blocksMerge\" hide-options />\n            <div v-if=\"isSignedIn\" :class=\"{ 'gl-flex gl-gap-3': isNotificationsTodosButtons }\">\n              <todo-widget\n                :issuable-id=\"issuableId\"\n                :issuable-iid=\"issuableIid\"\n                :full-path=\"projectPath\"\n                issuable-type=\"merge_request\"\n              />\n              <subscriptions-widget\n                v-if=\"isNotificationsTodosButtons\"\n                :iid=\"issuableIid\"\n                :full-path=\"projectPath\"\n                issuable-type=\"merge_request\"\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </gl-intersection-observer>\n</template>\n","import { render, staticRenderFns } from \"./sticky_header.vue?vue&type=template&id=4c0a067f\"\nimport script from \"./sticky_header.vue?vue&type=script&lang=js\"\nexport * from \"./sticky_header.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-intersection-observer',{staticClass:\"gl-relative -gl-top-5\",on:{\"appear\":function($event){return _vm.setStickyHeaderVisible(false)},\"disappear\":function($event){return _vm.setStickyHeaderVisible(true)}}},[_c('div',{staticClass:\"issue-sticky-header merge-request-sticky-header gl-border-b gl-fixed gl-hidden gl-flex-col gl-justify-end gl-bg-default md:gl-flex\",class:{ 'gl-invisible': !_vm.isStickyHeaderVisible }},[_c('div',{staticClass:\"issue-sticky-header-text gl-mx-auto gl-flex gl-w-full gl-flex-col gl-items-center\",class:{ 'container-limited': !_vm.isFluidLayout }},[_c('div',{staticClass:\"gl-flex gl-w-full gl-items-center gl-gap-2\"},[_c('status-badge',{attrs:{\"issuable-type\":_vm.$options.TYPE_MERGE_REQUEST,\"state\":_vm.badgeState.state}}),_vm._v(\" \"),(_vm.isImported)?_c('imported-badge',{attrs:{\"importable-type\":_vm.$options.TYPE_MERGE_REQUEST}}):_vm._e(),_vm._v(\" \"),_c('a',{directives:[{name:\"safe-html\",rawName:\"v-safe-html:[$options.safeHtmlConfig]\",value:(_vm.titleHtml),expression:\"titleHtml\",arg:_vm.$options.safeHtmlConfig}],staticClass:\"gl-my-0 gl-ml-1 gl-mr-2 gl-hidden gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap gl-font-bold gl-text-default lg:gl-block\",attrs:{\"href\":\"#top\"}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.__('%{source} %{copyButton} into %{target} %{targetCopyButton}')},scopedSlots:_vm._u([{key:\"copyButton\",fn:function(){return [_c('clipboard-button',{staticClass:\"js-source-branch-copy gl-mx-1\",attrs:{\"tooltip-placement\":\"bottom\",\"title\":_vm.copySourceBranchTooltip,\"text\":_vm.getNoteableData.source_branch,\"size\":\"small\",\"category\":\"tertiary\"}})]},proxy:true},{key:\"source\",fn:function(){return [_c('gl-link',{staticClass:\"ref-container gl-mt-2 gl-max-w-26 gl-truncate gl-rounded-base gl-px-2 gl-text-sm gl-font-monospace\",attrs:{\"title\":_vm.getNoteableData.source_branch,\"href\":_vm.getNoteableData.source_branch_path,\"data-testid\":\"source-branch\"}},[(_vm.isForked)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"-gl-mr-2 gl-align-middle\",attrs:{\"title\":_vm.__('The source project is a fork')}},[_c('gl-icon',{staticClass:\"gl-ml-1\",attrs:{\"name\":\"fork\",\"size\":12}})],1):_vm._e(),_vm._v(\"\\n                \"+_vm._s(_vm.sourceBranch)+\"\\n              \")])]},proxy:true},{key:\"targetCopyButton\",fn:function(){return [(_vm.shouldShowTargetCopyButton)?_c('clipboard-button',{staticClass:\"gl-mx-1\",attrs:{\"tooltip-placement\":\"bottom\",\"title\":_vm.__('Copy branch name'),\"text\":_vm.getNoteableData.target_branch,\"size\":\"small\",\"category\":\"tertiary\"}}):_vm._e()]},proxy:true},{key:\"target\",fn:function(){return [_c('gl-link',{staticClass:\"ref-container gl-ml-2 gl-mt-2 gl-max-w-26 gl-truncate gl-rounded-base gl-px-2 gl-text-sm gl-font-monospace\",attrs:{\"title\":_vm.getNoteableData.target_branch,\"href\":_vm.getNoteableData.target_branch_path}},[_vm._v(\"\\n                \"+_vm._s(_vm.getNoteableData.target_branch)+\"\\n              \")])]},proxy:true}])})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-w-full\"},[_c('ul',{staticClass:\"merge-request-tabs nav-tabs nav nav-links gl-m-0 gl-flex gl-flex-nowrap gl-border-b-0 gl-p-0\"},_vm._l((_vm.tabs),function(tab,index){return _c('li',{key:tab[0],class:{ active: _vm.activeTab === tab[0] }},[_c('gl-link',{staticClass:\"!gl-py-4\",attrs:{\"href\":tab[2],\"data-action\":tab[0]},on:{\"click\":_vm.visitTab}},[_vm._v(\"\\n              \"+_vm._s(tab[1])+\"\\n              \"),_c('gl-badge',{attrs:{\"variant\":\"muted\"}},[(index === 0 && _vm.discussionCounter !== 0)?[_vm._v(\"\\n                  \"+_vm._s(_vm.discussionCounter)+\"\\n                \")]:[_vm._v(\"\\n                  \"+_vm._s(tab[3])+\"\\n                \")]],2)],1)],1)}),0),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-auto gl-hidden gl-items-center lg:gl-flex\"},[_c('discussion-counter',{attrs:{\"blocks-merge\":_vm.blocksMerge,\"hide-options\":\"\"}}),_vm._v(\" \"),(_vm.isSignedIn)?_c('div',{class:{ 'gl-flex gl-gap-3': _vm.isNotificationsTodosButtons }},[_c('todo-widget',{attrs:{\"issuable-id\":_vm.issuableId,\"issuable-iid\":_vm.issuableIid,\"full-path\":_vm.projectPath,\"issuable-type\":\"merge_request\"}}),_vm._v(\" \"),(_vm.isNotificationsTodosButtons)?_c('subscriptions-widget',{attrs:{\"iid\":_vm.issuableIid,\"full-path\":_vm.projectPath,\"issuable-type\":\"merge_request\"}}):_vm._e()],1):_vm._e()],1)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import diffGeneratedSubscription from '~/pages/projects/merge_requests/queries/diff_generated.subscription.graphql';\n\nimport createApolloClient from '../lib/graphql';\n\nimport { getDerivedMergeRequestInformation } from '../diffs/utils/merge_request';\nimport { EVT_MR_PREPARED, EVT_MR_DIFF_GENERATED } from '../diffs/constants';\n\nimport getMr from '../graphql_shared/queries/merge_request.query.graphql';\nimport mrPreparation from '../graphql_shared/subscriptions/merge_request_prepared.subscription.graphql';\n\nfunction required(name) {\n  throw new Error(`${name} is a required argument`);\n}\n\nasync function observeMergeRequestFinishingPreparation({ apollo, signaler }) {\n  const {\n    namespace,\n    project,\n    id: iid,\n  } = getDerivedMergeRequestInformation({\n    endpoint: document.location.pathname,\n  });\n  const projectPath = `${namespace}/${project}`;\n\n  if (projectPath && iid) {\n    const currentStatus = await apollo.query({\n      query: getMr,\n      variables: { projectPath, iid },\n    });\n\n    if (!currentStatus.data.project) {\n      return;\n    }\n\n    const { id: gqlMrId, preparedAt } = currentStatus.data.project.mergeRequest;\n    let preparationObservable;\n    let preparationSubscriber;\n\n    if (!preparedAt) {\n      preparationObservable = apollo.subscribe({\n        query: mrPreparation,\n        variables: {\n          issuableId: gqlMrId,\n        },\n      });\n\n      preparationSubscriber = preparationObservable.subscribe((preparationUpdate) => {\n        if (preparationUpdate.data.mergeRequestMergeStatusUpdated?.preparedAt) {\n          signaler.$emit(EVT_MR_PREPARED);\n          preparationSubscriber.unsubscribe();\n        }\n      });\n    } else {\n      signaler.$emit(EVT_MR_DIFF_GENERATED, currentStatus.data.project.mergeRequest);\n    }\n  }\n}\n\nfunction observeMergeRequestDiffGenerated({ apollo, signaler }) {\n  const tabCount = document.querySelector('.js-changes-tab-count');\n\n  if (!tabCount || tabCount?.textContent !== '-') return;\n\n  const susbription = apollo.subscribe({\n    query: diffGeneratedSubscription,\n    variables: {\n      issuableId: tabCount.dataset.gid,\n    },\n  });\n\n  const subscriber = susbription.subscribe(({ data: { mergeRequestDiffGenerated } }) => {\n    if (mergeRequestDiffGenerated) {\n      signaler.$emit(EVT_MR_DIFF_GENERATED, mergeRequestDiffGenerated);\n      subscriber.unsubscribe();\n    }\n  });\n}\n\nexport async function start({\n  signalBus = required('signalBus'),\n  apolloClient = createApolloClient(),\n} = {}) {\n  observeMergeRequestDiffGenerated({ signaler: signalBus, apollo: apolloClient });\n\n  await observeMergeRequestFinishingPreparation({ signaler: signalBus, apollo: apolloClient });\n}\n","<script>\nimport {\n  GlLoadingIcon,\n  GlButton,\n  GlIcon,\n  GlDisclosureDropdown,\n  GlDisclosureDropdownItem,\n  GlDisclosureDropdownGroup,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport { apolloProvider } from '~/graphql_shared/issuable_client';\nimport { __, s__ } from '~/locale';\nimport api from '~/api';\nimport axios from '~/lib/utils/axios_utils';\nimport { createAlert } from '~/alert';\nimport MergeRequest from '~/merge_request';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport SidebarSubscriptionsWidget from '~/sidebar/components/subscriptions/sidebar_subscriptions_widget.vue';\nimport AbuseCategorySelector from '~/abuse_reports/components/abuse_category_selector.vue';\nimport { TYPE_MERGE_REQUEST } from '~/issues/constants';\n\nVue.use(VueApollo);\n\nexport default {\n  apolloProvider,\n  i18n: {\n    edit: __('Edit'),\n    copyReferenceText: __('Copy reference'),\n    errorMessage: __('Something went wrong. Please try again.'),\n    issuableName: __('merge request'),\n    reportAbuse: __('Report abuse'),\n    markAsReady: __('Mark as ready'),\n    markAsDraft: __('Mark as draft'),\n    close: __('Close %{issuableType}'),\n    closing: __('Closing %{issuableType}...'),\n    reopen: __('Reopen %{issuableType}'),\n    reopening: __('Reopening %{issuableType}...'),\n    lock: __('Lock %{issuableType}'),\n    mergeRequestActions: __('Merge request actions'),\n  },\n  components: {\n    GlLoadingIcon,\n    GlButton,\n    GlIcon,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup,\n    SidebarSubscriptionsWidget,\n    AbuseCategorySelector,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [glFeatureFlagMixin()],\n  inject: {\n    reportAbusePath: {\n      default: '',\n    },\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    projectPath: {\n      type: String,\n      default: '',\n      required: false,\n    },\n    url: {\n      type: String,\n      default: '',\n      required: false,\n    },\n    editUrl: {\n      type: String,\n      default: '',\n      required: false,\n    },\n    isCurrentUser: {\n      type: Boolean,\n      default: false,\n      required: true,\n    },\n    isLoggedIn: {\n      type: Boolean,\n      defauilt: false,\n      required: false,\n    },\n    canUpdateMergeRequest: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    open: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    isMerged: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    sourceProjectMissing: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    clipboardText: {\n      type: String,\n      default: '',\n      required: false,\n    },\n    reportedUserId: {\n      type: Number,\n      default: 0,\n      required: false,\n    },\n  },\n  data() {\n    return {\n      isOpen: this.open,\n      draft: this.mr.draft,\n      issuableType: TYPE_MERGE_REQUEST,\n      fullPath: this.projectPath,\n      isLoading: false,\n      isLoadingDraft: false,\n      isLoadingClipboard: false,\n      isReportAbuseDrawerOpen: false,\n      isDropdownVisible: false,\n    };\n  },\n  computed: {\n    isNotificationsTodosButtons() {\n      return this.glFeatures.notificationsTodosButtons;\n    },\n    draftLabel() {\n      return this.draft ? this.$options.i18n.markAsReady : this.$options.i18n.markAsDraft;\n    },\n    draftState() {\n      return this.draft ? 'ready' : 'draft';\n    },\n    editItem() {\n      return {\n        text: this.$options.i18n.edit,\n        href: this.editUrl,\n      };\n    },\n    showDropdownTooltip() {\n      return !this.isDropdownVisible ? this.$options.i18n.mergeRequestActions : '';\n    },\n  },\n  methods: {\n    draftAction() {\n      this.isLoadingDraft = true;\n\n      axios\n        .put(`${this.url}?merge_request[wip_event]=${this.draftState}`, null, {\n          params: { format: 'json' },\n        })\n        .then(({ data }) => {\n          MergeRequest.toggleDraftStatus(data.title, this.draft);\n        })\n        .catch(() => {\n          createAlert({\n            message: this.$options.i18n.errorMessage,\n          });\n        })\n        .finally(() => {\n          this.draft = !this.draft;\n          this.isLoadingDraft = false;\n          this.closeActionsDropdown();\n        });\n    },\n    stateAction(state) {\n      this.isLoading = true;\n\n      api\n        .updateMergeRequest(this.mr.target_project_id, this.mr.iid, { state_event: state })\n        .then(() => {\n          window.location.reload();\n        })\n        .catch(() => {\n          createAlert({\n            message: this.$options.i18n.errorMessage,\n          });\n        })\n        .finally(() => {\n          this.isOpen = !this.isOpen;\n          this.isLoading = false;\n          this.closeActionsDropdown();\n        });\n    },\n    copyClipboardAction() {\n      this.$toast.show(s__('MergeRequests|Reference copied'));\n      this.closeActionsDropdown();\n    },\n    reportAbuseAction(isOpen) {\n      if (isOpen) {\n        this.closeActionsDropdown();\n      }\n\n      this.isReportAbuseDrawerOpen = isOpen;\n    },\n    closeActionsDropdown() {\n      this.$refs.mrMoreActionsDropdown.close();\n    },\n    showReopenMergeRequestOption() {\n      return !this.sourceProjectMissing && !this.isOpen;\n    },\n    showDropdown() {\n      this.isDropdownVisible = true;\n    },\n    hideDropdown() {\n      this.isDropdownVisible = false;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-w-full gl-justify-end\" data-testid=\"merge-request-actions\">\n    <gl-disclosure-dropdown\n      id=\"new-actions-header-dropdown\"\n      ref=\"mrMoreActionsDropdown\"\n      v-gl-tooltip=\"showDropdownTooltip\"\n      :title=\"$options.i18n.mergeRequestActions\"\n      data-testid=\"dropdown-toggle\"\n      placement=\"bottom-end\"\n      block\n      class=\"gl-w-full\"\n      :auto-close=\"false\"\n      @shown=\"showDropdown\"\n      @hidden=\"hideDropdown\"\n    >\n      <template #toggle>\n        <div class=\"gl-mb-2 gl-min-h-7 sm:!gl-mb-0\">\n          <gl-button\n            class=\"gl-new-dropdown-toggle gl-w-full sm:!gl-hidden\"\n            button-text-classes=\"gl-flex gl-justify-between gl-w-full\"\n            category=\"secondary\"\n            tabindex=\"0\"\n            :aria-label=\"$options.i18n.mergeRequestActions\"\n          >\n            <span class=\"\">{{ $options.i18n.mergeRequestActions }}</span>\n            <gl-icon class=\"dropdown-chevron\" name=\"chevron-down\" />\n          </gl-button>\n          <gl-button\n            class=\"gl-new-dropdown-toggle gl-new-dropdown-icon-only gl-new-dropdown-toggle-no-caret gl-hidden sm:!gl-flex\"\n            category=\"tertiary\"\n            icon=\"ellipsis_v\"\n            tabindex=\"0\"\n            :aria-label=\"$options.i18n.mergeRequestActions\"\n            :title=\"$options.i18n.mergeRequestActions\"\n          />\n        </div>\n      </template>\n      <gl-disclosure-dropdown-group v-if=\"isLoggedIn && !isNotificationsTodosButtons\">\n        <sidebar-subscriptions-widget\n          :iid=\"String(mr.iid)\"\n          :full-path=\"fullPath\"\n          :issuable-type=\"issuableType\"\n          data-testid=\"notification-toggle\"\n        />\n      </gl-disclosure-dropdown-group>\n\n      <gl-disclosure-dropdown-group\n        bordered\n        :class=\"{\n          '!gl-mt-0 !gl-border-t-0 !gl-pt-0': !isLoggedIn || isNotificationsTodosButtons,\n        }\"\n      >\n        <gl-disclosure-dropdown-item\n          v-if=\"canUpdateMergeRequest\"\n          class=\"sm:!gl-hidden\"\n          data-testid=\"edit-merge-request\"\n          :item=\"editItem\"\n        />\n\n        <gl-disclosure-dropdown-item\n          v-if=\"isOpen && canUpdateMergeRequest\"\n          data-testid=\"ready-and-draft-action\"\n          @action=\"draftAction\"\n        >\n          <template #list-item>\n            <gl-loading-icon v-if=\"isLoadingDraft\" inline size=\"sm\" />\n            {{ draftLabel }}\n          </template>\n        </gl-disclosure-dropdown-item>\n\n        <gl-disclosure-dropdown-item\n          v-if=\"isOpen && canUpdateMergeRequest\"\n          @action=\"stateAction('close')\"\n        >\n          <template #list-item>\n            <template v-if=\"isLoading\">\n              <gl-loading-icon inline size=\"sm\" />\n              {{\n                sprintf($options.i18n.closing, {\n                  issuableType: $options.i18n.issuableName,\n                })\n              }}\n            </template>\n            <template v-else>\n              {{ sprintf($options.i18n.close, { issuableType: $options.i18n.issuableName }) }}\n            </template>\n          </template>\n        </gl-disclosure-dropdown-item>\n\n        <gl-disclosure-dropdown-item\n          v-else-if=\"!isMerged && showReopenMergeRequestOption && canUpdateMergeRequest\"\n          data-testid=\"reopen-merge-request\"\n          @action=\"stateAction('reopen')\"\n        >\n          <template #list-item>\n            <template v-if=\"isLoading\">\n              <gl-loading-icon inline size=\"sm\" />\n              {{\n                sprintf($options.i18n.reopening, {\n                  issuableType: $options.i18n.issuableName,\n                })\n              }}\n            </template>\n            <template v-else>\n              {{ sprintf($options.i18n.reopen, { issuableType: $options.i18n.issuableName }) }}\n            </template>\n          </template>\n        </gl-disclosure-dropdown-item>\n\n        <gl-disclosure-dropdown-item class=\"js-sidebar-lock-root\">\n          <template #list-item>\n            {{ sprintf($options.i18n.lock, { issuableType: $options.i18n.issuableName }) }}\n          </template>\n        </gl-disclosure-dropdown-item>\n\n        <gl-disclosure-dropdown-item\n          class=\"js-copy-reference\"\n          :data-clipboard-text=\"clipboardText\"\n          data-testid=\"copy-reference\"\n          @action=\"copyClipboardAction\"\n        >\n          <template #list-item>\n            {{ $options.i18n.copyReferenceText }}\n          </template>\n        </gl-disclosure-dropdown-item>\n      </gl-disclosure-dropdown-group>\n\n      <gl-disclosure-dropdown-group\n        v-if=\"!isCurrentUser\"\n        bordered\n        :class=\"{ '!gl-mt-0 !gl-border-t-0 !gl-pt-0': !canUpdateMergeRequest }\"\n      >\n        <gl-disclosure-dropdown-item\n          class=\"js-report-abuse-dropdown-item\"\n          data-testid=\"report-abuse-option\"\n          @action=\"reportAbuseAction(true)\"\n        >\n          <template #list-item>\n            {{ $options.i18n.reportAbuse }}\n          </template>\n        </gl-disclosure-dropdown-item>\n      </gl-disclosure-dropdown-group>\n    </gl-disclosure-dropdown>\n\n    <abuse-category-selector\n      v-if=\"!isCurrentUser && isReportAbuseDrawerOpen\"\n      :reported-user-id=\"reportedUserId\"\n      :reported-from-url=\"url\"\n      :show-drawer=\"isReportAbuseDrawerOpen\"\n      @close-drawer=\"reportAbuseAction(false)\"\n    />\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!./mr_more_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!./mr_more_dropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_more_dropdown.vue?vue&type=template&id=77c5ecd1\"\nimport script from \"./mr_more_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./mr_more_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-w-full gl-justify-end\",attrs:{\"data-testid\":\"merge-request-actions\"}},[_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.showDropdownTooltip),expression:\"showDropdownTooltip\"}],ref:\"mrMoreActionsDropdown\",staticClass:\"gl-w-full\",attrs:{\"id\":\"new-actions-header-dropdown\",\"title\":_vm.$options.i18n.mergeRequestActions,\"data-testid\":\"dropdown-toggle\",\"placement\":\"bottom-end\",\"block\":\"\",\"auto-close\":false},on:{\"shown\":_vm.showDropdown,\"hidden\":_vm.hideDropdown},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('div',{staticClass:\"gl-mb-2 gl-min-h-7 sm:!gl-mb-0\"},[_c('gl-button',{staticClass:\"gl-new-dropdown-toggle gl-w-full sm:!gl-hidden\",attrs:{\"button-text-classes\":\"gl-flex gl-justify-between gl-w-full\",\"category\":\"secondary\",\"tabindex\":\"0\",\"aria-label\":_vm.$options.i18n.mergeRequestActions}},[_c('span',{},[_vm._v(_vm._s(_vm.$options.i18n.mergeRequestActions))]),_vm._v(\" \"),_c('gl-icon',{staticClass:\"dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}})],1),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-new-dropdown-toggle gl-new-dropdown-icon-only gl-new-dropdown-toggle-no-caret gl-hidden sm:!gl-flex\",attrs:{\"category\":\"tertiary\",\"icon\":\"ellipsis_v\",\"tabindex\":\"0\",\"aria-label\":_vm.$options.i18n.mergeRequestActions,\"title\":_vm.$options.i18n.mergeRequestActions}})],1)]},proxy:true}])},[_vm._v(\" \"),(_vm.isLoggedIn && !_vm.isNotificationsTodosButtons)?_c('gl-disclosure-dropdown-group',[_c('sidebar-subscriptions-widget',{attrs:{\"iid\":String(_vm.mr.iid),\"full-path\":_vm.fullPath,\"issuable-type\":_vm.issuableType,\"data-testid\":\"notification-toggle\"}})],1):_vm._e(),_vm._v(\" \"),_c('gl-disclosure-dropdown-group',{class:{\n        '!gl-mt-0 !gl-border-t-0 !gl-pt-0': !_vm.isLoggedIn || _vm.isNotificationsTodosButtons,\n      },attrs:{\"bordered\":\"\"}},[(_vm.canUpdateMergeRequest)?_c('gl-disclosure-dropdown-item',{staticClass:\"sm:!gl-hidden\",attrs:{\"data-testid\":\"edit-merge-request\",\"item\":_vm.editItem}}):_vm._e(),_vm._v(\" \"),(_vm.isOpen && _vm.canUpdateMergeRequest)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"ready-and-draft-action\"},on:{\"action\":_vm.draftAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [(_vm.isLoadingDraft)?_c('gl-loading-icon',{attrs:{\"inline\":\"\",\"size\":\"sm\"}}):_vm._e(),_vm._v(\"\\n          \"+_vm._s(_vm.draftLabel)+\"\\n        \")]},proxy:true}],null,false,3822503056)}):_vm._e(),_vm._v(\" \"),(_vm.isOpen && _vm.canUpdateMergeRequest)?_c('gl-disclosure-dropdown-item',{on:{\"action\":function($event){return _vm.stateAction('close')}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [(_vm.isLoading)?[_c('gl-loading-icon',{attrs:{\"inline\":\"\",\"size\":\"sm\"}}),_vm._v(\"\\n            \"+_vm._s(_vm.sprintf(_vm.$options.i18n.closing, {\n                issuableType: _vm.$options.i18n.issuableName,\n              }))+\"\\n          \")]:[_vm._v(\"\\n            \"+_vm._s(_vm.sprintf(_vm.$options.i18n.close, { issuableType: _vm.$options.i18n.issuableName }))+\"\\n          \")]]},proxy:true}],null,false,3369587329)}):(!_vm.isMerged && _vm.showReopenMergeRequestOption && _vm.canUpdateMergeRequest)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"reopen-merge-request\"},on:{\"action\":function($event){return _vm.stateAction('reopen')}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [(_vm.isLoading)?[_c('gl-loading-icon',{attrs:{\"inline\":\"\",\"size\":\"sm\"}}),_vm._v(\"\\n            \"+_vm._s(_vm.sprintf(_vm.$options.i18n.reopening, {\n                issuableType: _vm.$options.i18n.issuableName,\n              }))+\"\\n          \")]:[_vm._v(\"\\n            \"+_vm._s(_vm.sprintf(_vm.$options.i18n.reopen, { issuableType: _vm.$options.i18n.issuableName }))+\"\\n          \")]]},proxy:true}])}):_vm._e(),_vm._v(\" \"),_c('gl-disclosure-dropdown-item',{staticClass:\"js-sidebar-lock-root\",scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.sprintf(_vm.$options.i18n.lock, { issuableType: _vm.$options.i18n.issuableName }))+\"\\n        \")]},proxy:true}])}),_vm._v(\" \"),_c('gl-disclosure-dropdown-item',{staticClass:\"js-copy-reference\",attrs:{\"data-clipboard-text\":_vm.clipboardText,\"data-testid\":\"copy-reference\"},on:{\"action\":_vm.copyClipboardAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.copyReferenceText)+\"\\n        \")]},proxy:true}])})],1),_vm._v(\" \"),(!_vm.isCurrentUser)?_c('gl-disclosure-dropdown-group',{class:{ '!gl-mt-0 !gl-border-t-0 !gl-pt-0': !_vm.canUpdateMergeRequest },attrs:{\"bordered\":\"\"}},[_c('gl-disclosure-dropdown-item',{staticClass:\"js-report-abuse-dropdown-item\",attrs:{\"data-testid\":\"report-abuse-option\"},on:{\"action\":function($event){return _vm.reportAbuseAction(true)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.reportAbuse)+\"\\n        \")]},proxy:true}],null,false,4008098910)})],1):_vm._e()],1),_vm._v(\" \"),(!_vm.isCurrentUser && _vm.isReportAbuseDrawerOpen)?_c('abuse-category-selector',{attrs:{\"reported-user-id\":_vm.reportedUserId,\"reported-from-url\":_vm.url,\"show-drawer\":_vm.isReportAbuseDrawerOpen},on:{\"close-drawer\":function($event){return _vm.reportAbuseAction(false)}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Tracker } from '~/tracking/tracker';\n\nconst MR_SURVEY_WAIT_DURATION = 10000;\n\nconst broadcastNotificationVisible = () => {\n  // We don't want to clutter up the UI by displaying the survey when broadcast message(s)\n  // are visible as well.\n  return Boolean(document.querySelector('.broadcast-notification-message'));\n};\n\nexport const initMrExperienceSurvey = () => {\n  if (!gon.features?.mrExperienceSurvey) return;\n  if (!gon.current_user_id) return;\n  if (!Tracker.enabled()) return;\n  if (broadcastNotificationVisible()) return;\n\n  setTimeout(() => {\n    // eslint-disable-next-line promise/catch-or-return\n    import('./app').then(({ startMrSurveyApp }) => {\n      startMrSurveyApp();\n    });\n  }, MR_SURVEY_WAIT_DURATION);\n};\n","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport initMrNotes from 'ee_else_ce/mr_notes';\nimport StickyHeader from '~/merge_requests/components/sticky_header.vue';\nimport { start as startCodeReviewMessaging } from '~/code_review/signals';\nimport diffsEventHub from '~/diffs/event_hub';\nimport { EVT_MR_DIFF_GENERATED } from '~/diffs/constants';\nimport store from '~/mr_notes/stores';\nimport initSidebarBundle from '~/sidebar/sidebar_bundle';\nimport { apolloProvider } from '~/graphql_shared/issuable_client';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport { initMrMoreDropdown } from '~/mr_more_dropdown';\nimport initShow from './init_merge_request_show';\nimport getStateQuery from './queries/get_state.query.graphql';\n\nVue.use(VueApollo);\n\nconst tabData = Vue.observable({\n  tabs: [],\n});\n\nexport function initMrPage() {\n  initMrNotes();\n  initShow(store);\n  initMrMoreDropdown();\n  startCodeReviewMessaging({ signalBus: diffsEventHub });\n\n  const changesCountBadge = document.querySelector('.js-changes-tab-count');\n  diffsEventHub.$on(EVT_MR_DIFF_GENERATED, (mergeRequestDiffGenerated) => {\n    const { fileCount } = mergeRequestDiffGenerated.diffStatsSummary;\n\n    if (changesCountBadge.textContent === '-') {\n      changesCountBadge.textContent = fileCount;\n\n      const DIFF_TAB_INDEX = 3;\n      const diffTab = tabData.tabs ? tabData.tabs[tabData.tabs.length - 1] : [];\n\n      const hasDiffTab = diffTab?.length >= DIFF_TAB_INDEX + 1;\n      if (hasDiffTab) {\n        diffTab[DIFF_TAB_INDEX] = fileCount;\n      }\n    }\n  });\n}\n\nrequestIdleCallback(() => {\n  initSidebarBundle(store);\n\n  const el = document.getElementById('js-merge-sticky-header');\n\n  if (el) {\n    const { data } = el.dataset;\n\n    let parsedData;\n\n    try {\n      parsedData = JSON.parse(data);\n    } catch {\n      parsedData = {};\n    }\n\n    const {\n      iid,\n      projectPath,\n      title,\n      tabs,\n      defaultBranchName,\n      isFluidLayout,\n      sourceProjectPath,\n      blocksMerge,\n      imported,\n    } = parsedData;\n\n    tabData.tabs = tabs;\n\n    // eslint-disable-next-line no-new\n    new Vue({\n      el,\n      name: 'MergeRequestStickyHeaderRoot',\n      store,\n      apolloProvider,\n      provide: {\n        query: getStateQuery,\n        iid,\n        defaultBranchName,\n        projectPath,\n        title,\n        isFluidLayout: parseBoolean(isFluidLayout),\n        blocksMerge: parseBoolean(blocksMerge),\n        sourceProjectPath,\n      },\n      render(h) {\n        return h(StickyHeader, {\n          props: {\n            tabs: tabData.tabs,\n            isImported: parseBoolean(imported),\n          },\n        });\n      },\n    });\n  }\n});\n","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport { s__ } from '~/locale';\nimport { addShortcutsExtension } from '~/behaviors/shortcuts';\nimport ShortcutsIssuable from '~/behaviors/shortcuts/shortcuts_issuable';\nimport { initPipelineCountListener } from '~/commit/pipelines/utils';\nimport { initIssuableSidebar } from '~/issuable';\nimport MergeRequestHeader from '~/merge_requests/components/merge_request_header.vue';\nimport createDefaultClient from '~/lib/graphql';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport initSourcegraph from '~/sourcegraph';\nimport ZenMode from '~/zen_mode';\nimport initAwardsApp from '~/emoji/awards_app';\nimport { initMrExperienceSurvey } from '~/surveys/merge_request_experience';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport getStateQuery from './queries/get_state.query.graphql';\nimport initCheckoutModal from './init_checkout_modal';\n\nexport default function initMergeRequestShow(store) {\n  new ZenMode(); // eslint-disable-line no-new\n  initPipelineCountListener(document.querySelector('#commit-pipeline-table-view'));\n  addShortcutsExtension(ShortcutsIssuable);\n  initSourcegraph();\n  initIssuableSidebar();\n  initAwardsApp(document.getElementById('js-vue-awards-block'));\n  initMrExperienceSurvey();\n  initCheckoutModal();\n\n  const el = document.querySelector('.js-mr-header');\n  const { hidden, imported, iid, projectPath, state } = el.dataset;\n\n  // eslint-disable-next-line no-new\n  new Vue({\n    el,\n    name: 'MergeRequestHeaderRoot',\n    store,\n    apolloProvider: new VueApollo({\n      defaultClient: createDefaultClient(),\n    }),\n    provide: {\n      query: getStateQuery,\n      hidden: parseBoolean(hidden),\n      iid,\n      projectPath,\n    },\n    render(createElement) {\n      return createElement(MergeRequestHeader, {\n        props: {\n          initialState: state,\n          isImported: parseBoolean(imported),\n        },\n      });\n    },\n  });\n\n  const copyReferenceButton = document.querySelector('.js-copy-reference');\n\n  copyReferenceButton?.addEventListener('click', () => {\n    toast(s__('MergeRequests|Reference copied'));\n  });\n}\n","import Vue from 'vue';\nimport { initReportAbuse } from '~/projects/report_abuse';\nimport MrMoreDropdown from '~/vue_shared/components/mr_more_dropdown.vue';\n\nexport const initMrMoreDropdown = () => {\n  const el = document.querySelector('.js-mr-more-dropdown');\n\n  if (!el) {\n    return false;\n  }\n\n  const {\n    mergeRequest,\n    projectPath,\n    url,\n    editUrl,\n    isCurrentUser,\n    isLoggedIn,\n    canUpdateMergeRequest,\n    open,\n    merged,\n    sourceProjectMissing,\n    clipboardText,\n    reportedUserId,\n  } = el.dataset;\n\n  let mr;\n\n  try {\n    mr = JSON.parse(mergeRequest);\n  } catch {\n    mr = {};\n  }\n\n  return new Vue({\n    el,\n    provide: {\n      reportAbusePath: el.dataset.reportAbusePath,\n    },\n    beforeCreate() {\n      initReportAbuse();\n    },\n    render: (createElement) =>\n      createElement(MrMoreDropdown, {\n        props: {\n          mr,\n          projectPath,\n          url,\n          editUrl,\n          isCurrentUser,\n          isLoggedIn: Boolean(isLoggedIn),\n          canUpdateMergeRequest,\n          open,\n          isMerged: merged,\n          sourceProjectMissing,\n          clipboardText,\n          reportedUserId: Number(reportedUserId),\n        },\n      }),\n  });\n};\n","/**\n * Map<HTMLElement, { callback: Function, eventTypes: Array<string> }>\n */\nconst callbacks = new Map();\nconst click = 'click';\nconst focusin = 'focusin';\nconst supportedEventTypes = [click, focusin];\nconst defaultEventType = click;\n\n/**\n * A Set to keep track of currently active event types.\n * This ensures that event listeners are only added for the event types that are in use.\n *\n * @type {Set<string>}\n */\nconst activeEventTypes = new Set();\nlet lastMousedown = null;\nconst globalListener = event => {\n  callbacks.forEach((_ref, element) => {\n    let {\n      callback,\n      eventTypes\n    } = _ref;\n    const originalEvent = event.type === click ? lastMousedown || event : event;\n    if (\n    // Ignore events that aren't targeted outside the element\n    element.contains(originalEvent.target) ||\n    // Ignore events that aren't the specified types for this element\n    !eventTypes.includes(event.type)) {\n      return;\n    }\n    try {\n      callback(event);\n    } catch (e) {\n      if (process.env.NODE_ENV !== 'production') {\n        // eslint-disable-next-line no-console\n        console.error(e);\n      }\n    }\n  });\n  if (event.type === click) {\n    lastMousedown = null;\n  }\n};\n\n// We need to listen for mouse events because text selection fires click event only when selection ends.\n// This means that the click event target could differ from the element where it originally started.\n// As example: if we use mouse events we could guarantee that selecting text within a dropdown won't close it.\nconst onMousedown = event => {\n  lastMousedown = event;\n};\nconst startListening = eventTypes => {\n  eventTypes.forEach(eventType => {\n    if (!activeEventTypes.has(eventType)) {\n      // Listening to mousedown events, ensures that a text selection doesn't trigger the\n      // GlOutsideDirective 'click' callback if the selection started within the target element.\n      if (eventType === click) {\n        document.addEventListener('mousedown', onMousedown);\n      }\n\n      // Added { capture: true } to all event types to prevent the behavior discussed in https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/1686#note_412545027\n      // Ensures the event listener handles the event in the capturing phase, avoiding issues encountered previously.\n      // Cannot be tested with Jest or Cypress, but can be tested with Playwright in the future: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4272#note_1947425384\n      document.addEventListener(eventType, globalListener, {\n        capture: true\n      });\n      activeEventTypes.add(eventType);\n    }\n  });\n  lastMousedown = null;\n};\nconst stopListening = eventTypesToUnbind => {\n  eventTypesToUnbind.forEach(eventType => {\n    if (activeEventTypes.has(eventType)) {\n      if ([...callbacks.values()].every(_ref2 => {\n        let {\n          eventTypes\n        } = _ref2;\n        return !eventTypes.includes(eventType);\n      })) {\n        document.removeEventListener(eventType, globalListener);\n        activeEventTypes.delete(eventType);\n      }\n    }\n  });\n  if (eventTypesToUnbind.includes(click) && !activeEventTypes.has(click)) {\n    document.removeEventListener('mousedown', onMousedown);\n  }\n};\nfunction parseBinding(_ref3) {\n  let {\n    arg,\n    value,\n    modifiers\n  } = _ref3;\n  const modifiersList = Object.keys(modifiers);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof value !== 'function') {\n      throw new Error(`[GlOutsideDirective] Value must be a function; got ${typeof value}!`);\n    }\n    if (typeof arg !== 'undefined') {\n      throw new Error(`[GlOutsideDirective] Arguments are not supported. Consider using modifiers instead.`);\n    }\n    const unsupportedModifiers = modifiersList.filter(modifier => !supportedEventTypes.includes(modifier));\n    if (unsupportedModifiers.length > 0) {\n      throw new Error(`[GlOutsideDirective] Cannot bind ${unsupportedModifiers.join(', ')} events; supported event types are: ${supportedEventTypes.join(', ')}`);\n    }\n  }\n  return {\n    callback: value,\n    eventTypes: modifiersList.length > 0 ? modifiersList : [defaultEventType]\n  };\n}\nconst bind = (el, bindings) => {\n  const {\n    callback,\n    eventTypes\n  } = parseBinding(bindings);\n  if (callbacks.has(el)) {\n    // This element is already bound. This is possible if two components, which\n    // share the same root node, (i.e., one is a higher-order component\n    // wrapping another) _both_ have this directive applied.\n    //\n    // Because Vue binds directives in the direction towards the root, only the\n    // deepest instance of this directive will be bound.\n    //\n    // A future iteration may add support for binding all instances on a given\n    // element.\n    return;\n  }\n  callbacks.set(el, {\n    callback,\n    eventTypes\n  });\n  startListening(eventTypes);\n};\nconst unbind = el => {\n  const entry = callbacks.get(el);\n  if (entry) {\n    callbacks.delete(el);\n    stopListening(entry.eventTypes);\n  }\n};\nconst OutsideDirective = {\n  bind,\n  unbind\n};\n\nexport { OutsideDirective };\n","import $ from 'jquery';\n\n/**\n * Instances of SmartInterval extend the functionality of `setInterval`, make it configurable\n * and controllable by a public API.\n *\n * This component has two intervals:\n *\n * - current interval - when the page is visible - defined by `startingInterval`, `maxInterval`, and `incrementByFactorOf`\n *   - Example:\n *     - `startingInterval: 10000`, `maxInterval: 240000`, `incrementByFactorOf: 2`\n *     - results in `10s, 20s, 40s, 80s, ..., 240s`, it stops increasing at `240s` and keeps this interval indefinitely.\n * - hidden interval - when the page is not visible\n *\n * Visibility transitions:\n *\n * - `visible -> not visible`\n *   - `document.addEventListener('visibilitychange', () => ...)`\n *\n *       > This event fires with a visibilityState of hidden when a user navigates to a new page, switches tabs, closes the tab, minimizes or closes the browser, or, on mobile, switches from the browser to a different app.\n *\n *       Source [Document: visibilitychange event - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilitychange_event)\n *\n *   - `window.addEventListener('blur', () => ...)` - every time user clicks somewhere else then in the browser page\n * - `not visible -> visible`\n *   - `document.addEventListener('visibilitychange', () => ...)` same as the transition `visible -> not visible`\n *   - `window.addEventListener('focus', () => ...)`\n *\n * The combination of these two listeners can result in an unexpected resumption of polling:\n *\n * - switch to a different window (causes `blur`)\n * - switch to a different desktop (causes `visibilitychange` (not visible))\n * - switch back to the original desktop (causes `visibilitychange` (visible))\n * - *now the polling happens even in window that user doesn't work in*\n */\n\nexport default class SmartInterval {\n  /**\n   * @param { function } opts.callback Function that returns a promise, called on each iteration\n   *                     unless still in progress (required)\n   * @param { milliseconds } opts.startingInterval `currentInterval` is set to this initially\n   * @param { milliseconds } opts.maxInterval `currentInterval` will be incremented to this\n   * @param { milliseconds } opts.hiddenInterval `currentInterval` is set to this\n   *                         when the page is hidden\n   * @param { integer } opts.incrementByFactorOf `currentInterval` is incremented by this factor\n   * @param { boolean } opts.lazyStart Configure if timer is initialized on\n   *                    instantiation or lazily\n   * @param { boolean } opts.immediateExecution Configure if callback should\n   *                    be executed before the first interval.\n   */\n  constructor(opts = {}) {\n    this.cfg = {\n      callback: opts.callback,\n      startingInterval: opts.startingInterval,\n      maxInterval: opts.maxInterval,\n      hiddenInterval: opts.hiddenInterval,\n      incrementByFactorOf: opts.incrementByFactorOf,\n      lazyStart: opts.lazyStart,\n      immediateExecution: opts.immediateExecution,\n    };\n\n    this.state = {\n      intervalId: null,\n      currentInterval: this.cfg.startingInterval,\n      pagevisibile: true,\n    };\n\n    this.initInterval();\n  }\n\n  /* public */\n\n  start() {\n    const { cfg, state } = this;\n\n    if (cfg.immediateExecution && !this.isLoading) {\n      cfg.immediateExecution = false;\n      this.triggerCallback();\n    }\n\n    state.intervalId = window.setInterval(() => {\n      if (this.isLoading) {\n        return;\n      }\n      this.triggerCallback();\n\n      if (this.getCurrentInterval() === cfg.maxInterval) {\n        return;\n      }\n\n      this.incrementInterval();\n      this.resume();\n    }, this.getCurrentInterval());\n  }\n\n  // cancel the existing timer, setting the currentInterval back to startingInterval\n  cancel() {\n    this.setCurrentInterval(this.cfg.startingInterval);\n    this.stopTimer();\n  }\n\n  onVisibilityHidden() {\n    if (this.cfg.hiddenInterval) {\n      this.setCurrentInterval(this.cfg.hiddenInterval);\n      this.resume();\n    } else {\n      this.cancel();\n    }\n  }\n\n  // start a timer, using the existing interval\n  resume() {\n    this.stopTimer(); // stop existing timer, in case timer was not previously stopped\n    this.start();\n  }\n\n  onVisibilityVisible() {\n    this.cancel();\n    this.start();\n  }\n\n  destroy() {\n    document.removeEventListener('visibilitychange', this.onVisibilityChange);\n    window.removeEventListener('blur', this.onWindowVisibilityChange);\n    window.removeEventListener('focus', this.onWindowVisibilityChange);\n    this.cancel();\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    $(document).off('visibilitychange').off('beforeunload');\n  }\n\n  /* private */\n\n  initInterval() {\n    const { cfg } = this;\n\n    if (!cfg.lazyStart) {\n      this.start();\n    }\n\n    this.initVisibilityChangeHandling();\n    this.initPageUnloadHandling();\n  }\n\n  triggerCallback() {\n    this.isLoading = true;\n    this.cfg\n      .callback()\n      .then(() => {\n        this.isLoading = false;\n      })\n      .catch((err) => {\n        this.isLoading = false;\n        throw err;\n      });\n  }\n\n  onWindowVisibilityChange(e) {\n    this.state.pagevisibile = e.type === 'focus';\n    this.handleVisibilityChange();\n  }\n\n  onVisibilityChange(e) {\n    this.state.pagevisibile = e.target.visibilityState === 'visible';\n    this.handleVisibilityChange();\n  }\n\n  initVisibilityChangeHandling() {\n    // cancel interval when tab or window is no longer shown (prevents cached pages from polling)\n    document.addEventListener('visibilitychange', this.onVisibilityChange.bind(this));\n    window.addEventListener('blur', this.onWindowVisibilityChange.bind(this));\n    window.addEventListener('focus', this.onWindowVisibilityChange.bind(this));\n  }\n\n  initPageUnloadHandling() {\n    // TODO: Consider refactoring in light of turbolinks removal.\n    // prevent interval continuing after page change, when kept in cache by Turbolinks\n    $(document).on('beforeunload', () => this.cancel());\n  }\n\n  handleVisibilityChange() {\n    const intervalAction = this.isPageVisible()\n      ? this.onVisibilityVisible\n      : this.onVisibilityHidden;\n\n    intervalAction.apply(this);\n  }\n\n  getCurrentInterval() {\n    return this.state.currentInterval;\n  }\n\n  setCurrentInterval(newInterval) {\n    this.state.currentInterval = newInterval;\n  }\n\n  incrementInterval() {\n    const { cfg } = this;\n    const currentInterval = this.getCurrentInterval();\n    if (cfg.hiddenInterval && !this.isPageVisible()) return;\n    let nextInterval = currentInterval * cfg.incrementByFactorOf;\n\n    if (nextInterval > cfg.maxInterval) {\n      nextInterval = cfg.maxInterval;\n    }\n\n    this.setCurrentInterval(nextInterval);\n  }\n\n  isPageVisible() {\n    return this.state.pagevisibile;\n  }\n\n  stopTimer() {\n    const { state } = this;\n\n    state.intervalId = window.clearInterval(state.intervalId);\n  }\n}\n","import { __, s__ } from '~/locale';\n\nexport const LOAD_SINGLE_DIFF_FAILED = s__(\n  \"MergeRequest|Can't fetch the diff needed to update this view. Please reload this page.\",\n);\nexport const DISCUSSION_SINGLE_DIFF_FAILED = s__(\n  \"MergeRequest|Can't fetch the single file diff for the discussion. Please reload this page.\",\n);\n\nexport const DIFF_FILE_HEADER = {\n  optionsDropdownTitle: __('Options'),\n  fileReviewLabel: __('Viewed'),\n  fileReviewTooltip: __('Collapses this file (only for you) until it’s changed again.'),\n};\n\nexport const DIFF_FILE = {\n  tooLarge: s__('MRDiffFile|Changes are too large to be shown.'),\n  blobView: s__('MRDiffFile|View file @ %{commitSha}'),\n  editInFork: __(\n    \"You're not allowed to %{tag_start}edit%{tag_end} files in this project directly. Please fork this project, make your changes there, and submit a merge request.\",\n  ),\n  fork: __('Fork'),\n  cancel: __('Cancel'),\n  autoCollapsed: __('Files with large changes are collapsed by default.'),\n  autoCollapsedGenerated: __(\n    'Generated files are collapsed by default. To change this behavior, edit the %{tagStart}.gitattributes%{tagEnd} file. %{linkStart}Learn more.%{linkEnd}',\n  ),\n  expand: __('Expand file'),\n};\nexport const START_THREAD = __('Start another thread');\n\nexport const SETTINGS_DROPDOWN = {\n  whitespace: __('Show whitespace changes'),\n  fileByFile: __('Show one file at a time'),\n  preferences: __('Preferences'),\n};\n\nexport const CONFLICT_TEXT = {\n  both_modified: __('Conflict: This file was modified in both the source and target branches.'),\n  modified_source_removed_target: __(\n    'Conflict: This file was modified in the source branch, but removed in the target branch.',\n  ),\n  modified_target_removed_source: __(\n    'Conflict: This file was removed in the source branch, but modified in the target branch.',\n  ),\n  renamed_same_file: __(\n    'Conflict: This file was renamed differently in the source and target branches.',\n  ),\n  removed_source_renamed_target: __(\n    'Conflict: This file was removed in the source branch, but renamed in the target branch.',\n  ),\n  removed_target_renamed_source: __(\n    'Conflict: This file was renamed in the source branch, but removed in the target branch.',\n  ),\n  both_added: __(\n    'Conflict: This file was added both in the source and target branches, but with different contents.',\n  ),\n};\n\nexport const HIDE_COMMENTS = __('Hide comments');\n\nexport const NEW_CODE_QUALITY_FINDINGS = __('New code quality findings');\nexport const NEW_SAST_FINDINGS = __('New Security findings');\n\nexport const BUILDING_YOUR_MR = __(\n  'Building your merge request… This page will update when the build is complete.',\n);\nexport const SOMETHING_WENT_WRONG = __('Something went wrong on our end. Please try again!');\nexport const SAVING_THE_COMMENT_FAILED = s__(\n  'MergeRequests|Comment could not be submitted: %{reason}.',\n);\nexport const ERROR_LOADING_FULL_DIFF = s__(\n  'MergeRequest|Error loading full diff. Please try again.',\n);\nexport const ERROR_DISMISSING_SUGESTION_POPOVER = s__(\n  'MergeRequest|Error dismissing suggestion popover. Please try again.',\n);\nexport const ENCODED_FILE_PATHS_TITLE = __('Some changes are not shown.');\nexport const ENCODED_FILE_PATHS_MESSAGE = __(\n  'Some files cannot be displayed due to their file path encoding.',\n);\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"updateMergeRequestLocked\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestSetLockedInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestSetLocked\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequest\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"discussionLocked\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":188}};\n    doc.loc.source = {\"body\":\"mutation updateMergeRequestLocked($input: MergeRequestSetLockedInput!) {\\n  mergeRequestSetLocked(input: $input) {\\n    mergeRequest {\\n      id\\n      discussionLocked\\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[\"updateMergeRequestLocked\"] = oneQuery(doc, \"updateMergeRequestLocked\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ 'inline-block': !_vm.isMergeRequest },attrs:{\"data-testid\":\"sidebar-todo\"}},[(_vm.isNotificationsTodosButtons)?_c('todo-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.top\",modifiers:{\"hover\":true,\"top\":true}}],staticClass:\"hide-collapsed\",attrs:{\"title\":_vm.tootltipTitle,\"issuable-type\":_vm.issuableType,\"issuable-id\":_vm.issuableId,\"is-todo\":_vm.hasTodo,\"disabled\":_vm.isLoading,\"is-icon-button\":true},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleTodo.apply(null, arguments)}}},[_c('gl-animated-todo-icon',{class:{ '!gl-text-blue-500': _vm.hasTodo },attrs:{\"is-on\":_vm.hasTodo}})],1):_c('todo-button',{staticClass:\"hide-collapsed\",attrs:{\"issuable-type\":_vm.issuableType,\"issuable-id\":_vm.issuableId,\"is-todo\":_vm.hasTodo,\"loading\":_vm.isLoading,\"size\":_vm.isMergeRequest ? 'medium' : 'small'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleTodo.apply(null, arguments)}}}),_vm._v(\" \"),(_vm.isClassicSidebar && !_vm.isMergeRequest)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon sidebar-collapsed-container !gl-rounded-none !gl-shadow-none\",class:{ '!gl-text-blue-500': _vm.hasTodo },attrs:{\"title\":_vm.tootltipTitle,\"category\":\"tertiary\",\"type\":\"reset\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleTodo.apply(null, arguments)}}},[_c('gl-animated-todo-icon',{attrs:{\"is-on\":_vm.hasTodo}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlTooltipDirective, GlAnimatedTodoIcon } from '@gitlab/ui';\nimport { produce } from 'immer';\nimport { createAlert } from '~/alert';\nimport { TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport Tracking from '~/tracking';\nimport { todoMutationTypes } from '../../constants';\nimport { todoQueries, todoMutations } from '../../queries/constants';\nimport { todoLabel } from '../../utils';\nimport TodoButton from './todo_button.vue';\n\nconst trackingMixin = Tracking.mixin();\n\nexport default {\n  components: {\n    GlButton,\n    TodoButton,\n    GlAnimatedTodoIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [glFeatureFlagsMixin(), trackingMixin],\n  inject: {\n    isClassicSidebar: {\n      default: false,\n    },\n  },\n  props: {\n    issuableId: {\n      type: String,\n      required: true,\n    },\n    issuableIid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      todoId: null,\n      loading: false,\n    };\n  },\n  apollo: {\n    todoId: {\n      query() {\n        return todoQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: String(this.issuableIid),\n        };\n      },\n      skip() {\n        return !this.issuableIid;\n      },\n      update(data) {\n        return data.workspace?.issuable?.currentUserTodos.nodes[0]?.id;\n      },\n      result({ data }) {\n        if (!data) {\n          return;\n        }\n\n        const currentUserTodos = data.workspace?.issuable?.currentUserTodos?.nodes ?? [];\n        this.todoId = currentUserTodos[0]?.id;\n        this.$emit('todoUpdated', currentUserTodos.length > 0);\n      },\n      error() {\n        createAlert({\n          message: sprintf(__('Something went wrong while setting %{issuableType} to-do item.'), {\n            issuableType: this.issuableType,\n          }),\n        });\n      },\n      subscribeToMore: {\n        document() {\n          return todoQueries[this.issuableType].subscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return !todoQueries[this.issuableType].subscription;\n        },\n      },\n    },\n  },\n  computed: {\n    isMergeRequest() {\n      return this.issuableType === TYPE_MERGE_REQUEST;\n    },\n    todoIdQuery() {\n      return todoQueries[this.issuableType].query;\n    },\n    todoIdQueryVariables() {\n      return {\n        fullPath: this.fullPath,\n        iid: String(this.issuableIid),\n      };\n    },\n    isLoading() {\n      return this.$apollo.queries?.todoId?.loading || this.loading;\n    },\n    hasTodo() {\n      return Boolean(this.todoId);\n    },\n    todoMutationType() {\n      if (this.hasTodo) {\n        return todoMutationTypes.markDone;\n      }\n      return todoMutationTypes.create;\n    },\n    tootltipTitle() {\n      return todoLabel(this.hasTodo);\n    },\n    isNotificationsTodosButtons() {\n      return this.glFeatures.notificationsTodosButtons;\n    },\n  },\n  methods: {\n    toggleTodo() {\n      this.loading = true;\n      this.$apollo\n        .mutate({\n          mutation: todoMutations[this.todoMutationType],\n          variables: {\n            input: {\n              targetId: !this.hasTodo ? this.issuableId : undefined,\n              id: this.hasTodo ? this.todoId : undefined,\n            },\n          },\n          update: (\n            store,\n            {\n              data: {\n                todoMutation: { todo },\n              },\n            },\n          ) => {\n            const queryProps = {\n              query: this.todoIdQuery,\n              variables: this.todoIdQueryVariables,\n            };\n            const sourceData = store.readQuery(queryProps);\n            const data = produce(sourceData, (draftState) => {\n              draftState.workspace.issuable.currentUserTodos.nodes = this.hasTodo ? [] : [todo];\n            });\n            store.writeQuery({\n              data,\n              ...queryProps,\n            });\n          },\n        })\n        .then(\n          ({\n            data: {\n              todoMutation: { errors },\n            },\n          }) => {\n            if (errors.length) {\n              createAlert({\n                message: errors[0],\n              });\n            }\n            this.track('click_todo', {\n              label: 'right_sidebar',\n              property: this.hasTodo,\n            });\n          },\n        )\n        .catch(() => {\n          createAlert({\n            message: sprintf(__('Something went wrong while setting %{issuableType} to-do item.'), {\n              issuableType: this.issuableType,\n            }),\n          });\n        })\n        .finally(() => {\n          this.loading = false;\n        });\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"sidebar-todo\" :class=\"{ 'inline-block': !isMergeRequest }\">\n    <todo-button\n      v-if=\"isNotificationsTodosButtons\"\n      v-gl-tooltip.hover.top\n      :title=\"tootltipTitle\"\n      :issuable-type=\"issuableType\"\n      :issuable-id=\"issuableId\"\n      :is-todo=\"hasTodo\"\n      :disabled=\"isLoading\"\n      :is-icon-button=\"true\"\n      class=\"hide-collapsed\"\n      @click.stop.prevent=\"toggleTodo\"\n    >\n      <gl-animated-todo-icon :class=\"{ '!gl-text-blue-500': hasTodo }\" :is-on=\"hasTodo\" />\n    </todo-button>\n    <todo-button\n      v-else\n      :issuable-type=\"issuableType\"\n      :issuable-id=\"issuableId\"\n      :is-todo=\"hasTodo\"\n      :loading=\"isLoading\"\n      :size=\"isMergeRequest ? 'medium' : 'small'\"\n      class=\"hide-collapsed\"\n      @click.stop.prevent=\"toggleTodo\"\n    />\n    <gl-button\n      v-if=\"isClassicSidebar && !isMergeRequest\"\n      v-gl-tooltip.left.viewport\n      :title=\"tootltipTitle\"\n      category=\"tertiary\"\n      type=\"reset\"\n      class=\"sidebar-collapsed-icon sidebar-collapsed-container !gl-rounded-none !gl-shadow-none\"\n      :class=\"{ '!gl-text-blue-500': hasTodo }\"\n      @click.stop.prevent=\"toggleTodo\"\n    >\n      <gl-animated-todo-icon :is-on=\"hasTodo\" />\n    </gl-button>\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_todo_widget.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_todo_widget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sidebar_todo_widget.vue?vue&type=template&id=0ce572ce\"\nimport script from \"./sidebar_todo_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_todo_widget.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 { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'p'),\n  textClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_TEXT);\n\n// --- Main component ---\n\n// @vue/component\nconst BDropdownText = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_TEXT,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tag,\n      textClass,\n      variant\n    } = props;\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(tag, {\n      staticClass: 'b-dropdown-text',\n      class: [textClass, {\n        [`text-${variant}`]: variant\n      }],\n      props,\n      attrs: data.attrs || {},\n      ref: 'text'\n    }, children)]);\n  }\n});\n\nexport { BDropdownText, props };\n","import { BDropdownText } from '../../../vendor/bootstrap-vue/src/components/dropdown/dropdown-text';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlDropdownText',\n  components: {\n    BDropdownText\n  },\n  inheritAttrs: false\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-dropdown-text',_vm._g(_vm._b({staticClass:\"gl-dropdown-text\"},'b-dropdown-text',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { STATUS_ALL, STATUS_CLOSED, STATUS_OPEN, STATUS_MERGED } from '~/issues/constants';\nimport { __ } from '~/locale';\n\nexport const issuableListTabs = [\n  {\n    id: 'state-opened',\n    name: STATUS_OPEN,\n    title: __('Open'),\n    titleTooltip: __('Filter by issues that are currently opened.'),\n  },\n  {\n    id: 'state-closed',\n    name: STATUS_CLOSED,\n    title: __('Closed'),\n    titleTooltip: __('Filter by issues that are currently closed.'),\n  },\n  {\n    id: 'state-all',\n    name: STATUS_ALL,\n    title: __('All'),\n    titleTooltip: __('Show all issues.'),\n  },\n];\n\nexport const mergeRequestListTabs = [\n  {\n    id: 'state-opened',\n    name: STATUS_OPEN,\n    title: __('Open'),\n    titleTooltip: __('Filter by merge requests that are currently opened.'),\n  },\n  {\n    id: 'state-merged',\n    name: STATUS_MERGED,\n    title: __('Merged'),\n    titleTooltip: __('Filter by merge requests that are merged.'),\n  },\n  {\n    id: 'state-closed',\n    name: STATUS_CLOSED,\n    title: __('Closed'),\n    titleTooltip: __('Filter by merge requests that are currently closed.'),\n  },\n  {\n    id: 'state-all',\n    name: STATUS_ALL,\n    title: __('All'),\n    titleTooltip: __('Show all merge requests.'),\n  },\n];\n\nexport const availableSortOptions = [\n  {\n    id: 1,\n    title: __('Created date'),\n    sortDirection: {\n      descending: 'created_desc',\n      ascending: 'created_asc',\n    },\n  },\n  {\n    id: 2,\n    title: __('Updated date'),\n    sortDirection: {\n      descending: 'updated_desc',\n      ascending: 'updated_asc',\n    },\n  },\n];\n\nexport const DEFAULT_PAGE_SIZE = 20;\n\nexport const DEFAULT_SKELETON_COUNT = 5;\n\nexport const PAGE_SIZE_STORAGE_KEY = 'issuable_list_page_size';\n","import { closest, getAttr, getById, select, matches } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\n\nconst TABLE_TAG_NAMES = ['TD', 'TH', 'TR'];\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nconst filterEvent = event => {\n  // Exit early when we don't have a target element\n  if (!event || !event.target) {\n    /* istanbul ignore next */\n    return false;\n  }\n  const el = event.target;\n  // Exit early when element is disabled or a table element\n  if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n    return false;\n  }\n  // Ignore the click when it was inside a dropdown menu\n  if (closest('.dropdown-menu', el)) {\n    return true;\n  }\n  const label = el.tagName === 'LABEL' ? el : closest('label', el);\n  // If the label's form control is not disabled then we don't propagate event\n  // Modern browsers have `label.control` that references the associated input, but IE 11\n  // does not have this property on the label element, so we resort to DOM lookups\n  if (label) {\n    const labelFor = getAttr(label, 'for');\n    const input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n    if (input && !input.disabled) {\n      return true;\n    }\n  }\n  // Otherwise check if the event target matches one of the selectors in the\n  // event filter (i.e. anchors, non disabled inputs, etc.)\n  // Return `true` if we should ignore the event\n  return matches(el, EVENT_FILTER);\n};\n\nexport { filterEvent };\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n/* TODO: Use max-height prop when gitlab-ui got updated.\\nSee https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2374 */\\n[data-v-5fa5a073] .gl-new-dropdown-inner {\\n  max-height: 310px;\\n}\\n\", \"\"]);\n\n","import Vue from 'vue';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport CommitFormModal from './components/form_modal.vue';\nimport {\n  I18N_MODAL,\n  I18N_REVERT_MODAL,\n  PREPENDED_MODAL_TEXT,\n  OPEN_REVERT_MODAL,\n  REVERT_MODAL_ID,\n} from './constants';\nimport createStore from './store';\n\nexport default function initInviteMembersModal(primaryActionEventName) {\n  const el = document.querySelector('.js-revert-commit-modal');\n  if (!el) {\n    return false;\n  }\n\n  const {\n    title,\n    endpoint,\n    branch,\n    pushCode,\n    branchCollaboration,\n    existingBranch,\n    branchesEndpoint,\n  } = el.dataset;\n\n  const store = createStore({\n    endpoint,\n    branchesEndpoint,\n    branch,\n    pushCode: parseBoolean(pushCode),\n    branchCollaboration: parseBoolean(branchCollaboration),\n    defaultBranch: branch,\n    modalTitle: title,\n    existingBranch,\n  });\n\n  return new Vue({\n    el,\n    store,\n    provide: {\n      prependedText: PREPENDED_MODAL_TEXT,\n    },\n    render: (createElement) =>\n      createElement(CommitFormModal, {\n        props: {\n          i18n: { ...I18N_REVERT_MODAL, ...I18N_MODAL },\n          openModal: OPEN_REVERT_MODAL,\n          modalId: REVERT_MODAL_ID,\n          primaryActionEventName,\n        },\n      }),\n  });\n}\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"moveIssue\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"moveIssueInput\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssueMoveInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issueMove\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"moveIssueInput\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":150}};\n    doc.loc.source = {\"body\":\"mutation moveIssue($moveIssueInput: IssueMoveInput!) {\\n  issueMove(input: $moveIssueInput) {\\n    issue {\\n      id\\n      webUrl\\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[\"moveIssue\"] = oneQuery(doc, \"moveIssue\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-badge',{staticClass:\"gl-shrink-0\",attrs:{\"variant\":_vm.badgeProperties.variant,\"icon\":_vm.badgeProperties.icon,\"aria-label\":_vm.badgeProperties.text}},[_vm._v(\"\\n  \"+_vm._s(_vm.badgeProperties.text)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlBadge } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport {\n  STATUS_CLOSED,\n  STATUS_LOCKED,\n  STATUS_MERGED,\n  STATUS_OPEN,\n  TYPE_EPIC,\n  TYPE_ISSUE,\n  TYPE_MERGE_REQUEST,\n} from '~/issues/constants';\n\nconst badgePropertiesMap = {\n  [TYPE_EPIC]: {\n    [STATUS_OPEN]: {\n      icon: 'issue-open-m',\n      text: __('Open'),\n      variant: 'success',\n    },\n    [STATUS_CLOSED]: {\n      icon: 'issue-close',\n      text: __('Closed'),\n      variant: 'info',\n    },\n  },\n  [TYPE_ISSUE]: {\n    [STATUS_OPEN]: {\n      icon: 'issue-open-m',\n      text: __('Open'),\n      variant: 'success',\n    },\n    [STATUS_CLOSED]: {\n      icon: 'issue-close',\n      text: __('Closed'),\n      variant: 'info',\n    },\n    [STATUS_LOCKED]: {\n      icon: 'issue-open-m',\n      text: __('Open'),\n      variant: 'success',\n    },\n  },\n  [TYPE_MERGE_REQUEST]: {\n    [STATUS_OPEN]: {\n      icon: 'merge-request',\n      text: __('Open'),\n      variant: 'success',\n    },\n    [STATUS_CLOSED]: {\n      icon: 'merge-request-close',\n      text: __('Closed'),\n      variant: 'danger',\n    },\n    [STATUS_MERGED]: {\n      icon: 'merge',\n      text: __('Merged'),\n      variant: 'info',\n    },\n    [STATUS_LOCKED]: {\n      icon: 'merge-request',\n      text: __('Open'),\n      variant: 'success',\n    },\n  },\n};\n\nexport default {\n  components: {\n    GlBadge,\n  },\n  props: {\n    issuableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    state: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    badgeProperties() {\n      return badgePropertiesMap[this.issuableType][this.state];\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-badge\n    :variant=\"badgeProperties.variant\"\n    :icon=\"badgeProperties.icon\"\n    :aria-label=\"badgeProperties.text\"\n    class=\"gl-shrink-0\"\n  >\n    {{ badgeProperties.text }}\n  </gl-badge>\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!./status_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status_badge.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./status_badge.vue?vue&type=template&id=7240f6d0\"\nimport script from \"./status_badge.vue?vue&type=script&lang=js\"\nexport * from \"./status_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { NAME_MODAL } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../constants/key-codes';\nimport { matches, select, hasAttr, setAttr, getAttr, isDisabled } from '../../utils/dom';\nimport { getRootActionEventName, eventOff, eventOn } from '../../utils/events';\nimport { isString } from '../../utils/inspect';\nimport { keys } from '../../utils/object';\nimport { getEventRoot } from '../../utils/get-event-root';\nimport { getInstanceFromDirective } from '../../utils/get-instance-from-directive';\n\n// Emitted show event for modal\nconst ROOT_ACTION_EVENT_NAME_SHOW = getRootActionEventName(NAME_MODAL, EVENT_NAME_SHOW);\n\n// Prop name we use to store info on root element\nconst PROPERTY = '__bv_modal_directive__';\nconst getTarget = _ref => {\n  let {\n    modifiers = {},\n    arg,\n    value\n  } = _ref;\n  // Try value, then arg, otherwise pick last modifier\n  return isString(value) ? value : isString(arg) ? arg : keys(modifiers).reverse()[0];\n};\nconst getTriggerElement = el => {\n  // If root element is a dropdown-item or nav-item, we\n  // need to target the inner link or button instead\n  return el && matches(el, '.dropdown-menu > li, li.nav-item') ? select('a, button', el) || el : el;\n};\nconst setRole = trigger => {\n  // Ensure accessibility on non button elements\n  if (trigger && trigger.tagName !== 'BUTTON') {\n    // Only set a role if the trigger element doesn't have one\n    if (!hasAttr(trigger, 'role')) {\n      setAttr(trigger, 'role', 'button');\n    }\n    // Add a tabindex is not a button or link, and tabindex is not provided\n    if (trigger.tagName !== 'A' && !hasAttr(trigger, 'tabindex')) {\n      setAttr(trigger, 'tabindex', '0');\n    }\n  }\n};\nconst bind = (el, binding, vnode) => {\n  const target = getTarget(binding);\n  const trigger = getTriggerElement(el);\n  if (target && trigger) {\n    const handler = event => {\n      // `currentTarget` is the element with the listener on it\n      const currentTarget = event.currentTarget;\n      if (!isDisabled(currentTarget)) {\n        const type = event.type;\n        const key = event.keyCode;\n        // Open modal only if trigger is not disabled\n        if (type === 'click' || type === 'keydown' && (key === CODE_ENTER || key === CODE_SPACE)) {\n          getEventRoot(getInstanceFromDirective(vnode, binding)).$emit(ROOT_ACTION_EVENT_NAME_SHOW, target, currentTarget);\n        }\n      }\n    };\n    el[PROPERTY] = {\n      handler,\n      target,\n      trigger\n    };\n    // If element is not a button, we add `role=\"button\"` for accessibility\n    setRole(trigger);\n    // Listen for click events\n    eventOn(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    if (trigger.tagName !== 'BUTTON' && getAttr(trigger, 'role') === 'button') {\n      // If trigger isn't a button but has role button,\n      // we also listen for `keydown.space` && `keydown.enter`\n      eventOn(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    }\n  }\n};\nconst unbind = el => {\n  const oldProp = el[PROPERTY] || {};\n  const trigger = oldProp.trigger;\n  const handler = oldProp.handler;\n  if (trigger && handler) {\n    eventOff(trigger, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(trigger, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'click', handler, EVENT_OPTIONS_PASSIVE);\n    eventOff(el, 'keydown', handler, EVENT_OPTIONS_PASSIVE);\n  }\n  delete el[PROPERTY];\n};\nconst componentUpdated = (el, binding, vnode) => {\n  const oldProp = el[PROPERTY] || {};\n  const target = getTarget(binding);\n  const trigger = getTriggerElement(el);\n  if (target !== oldProp.target || trigger !== oldProp.trigger) {\n    // We bind and rebind if the target or trigger changes\n    unbind(el);\n    bind(el, binding, vnode);\n  }\n  // If trigger element is not a button, ensure `role=\"button\"`\n  // is still set for accessibility\n  setRole(trigger);\n};\nconst updated = () => {};\n\n/*\n * Export our directive\n */\nconst VBModal = {\n  inserted: componentUpdated,\n  updated,\n  componentUpdated,\n  unbind\n};\n\nexport { VBModal };\n","(function(h,C){typeof exports==\"object\"&&typeof module!=\"undefined\"?C(exports):typeof define==\"function\"&&define.amd?define([\"exports\"],C):(h=typeof globalThis!=\"undefined\"?globalThis:h||self,C(h.modernScreenshot={}))})(this,function(h){var Ue;\"use strict\";var Qt=Object.defineProperty,Zt=Object.defineProperties;var er=Object.getOwnPropertyDescriptors;var Z=Object.getOwnPropertySymbols;var Le=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var Oe=Math.pow,Be=(h,C,T)=>C in h?Qt(h,C,{enumerable:!0,configurable:!0,writable:!0,value:T}):h[C]=T,D=(h,C)=>{for(var T in C||(C={}))Le.call(C,T)&&Be(h,T,C[T]);if(Z)for(var T of Z(C))Me.call(C,T)&&Be(h,T,C[T]);return h},L=(h,C)=>Zt(h,er(C));var We=(h,C)=>{var T={};for(var N in h)Le.call(h,N)&&C.indexOf(N)<0&&(T[N]=h[N]);if(h!=null&&Z)for(var N of Z(h))C.indexOf(N)<0&&Me.call(h,N)&&(T[N]=h[N]);return T};var E=(h,C,T)=>new Promise((N,M)=>{var z=R=>{try{W(T.next(R))}catch(j){M(j)}},O=R=>{try{W(T.throw(R))}catch(j){M(j)}},W=R=>R.done?N(R.value):Promise.resolve(R.value).then(z,O);W((T=T.apply(h,C)).next())});function C(e,t){return e[13]=1,e[14]=t>>8,e[15]=t&255,e[16]=t>>8,e[17]=t&255,e}const T=\"p\".charCodeAt(0),N=\"H\".charCodeAt(0),M=\"Y\".charCodeAt(0),z=\"s\".charCodeAt(0);let O;function W(){const e=new Int32Array(256);for(let t=0;t<256;t++){let r=t;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;e[t]=r}return e}function R(e){let t=-1;O||(O=W());for(let r=0;r<e.length;r++)t=O[(t^e[r])&255]^t>>>8;return t^-1}function j(e){const t=e.length-1;for(let r=t;r>=4;r--)if(e[r-4]===9&&e[r-3]===T&&e[r-2]===N&&e[r-1]===M&&e[r]===z)return r-3;return 0}function ae(e,t,r=!1){const n=new Uint8Array(13);t*=39.3701,n[0]=T,n[1]=N,n[2]=M,n[3]=z,n[4]=t>>>24,n[5]=t>>>16,n[6]=t>>>8,n[7]=t&255,n[8]=n[4],n[9]=n[5],n[10]=n[6],n[11]=n[7],n[12]=1;const a=R(n),s=new Uint8Array(4);if(s[0]=a>>>24,s[1]=a>>>16,s[2]=a>>>8,s[3]=a&255,r){const o=j(e);return e.set(n,o),e.set(s,o+13),e}else{const o=new Uint8Array(4);o[0]=0,o[1]=0,o[2]=0,o[3]=9;const i=new Uint8Array(54);return i.set(e,0),i.set(o,33),i.set(n,37),i.set(s,50),i}}const je=\"AAlwSFlz\",qe=\"AAAJcEhZ\",Ve=\"AAAACXBI\";function He(e){let t=e.indexOf(je);return t===-1&&(t=e.indexOf(qe)),t===-1&&(t=e.indexOf(Ve)),t}const ee=\"[modern-screenshot]\",F=typeof window!=\"undefined\",ze=F&&\"Worker\"in window,se=F&&\"atob\"in window,Xe=F&&\"btoa\"in window,te=F?(Ue=window.navigator)==null?void 0:Ue.userAgent:\"\",ie=te.includes(\"Chrome\"),X=te.includes(\"AppleWebKit\")&&!ie,re=te.includes(\"Firefox\"),Ge=e=>e&&\"__CONTEXT__\"in e,Ye=e=>e.constructor.name===\"CSSFontFaceRule\",Je=e=>e.constructor.name===\"CSSImportRule\",k=e=>e.nodeType===1,q=e=>typeof e.className==\"object\",ce=e=>e.tagName===\"image\",Ke=e=>e.tagName===\"use\",V=e=>k(e)&&typeof e.style!=\"undefined\"&&!q(e),Qe=e=>e.nodeType===8,Ze=e=>e.nodeType===3,_=e=>e.tagName===\"IMG\",G=e=>e.tagName===\"VIDEO\",et=e=>e.tagName===\"CANVAS\",le=e=>e.tagName===\"TEXTAREA\",tt=e=>e.tagName===\"INPUT\",rt=e=>e.tagName===\"STYLE\",nt=e=>e.tagName===\"SCRIPT\",ot=e=>e.tagName===\"SELECT\",at=e=>e.tagName===\"SLOT\",st=e=>e.tagName===\"IFRAME\",A=(...e)=>console.warn(ee,...e),it=e=>console.time(`${ee} ${e}`),ct=e=>console.timeEnd(`${ee} ${e}`),lt=e=>{var r;const t=(r=e==null?void 0:e.createElement)==null?void 0:r.call(e,\"canvas\");return t&&(t.height=t.width=1),t&&\"toDataURL\"in t&&Boolean(t.toDataURL(\"image/webp\").includes(\"image/webp\"))},ne=e=>e.startsWith(\"data:\");function ue(e,t){if(e.match(/^[a-z]+:\\/\\//i))return e;if(F&&e.match(/^\\/\\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!F)return e;const r=Y().implementation.createHTMLDocument(),n=r.createElement(\"base\"),a=r.createElement(\"a\");return r.head.appendChild(n),r.body.appendChild(a),t&&(n.href=t),a.href=e,a.href}function Y(e){var t;return(t=e&&k(e)?e==null?void 0:e.ownerDocument:e)!=null?t:window.document}const J=\"http://www.w3.org/2000/svg\";function fe(e,t,r){const n=Y(r).createElementNS(J,\"svg\");return n.setAttributeNS(null,\"width\",e.toString()),n.setAttributeNS(null,\"height\",t.toString()),n.setAttributeNS(null,\"viewBox\",`0 0 ${e} ${t}`),n}function de(e,t){let r=new XMLSerializer().serializeToString(e);return t&&(r=r.replace(/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\uD800-\\uDFFF\\uFFFE\\uFFFF]/ug,\"\")),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(r)}`}function ut(e,t=\"image/png\",r=1){return E(this,null,function*(){try{return yield new Promise((n,a)=>{e.toBlob(s=>{s?n(s):a(new Error(\"Blob is null\"))},t,r)})}catch(n){if(se)return A(\"Failed canvas to blob\",{type:t,quality:r},n),ft(e.toDataURL(t,r));throw n}})}function ft(e){var i,l;const[t,r]=e.split(\",\"),n=(l=(i=t.match(/data:(.+);/))==null?void 0:i[1])!=null?l:void 0,a=window.atob(r),s=a.length,o=new Uint8Array(s);for(let u=0;u<s;u+=1)o[u]=a.charCodeAt(u);return new Blob([o],{type:n})}function me(e,t){return new Promise((r,n)=>{const a=new FileReader;a.onload=()=>r(a.result),a.onerror=()=>n(a.error),a.onabort=()=>n(new Error(`Failed read blob to ${t}`)),t===\"dataUrl\"?a.readAsDataURL(e):t===\"arrayBuffer\"&&a.readAsArrayBuffer(e)})}const dt=e=>me(e,\"dataUrl\"),mt=e=>me(e,\"arrayBuffer\");function U(e,t){const r=Y(t).createElement(\"img\");return r.decoding=\"sync\",r.loading=\"eager\",r.src=e,r}function $(e,t){return new Promise(r=>{const{timeout:n,ownerDocument:a,onError:s}=t!=null?t:{},o=typeof e==\"string\"?U(e,Y(a)):e;let i=null,l=null;function u(){r(o),i&&clearTimeout(i),l==null||l()}if(n&&(i=setTimeout(u,n)),G(o)){const c=o.currentSrc||o.src;if(!c)return o.poster?$(o.poster,t).then(r):u();if(o.readyState>=2)return u();const f=u,d=m=>{A(\"Failed video load\",c,m),s==null||s(m),u()};l=()=>{o.removeEventListener(\"loadeddata\",f),o.removeEventListener(\"error\",d)},o.addEventListener(\"loadeddata\",f,{once:!0}),o.addEventListener(\"error\",d,{once:!0})}else{const c=ce(o)?o.href.baseVal:o.currentSrc||o.src;if(!c)return u();const f=()=>E(this,null,function*(){if(_(o)&&\"decode\"in o)try{yield o.decode()}catch(m){A(\"Failed to decode image, trying to render anyway\",o.dataset.originalSrc||c,m)}u()}),d=m=>{A(\"Failed image load\",o.dataset.originalSrc||c,m),u()};if(_(o)&&o.complete)return f();l=()=>{o.removeEventListener(\"load\",f),o.removeEventListener(\"error\",d)},o.addEventListener(\"load\",f,{once:!0}),o.addEventListener(\"error\",d,{once:!0})}})}function ge(e,t){return E(this,null,function*(){V(e)&&(_(e)||G(e)?yield $(e,{timeout:t}):yield Promise.all([\"img\",\"video\"].flatMap(r=>Array.from(e.querySelectorAll(r)).map(n=>$(n,{timeout:t})))))})}const he=function(){let t=0;const r=()=>`0000${(Math.random()*Oe(36,4)<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${r()}${t}`)}();function we(e){return e==null?void 0:e.split(\",\").map(t=>t.trim().replace(/\"|'/g,\"\").toLowerCase()).filter(Boolean)}function gt(e){return{time:t=>e&&it(t),timeEnd:t=>e&&ct(t),warn:(...t)=>e&&A(...t)}}function ht(e){return{cache:e?\"no-cache\":\"force-cache\"}}function x(e,t){return E(this,null,function*(){return Ge(e)?e:pe(e,L(D({},t),{autoDestruct:!0}))})}function pe(e,t){return E(this,null,function*(){var m,w,p,b,g;const{scale:r=1,workerUrl:n,workerNumber:a=1}=t||{},s=Boolean(t==null?void 0:t.debug),o=(m=t==null?void 0:t.features)!=null?m:!0,i=(w=e.ownerDocument)!=null?w:F?window.document:void 0,l=(b=(p=e.ownerDocument)==null?void 0:p.defaultView)!=null?b:F?window:void 0,u=new Map,c=L(D({width:0,height:0,quality:1,type:\"image/png\",scale:r,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:s,fetch:D({requestInit:ht((g=t==null?void 0:t.fetch)==null?void 0:g.bypassingCache),placeholderImage:\"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",bypassingCache:!1},t==null?void 0:t.fetch),fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:a,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1},t),{__CONTEXT__:!0,log:gt(s),node:e,ownerDocument:i,ownerWindow:l,dpi:r===1?null:96*r,svgStyleElement:ye(i),svgDefsElement:i==null?void 0:i.createElementNS(J,\"defs\"),svgStyles:new Map,defaultComputedStyles:new Map,workers:[...new Array(ze&&n&&a?a:0)].map(()=>{try{const S=new Worker(n);return S.onmessage=y=>E(this,null,function*(){var P,_e,Q,$e;const{url:v,result:I}=y.data;I?(_e=(P=u.get(v))==null?void 0:P.resolve)==null||_e.call(P,I):($e=(Q=u.get(v))==null?void 0:Q.reject)==null||$e.call(Q,new Error(`Error receiving message from worker: ${v}`))}),S.onmessageerror=y=>{var I,P;const{url:v}=y.data;(P=(I=u.get(v))==null?void 0:I.reject)==null||P.call(I,new Error(`Error receiving message from worker: ${v}`))},S}catch(S){return A(\"Failed to new Worker\",S),null}}).filter(Boolean),fontFamilies:new Set,fontCssTexts:new Map,acceptOfImage:`${[lt(i)&&\"image/webp\",\"image/svg+xml\",\"image/*\",\"*/*\"].filter(Boolean).join(\",\")};q=0.8`,requests:u,drawImageCount:0,tasks:[],features:o,isEnable:S=>{var y,v;return S===\"restoreScrollPosition\"?typeof o==\"boolean\"?!1:(y=o[S])!=null?y:!1:typeof o==\"boolean\"?o:(v=o[S])!=null?v:!0}});c.log.time(\"wait until load\"),yield ge(e,c.timeout),c.log.timeEnd(\"wait until load\");const{width:f,height:d}=wt(e,c);return c.width=f,c.height=d,c})}function ye(e){if(!e)return;const t=e.createElement(\"style\"),r=t.ownerDocument.createTextNode(`\n.______background-clip--text {\n  background-clip: text;\n  -webkit-background-clip: text;\n}\n`);return t.appendChild(r),t}function wt(e,t){let{width:r,height:n}=t;if(k(e)&&(!r||!n)){const a=e.getBoundingClientRect();r=r||a.width||Number(e.getAttribute(\"width\"))||0,n=n||a.height||Number(e.getAttribute(\"height\"))||0}return{width:r,height:n}}function pt(e,t){return E(this,null,function*(){const{log:r,timeout:n,drawImageCount:a,drawImageInterval:s}=t;r.time(\"image to canvas\");const o=yield $(e,{timeout:n}),{canvas:i,context2d:l}=yt(e.ownerDocument,t),u=()=>{try{l==null||l.drawImage(o,0,0,i.width,i.height)}catch(c){A(\"Failed to drawImage\",c)}};if(u(),t.isEnable(\"fixSvgXmlDecode\"))for(let c=0;c<a;c++)yield new Promise(f=>{setTimeout(()=>{u(),f()},c+s)});return t.drawImageCount=0,r.timeEnd(\"image to canvas\"),i})}function yt(e,t){const{width:r,height:n,scale:a,backgroundColor:s,maximumCanvasSize:o}=t,i=e.createElement(\"canvas\");i.width=Math.floor(r*a),i.height=Math.floor(n*a),i.style.width=`${r}px`,i.style.height=`${n}px`,o&&(i.width>o||i.height>o)&&(i.width>o&&i.height>o?i.width>i.height?(i.height*=o/i.width,i.width=o):(i.width*=o/i.height,i.height=o):i.width>o?(i.height*=o/i.width,i.width=o):(i.width*=o/i.height,i.height=o));const l=i.getContext(\"2d\");return l&&s&&(l.fillStyle=s,l.fillRect(0,0,i.width,i.height)),{canvas:i,context2d:l}}const bt=[\"width\",\"height\",\"-webkit-text-fill-color\"],St=[\"stroke\",\"fill\"];function be(e,t,r){var b;const{defaultComputedStyles:n,ownerDocument:a}=r,s=e.nodeName.toLowerCase(),o=q(e)&&s!==\"svg\",i=o?St.map(g=>[g,e.getAttribute(g)]).filter(([,g])=>g!==null):[],l=[o&&\"svg\",s,i.map((g,S)=>`${g}=${S}`).join(\",\"),t].filter(Boolean).join(\":\");if(n.has(l))return n.get(l);let u=r.sandbox;if(!u)try{a&&(u=a.createElement(\"iframe\"),u.id=`__SANDBOX__-${he()}`,u.width=\"0\",u.height=\"0\",u.style.visibility=\"hidden\",u.style.position=\"fixed\",a.body.appendChild(u),(b=u.contentWindow)==null||b.document.write('<!DOCTYPE html><meta charset=\"UTF-8\"><title></title><body>'),r.sandbox=u)}catch(g){A(\"Failed to create iframe sandbox\",g)}if(!u)return new Map;const c=u.contentWindow;if(!c)return new Map;const f=c.document;let d,m;o?(d=f.createElementNS(J,\"svg\"),m=d.ownerDocument.createElementNS(d.namespaceURI,s),i.forEach(([g,S])=>{m.setAttributeNS(null,g,S)}),d.appendChild(m)):d=m=f.createElement(s),m.textContent=\" \",f.body.appendChild(d);const w=c.getComputedStyle(m,t),p=new Map;for(let g=w.length,S=0;S<g;S++){const y=w.item(S);bt.includes(y)||p.set(y,w.getPropertyValue(y))}return f.body.removeChild(d),n.set(l,p),p}function Se(e,t,r){var i;const n=new Map,a=[],s=new Map;if(r)for(const l of r)o(l);else for(let l=e.length,u=0;u<l;u++){const c=e.item(u);o(c)}for(let l=a.length,u=0;u<l;u++)(i=s.get(a[u]))==null||i.forEach((c,f)=>n.set(f,c));function o(l){const u=e.getPropertyValue(l),c=e.getPropertyPriority(l),f=l.lastIndexOf(\"-\"),d=f>-1?l.substring(0,f):void 0;if(d){let m=s.get(d);m||(m=new Map,s.set(d,m)),m.set(l,[u,c])}t.get(l)===u&&!c||(d?a.push(d):n.set(l,[u,c]))}return n}const Et=[\":before\",\":after\"],Ct=[\":-webkit-scrollbar\",\":-webkit-scrollbar-button\",\":-webkit-scrollbar-thumb\",\":-webkit-scrollbar-track\",\":-webkit-scrollbar-track-piece\",\":-webkit-scrollbar-corner\",\":-webkit-resizer\"];function Tt(e,t,r,n){const{ownerWindow:a,svgStyleElement:s,svgStyles:o,currentNodeStyle:i}=n;if(!s||!a)return;function l(u){var S;const c=a.getComputedStyle(e,u);let f=c.getPropertyValue(\"content\");if(!f||f===\"none\")return;f=f.replace(/(')|(\")|(counter\\(.+\\))/g,\"\");const d=[he()],m=be(e,u,n);i==null||i.forEach((y,v)=>{m.delete(v)});const w=Se(c,m,n.includeStyleProperties);w.delete(\"content\"),w.delete(\"-webkit-locale\"),((S=w.get(\"background-clip\"))==null?void 0:S[0])===\"text\"&&t.classList.add(\"______background-clip--text\");const p=[`content: '${f}';`];if(w.forEach(([y,v],I)=>{p.push(`${I}: ${y}${v?\" !important\":\"\"};`)}),p.length===1)return;try{t.className=[t.className,...d].join(\" \")}catch(y){return}const b=p.join(`\n  `);let g=o.get(b);g||(g=[],o.set(b,g)),g.push(`.${d[0]}:${u}`)}Et.forEach(l),r&&Ct.forEach(l)}function vt(e,t){le(e)&&(t.innerHTML=e.value),(le(e)||tt(e)||ot(e))&&t.setAttribute(\"value\",e.value)}function At(e,t,r,n){var f,d,m,w;const{ownerWindow:a,includeStyleProperties:s,currentParentNodeStyle:o}=n,i=t.style,l=a.getComputedStyle(e),u=be(e,null,n);o==null||o.forEach((p,b)=>{u.delete(b)});const c=Se(l,u,s);return c.delete(\"transition-property\"),c.delete(\"all\"),c.delete(\"d\"),c.delete(\"content\"),r&&(c.delete(\"margin-top\"),c.delete(\"margin-right\"),c.delete(\"margin-bottom\"),c.delete(\"margin-left\"),c.delete(\"margin-block-start\"),c.delete(\"margin-block-end\"),c.delete(\"margin-inline-start\"),c.delete(\"margin-inline-end\"),c.set(\"box-sizing\",[\"border-box\",\"\"])),((f=c.get(\"background-clip\"))==null?void 0:f[0])===\"text\"&&t.classList.add(\"______background-clip--text\"),ie&&(c.has(\"font-kerning\")||c.set(\"font-kerning\",[\"normal\",\"\"]),(((d=c.get(\"overflow-x\"))==null?void 0:d[0])===\"hidden\"||((m=c.get(\"overflow-y\"))==null?void 0:m[0])===\"hidden\")&&((w=c.get(\"text-overflow\"))==null?void 0:w[0])===\"ellipsis\"&&e.scrollWidth===e.clientWidth&&c.set(\"text-overflow\",[\"clip\",\"\"])),c.forEach(([p,b],g)=>{i.setProperty(g,p,b)}),c}function Nt(e,t){var r;try{if((r=e==null?void 0:e.contentDocument)!=null&&r.body)return oe(e.contentDocument.body,t)}catch(n){A(\"Failed to clone iframe\",n)}return e.cloneNode(!1)}function Ee(e){if(e.ownerDocument)try{const a=e.toDataURL();if(a!==\"data:,\")return U(a,e.ownerDocument)}catch(a){}const t=e.cloneNode(!1),r=e.getContext(\"2d\"),n=t.getContext(\"2d\");try{return r&&n&&n.putImageData(r.getImageData(0,0,e.width,e.height),0,0),t}catch(a){A(\"Failed to clone canvas\",a)}return t}function It(e){return E(this,null,function*(){if(e.ownerDocument&&!e.currentSrc&&e.poster)return U(e.poster,e.ownerDocument);const t=e.cloneNode(!1);t.crossOrigin=\"anonymous\",e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc);const r=t.ownerDocument;if(r){let n=!0;if(yield $(t,{onError:()=>n=!1}),!n)return e.poster?U(e.poster,e.ownerDocument):t;t.currentTime=e.currentTime,yield new Promise(s=>{t.addEventListener(\"seeked\",s,{once:!0})});const a=r.createElement(\"canvas\");a.width=e.offsetWidth,a.height=e.offsetHeight;try{const s=a.getContext(\"2d\");s&&s.drawImage(t,0,0,a.width,a.height)}catch(s){return A(\"Failed to clone video\",s),e.poster?U(e.poster,e.ownerDocument):t}return Ee(a)}return t})}function kt(e){const t=e.cloneNode(!1);return e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=\"\"),t.loading===\"lazy\"&&(t.loading=\"eager\"),t}function xt(e,t){return et(e)?Ee(e):st(e)?Nt(e,t):_(e)?kt(e):G(e)?It(e):e.cloneNode(!1)}const Ce=new Set([\"symbol\"]);function Te(e,t,r,n){return E(this,null,function*(){if(k(r)&&(rt(r)||nt(r))||n.filter&&!n.filter(r))return;Ce.has(t.nodeName)||Ce.has(r.nodeName)?n.currentParentNodeStyle=void 0:n.currentParentNodeStyle=n.currentNodeStyle;const a=yield oe(r,n);n.isEnable(\"restoreScrollPosition\")&&Dt(e,a),t.appendChild(a)})}function ve(e,t,r){return E(this,null,function*(){var a,s;const n=(s=k(e)?(a=e.shadowRoot)==null?void 0:a.firstChild:void 0)!=null?s:e.firstChild;for(let o=n;o;o=o.nextSibling)if(!Qe(o))if(k(o)&&at(o)&&typeof o.assignedNodes==\"function\"){const i=o.assignedNodes();for(let l=0;l<i.length;l++)yield Te(e,t,i[l],r)}else yield Te(e,t,o,r)})}function Dt(e,t){if(!V(e)||!V(t))return;const{scrollTop:r,scrollLeft:n}=e;if(!r&&!n)return;const{transform:a}=t.style,s=new DOMMatrix(a),{a:o,b:i,c:l,d:u}=s;s.a=1,s.b=0,s.c=0,s.d=1,s.translateSelf(-n,-r),s.a=o,s.b=i,s.c=l,s.d=u,t.style.transform=s.toString()}function Rt(e,t){const{backgroundColor:r,width:n,height:a,style:s}=t,o=e.style;if(r&&o.setProperty(\"background-color\",r,\"important\"),n&&o.setProperty(\"width\",`${n}px`,\"important\"),a&&o.setProperty(\"height\",`${a}px`,\"important\"),s)for(const i in s)o[i]=s[i]}const Pt=/^[\\w-:]+$/;function oe(e,t,r=!1){return E(this,null,function*(){var i,l,u,c;const{ownerDocument:n,ownerWindow:a,fontFamilies:s}=t;if(n&&Ze(e))return n.createTextNode(e.data);if(n&&a&&k(e)&&(V(e)||q(e))){const f=yield xt(e,t);if(t.isEnable(\"removeAbnormalAttributes\")){const w=f.getAttributeNames();for(let p=w.length,b=0;b<p;b++){const g=w[b];Pt.test(g)||f.removeAttribute(g)}}const d=t.currentNodeStyle=At(e,f,r,t);r&&Rt(f,t);let m=!1;if(t.isEnable(\"copyScrollbar\")){const w=[(i=d.get(\"overflow-x\"))==null?void 0:i[0],(l=d.get(\"overflow-y\"))==null?void 0:l[1]];m=w.includes(\"scroll\")||(w.includes(\"auto\")||w.includes(\"overlay\"))&&(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)}return Tt(e,f,m,t),vt(e,f),(c=we((u=d.get(\"font-family\"))==null?void 0:u[0]))==null||c.forEach(w=>s.add(w)),G(e)||(yield ve(e,f,t)),f}const o=e.cloneNode(!1);return yield ve(e,o,t),o})}function Ae(e){if(e.ownerDocument=void 0,e.ownerWindow=void 0,e.svgStyleElement=void 0,e.svgDefsElement=void 0,e.svgStyles.clear(),e.defaultComputedStyles.clear(),e.sandbox){try{e.sandbox.remove()}catch(t){}e.sandbox=void 0}e.workers=[],e.fontFamilies.clear(),e.fontCssTexts.clear(),e.requests.clear(),e.tasks=[]}function Ft(e){const i=e,{url:t,timeout:r,responseType:n}=i,a=We(i,[\"url\",\"timeout\",\"responseType\"]),s=new AbortController,o=r?setTimeout(()=>s.abort(),r):void 0;return fetch(t,D({signal:s.signal},a)).then(l=>{if(!l.ok)throw new Error(\"Failed fetch, not 2xx response\",{cause:l});switch(n){case\"dataUrl\":return l.blob().then(dt);case\"text\":default:return l.text()}}).finally(()=>clearTimeout(o))}function H(e,t){const{url:r,requestType:n=\"text\",responseType:a=\"text\",imageDom:s}=t;let o=r;const{timeout:i,acceptOfImage:l,requests:u,fetchFn:c,fetch:{requestInit:f,bypassingCache:d,placeholderImage:m},workers:w}=e;n===\"image\"&&(X||re)&&e.drawImageCount++;let p=u.get(r);if(!p){d&&d instanceof RegExp&&d.test(o)&&(o+=(/\\?/.test(o)?\"&\":\"?\")+new Date().getTime());const b=D({url:o,timeout:i,responseType:a,headers:n===\"image\"?{accept:l}:void 0},f);p={type:n,resolve:void 0,reject:void 0,response:null},p.response=(()=>E(this,null,function*(){if(c&&n===\"image\"){const g=yield c(r);if(g)return g}return!X&&r.startsWith(\"http\")&&w.length?new Promise((g,S)=>{w[u.size&w.length-1].postMessage(D({rawUrl:r},b)),p.resolve=g,p.reject=S}):Ft(b)}))().catch(g=>{if(u.delete(r),n===\"image\"&&m)return A(\"Failed to fetch image base64, trying to use placeholder image\",o),typeof m==\"string\"?m:m(s);throw g}),u.set(r,p)}return p.response}function Ne(e,t,r,n){return E(this,null,function*(){if(!Ie(e))return e;for(const[a,s]of Ut(e,t))try{const o=yield H(r,{url:s,requestType:n?\"image\":\"text\",responseType:\"dataUrl\"});e=e.replace(_t(a),`$1${o}$3`)}catch(o){A(\"Failed to fetch css data url\",a,o)}return e})}function Ie(e){return/url\\((['\"]?)([^'\"]+?)\\1\\)/.test(e)}const ke=/url\\((['\"]?)([^'\"]+?)\\1\\)/g;function Ut(e,t){const r=[];return e.replace(ke,(n,a,s)=>(r.push([s,ue(s,t)]),n)),r.filter(([n])=>!ne(n))}function _t(e){const t=e.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g,\"\\\\$1\");return new RegExp(`(url\\\\(['\"]?)(${t})(['\"]?\\\\))`,\"g\")}function $t(e,t){return E(this,null,function*(){const{ownerDocument:r,svgStyleElement:n,fontFamilies:a,fontCssTexts:s,tasks:o,font:i}=t;if(!(!r||!n||!a.size))if(i&&i.cssText){const l=De(i.cssText,t);n.appendChild(r.createTextNode(`${l}\n`))}else{const l=Array.from(r.styleSheets).filter(c=>{try{return\"cssRules\"in c&&Boolean(c.cssRules.length)}catch(f){return A(`Error while reading CSS rules from ${c.href}`,f),!1}});yield Promise.all(l.flatMap(c=>Array.from(c.cssRules).map((f,d)=>E(this,null,function*(){if(Je(f)){let m=d+1;const w=f.href;let p=\"\";try{p=yield H(t,{url:w,requestType:\"text\",responseType:\"text\"})}catch(g){A(`Error fetch remote css import from ${w}`,g)}const b=p.replace(ke,(g,S,y)=>g.replace(y,ue(y,w)));for(const g of Lt(b))try{c.insertRule(g,g.startsWith(\"@import\")?m+=1:c.cssRules.length)}catch(S){A(\"Error inserting rule from remote css import\",{rule:g,error:S})}}})))),l.flatMap(c=>Array.from(c.cssRules)).filter(c=>{var f;return Ye(c)&&Ie(c.style.getPropertyValue(\"src\"))&&((f=we(c.style.getPropertyValue(\"font-family\")))==null?void 0:f.some(d=>a.has(d)))}).forEach(c=>{const f=c,d=s.get(f.cssText);d?n.appendChild(r.createTextNode(`${d}\n`)):o.push(Ne(f.cssText,f.parentStyleSheet?f.parentStyleSheet.href:null,t).then(m=>{m=De(m,t),s.set(f.cssText,m),n.appendChild(r.createTextNode(`${m}\n`))}))})}})}const Bt=/(\\/\\*[\\s\\S]*?\\*\\/)/gi,xe=/((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})/gi;function Lt(e){if(e==null)return[];const t=[];let r=e.replace(Bt,\"\");for(;;){const s=xe.exec(r);if(!s)break;t.push(s[0])}r=r.replace(xe,\"\");const n=/@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi,a=new RegExp(\"((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})\",\"gi\");for(;;){let s=n.exec(r);if(s)a.lastIndex=n.lastIndex;else if(s=a.exec(r),s)n.lastIndex=a.lastIndex;else break;t.push(s[0])}return t}const Mt=/url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g,Ot=/src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;function De(e,t){const{font:r}=t,n=r?r==null?void 0:r.preferredFormat:void 0;return n?e.replace(Ot,a=>{for(;;){const[s,,o]=Mt.exec(a)||[];if(!o)return\"\";if(o===n)return`src: ${s};`}}):e}function Wt(e,t){if(_(e)){const r=e.currentSrc||e.src;if(!ne(r))return[H(t,{url:r,imageDom:e,requestType:\"image\",responseType:\"dataUrl\"}).then(n=>{n&&(e.srcset=\"\",e.dataset.originalSrc=r,e.src=n||\"\")})];(X||re)&&t.drawImageCount++}else if(q(e)&&!ne(e.href.baseVal)){const r=e.href.baseVal;return[H(t,{url:r,imageDom:e,requestType:\"image\",responseType:\"dataUrl\"}).then(n=>{n&&(e.dataset.originalSrc=r,e.href.baseVal=n||\"\")})]}return[]}const jt=[\"background-image\",\"border-image-source\",\"-webkit-border-image\",\"-webkit-mask-image\",\"list-style-image\"];function qt(e,t){return jt.map(r=>{const n=e.getPropertyValue(r);return!n||n===\"none\"?null:((X||re)&&t.drawImageCount++,Ne(n,null,t,!0).then(a=>{!a||n===a||e.setProperty(r,a,e.getPropertyPriority(r))}))}).filter(Boolean)}function Vt(e,t){var i;const{ownerDocument:r,svgDefsElement:n}=t,a=(i=e.getAttribute(\"href\"))!=null?i:e.getAttribute(\"xlink:href\");if(!a)return[];const[s,o]=a.split(\"#\");if(o){const l=`#${o}`,u=r==null?void 0:r.querySelector(`svg ${l}`);if(s&&e.setAttribute(\"href\",l),n!=null&&n.querySelector(l))return[];if(u)return n==null||n.appendChild(u.cloneNode(!0)),[];if(s)return[H(t,{url:s,responseType:\"text\"}).then(c=>{n==null||n.insertAdjacentHTML(\"beforeend\",c)})]}return[]}function Re(e,t){const{tasks:r}=t;k(e)&&((_(e)||ce(e))&&r.push(...Wt(e,t)),Ke(e)&&r.push(...Vt(e,t))),V(e)&&r.push(...qt(e.style,t)),e.childNodes.forEach(n=>{Re(n,t)})}function Pe(e,t){return E(this,null,function*(){const r=yield x(e,t);if(k(r.node)&&q(r.node))return r.node;const{ownerDocument:n,log:a,tasks:s,svgStyleElement:o,svgDefsElement:i,svgStyles:l,font:u,progress:c,autoDestruct:f,onCloneNode:d,onEmbedNode:m,onCreateForeignObjectSvg:w}=r;a.time(\"clone node\");const p=yield oe(r.node,r,!0);if(o&&n){let v=\"\";l.forEach((I,P)=>{v+=`${I.join(`,\n`)} {\n  ${P}\n}\n`}),o.appendChild(n.createTextNode(v))}a.timeEnd(\"clone node\"),d==null||d(p),u!==!1&&k(p)&&(a.time(\"embed web font\"),yield $t(p,r),a.timeEnd(\"embed web font\")),a.time(\"embed node\"),Re(p,r);const b=s.length;let g=0;const S=()=>E(this,null,function*(){for(;;){const v=s.pop();if(!v)break;try{yield v}catch(I){A(\"Failed to run task\",I)}c==null||c(++g,b)}});c==null||c(g,b),yield Promise.all([...Array(4)].map(S)),a.timeEnd(\"embed node\"),m==null||m(p);const y=Ht(p,r);return i&&y.insertBefore(i,y.children[0]),o&&y.insertBefore(o,y.children[0]),f&&Ae(r),w==null||w(y),y})}function Ht(e,t){const{width:r,height:n}=t,a=fe(r,n,e.ownerDocument),s=a.ownerDocument.createElementNS(a.namespaceURI,\"foreignObject\");return s.setAttributeNS(null,\"x\",\"0%\"),s.setAttributeNS(null,\"y\",\"0%\"),s.setAttributeNS(null,\"width\",\"100%\"),s.setAttributeNS(null,\"height\",\"100%\"),s.append(e),a.appendChild(s),a}function K(e,t){return E(this,null,function*(){var o;const r=yield x(e,t),n=yield Pe(r),a=de(n,r.isEnable(\"removeControlCharacter\"));r.autoDestruct||(r.svgStyleElement=ye(r.ownerDocument),r.svgDefsElement=(o=r.ownerDocument)==null?void 0:o.createElementNS(J,\"defs\"),r.svgStyles.clear());const s=U(a,n.ownerDocument);return yield pt(s,r)})}function zt(e,t){return E(this,null,function*(){const r=yield x(e,t),{log:n,type:a,quality:s,dpi:o}=r,i=yield K(r);n.time(\"canvas to blob\");const l=yield ut(i,a,s);if([\"image/png\",\"image/jpeg\"].includes(a)&&o){const u=yield mt(l.slice(0,33));let c=new Uint8Array(u);return a===\"image/png\"?c=ae(c,o):a===\"image/jpeg\"&&(c=C(c,o)),n.timeEnd(\"canvas to blob\"),new Blob([c,l.slice(33)],{type:a})}return n.timeEnd(\"canvas to blob\"),l})}function B(e,t){return E(this,null,function*(){const r=yield x(e,t),{log:n,quality:a,type:s,dpi:o}=r,i=yield K(r);n.time(\"canvas to data url\");let l=i.toDataURL(s,a);if([\"image/png\",\"image/jpeg\"].includes(s)&&o&&se&&Xe){const[u,c]=l.split(\",\");let f=0,d=!1;if(s===\"image/png\"){const y=He(c);y>=0?(f=Math.ceil((y+28)/3)*4,d=!0):f=33/3*4}else s===\"image/jpeg\"&&(f=18/3*4);const m=c.substring(0,f),w=c.substring(f),p=window.atob(m),b=new Uint8Array(p.length);for(let y=0;y<b.length;y++)b[y]=p.charCodeAt(y);const g=s===\"image/png\"?ae(b,o,d):C(b,o),S=window.btoa(String.fromCharCode(...g));l=[u,\",\",S,w].join(\"\")}return n.timeEnd(\"canvas to data url\"),l})}function Fe(e,t){return E(this,null,function*(){const r=yield x(e,t),{width:n,height:a,ownerDocument:s}=r,o=yield B(r),i=fe(n,a,s),l=i.ownerDocument.createElementNS(i.namespaceURI,\"image\");return l.setAttributeNS(null,\"href\",o),l.setAttributeNS(null,\"height\",\"100%\"),l.setAttributeNS(null,\"width\",\"100%\"),i.appendChild(l),de(i,r.isEnable(\"removeControlCharacter\"))})}function Xt(e,t){return E(this,null,function*(){const r=yield x(e,t),{ownerDocument:n,width:a,height:s,scale:o,type:i}=r,l=i===\"image/svg+xml\"?yield Fe(r):yield B(r),u=U(l,n);return u.width=Math.floor(a*o),u.height=Math.floor(s*o),u.style.width=`${a}px`,u.style.height=`${s}px`,u})}function Gt(e,t){return E(this,null,function*(){return B(yield x(e,L(D({},t),{type:\"image/jpeg\"})))})}function Yt(e,t){return E(this,null,function*(){const r=yield x(e,t),n=yield K(r);return n.getContext(\"2d\").getImageData(0,0,n.width,n.height).data})}function Jt(e,t){return E(this,null,function*(){return B(yield x(e,L(D({},t),{type:\"image/png\"})))})}function Kt(e,t){return E(this,null,function*(){return B(yield x(e,L(D({},t),{type:\"image/webp\"})))})}h.createContext=pe,h.destroyContext=Ae,h.domToBlob=zt,h.domToCanvas=K,h.domToDataUrl=B,h.domToForeignObjectSvg=Pe,h.domToImage=Xt,h.domToJpeg=Gt,h.domToPixel=Yt,h.domToPng=Jt,h.domToSvg=Fe,h.domToWebp=Kt,h.loadMedia=$,h.waitUntilLoad=ge,Object.defineProperty(h,Symbol.toStringTag,{value:\"Module\"})});\n","export function initPipelineCountListener(el) {\n  if (!el) return;\n\n  el.addEventListener('update-pipelines-count', (event) => {\n    if (event.detail.pipelineCount) {\n      const badge = document.querySelector('.js-pipelines-mr-count');\n\n      badge.textContent = event.detail.pipelineCount;\n    }\n  });\n}\n","import hljsCore from 'highlight.js/lib/core';\nimport languageLoader from '~/content_editor/services/highlight_js_language_loader';\nimport { ROUGE_TO_HLJS_LANGUAGE_MAP } from '~/vue_shared/components/source_viewer/constants';\nimport { registerPlugins } from './plugins/index';\n\nconst loadLanguage = async (language, hljs) => {\n  const languageDefinition = await languageLoader[language]();\n  hljs.registerLanguage(language, languageDefinition.default);\n};\n\nconst loadSubLanguages = async (languageDefinition, hljs) => {\n  // Some files can contain sub-languages (i.e., Svelte); this ensures that sub-languages are also loaded\n  if (!languageDefinition?.contains) return;\n\n  // generate list of languages to load\n  const languages = new Set(\n    languageDefinition.contains\n      .filter((component) => Boolean(component.subLanguage))\n      .map((component) => component.subLanguage),\n  );\n\n  if (languageDefinition.subLanguage) {\n    languages.add(languageDefinition.subLanguage);\n  }\n\n  await Promise.all([...languages].map((language) => loadLanguage(language, hljs)));\n};\n\nconst registerLanguage = async (hljs, language) => {\n  await loadLanguage(language, hljs);\n  await loadSubLanguages(hljs.getLanguage(language), hljs);\n};\n\nconst initHighlightJs = async (language, plugins) => {\n  const hljs = hljsCore.newInstance();\n\n  registerPlugins(hljs, plugins);\n  await registerLanguage(hljs, language);\n\n  return hljs;\n};\n\nconst highlightContent = async (lang, rawContent, plugins) => {\n  const language = ROUGE_TO_HLJS_LANGUAGE_MAP[lang.toLowerCase()];\n  let highlightedContent;\n\n  if (language) {\n    const hljs = await initHighlightJs(language, plugins);\n    highlightedContent = hljs.highlight(rawContent, { language }).value;\n  }\n\n  return highlightedContent;\n};\n\nexport { highlightContent };\n","var baseDelay = require('./_baseDelay'),\n    baseRest = require('./_baseRest'),\n    toNumber = require('./toNumber');\n\n/**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n *   console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\nvar delay = baseRest(function(func, wait, args) {\n  return baseDelay(func, toNumber(wait) || 0, args);\n});\n\nmodule.exports = delay;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.file.isHeader)?_c('file-header',{attrs:{\"path\":_vm.file.path}}):_c('div',{staticClass:\"file-row\",class:_vm.fileClass,attrs:{\"title\":_vm.textForTitle,\"data-level\":_vm.level,\"role\":\"button\"},on:{\"click\":_vm.clickFile,\"mouseleave\":function($event){return _vm.$emit('mouseleave', $event)}}},[_c('div',{staticClass:\"file-row-name-container\"},[_c('span',{ref:\"textOutput\",staticClass:\"file-row-name\",class:[_vm.fileClasses, { 'str-truncated': !_vm.truncateMiddle, 'gl-min-w-0': _vm.truncateMiddle }],attrs:{\"title\":_vm.file.name,\"data-qa-file-name\":_vm.file.name,\"data-testid\":\"file-row-name-container\"}},[(_vm.file.linked)?_c('gl-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(\n          _vm.__('This file was linked in the page URL and will appear as the first one in the list')\n        ),expression:\"\\n          __('This file was linked in the page URL and will appear as the first one in the list')\\n        \"}],attrs:{\"name\":\"link\",\"size\":16}}):_vm._e(),_vm._v(\" \"),_c('file-icon',{staticClass:\"file-row-icon\",class:{ 'gl-text-subtle': _vm.file.type === 'tree' },attrs:{\"file-name\":_vm.file.name,\"loading\":_vm.file.loading,\"folder\":_vm.isTree,\"opened\":_vm.file.opened,\"size\":16,\"submodule\":_vm.file.submodule}}),_vm._v(\" \"),(_vm.truncateMiddle)?_c('gl-truncate',{staticClass:\"gl-pr-7\",attrs:{\"text\":_vm.file.name,\"position\":\"middle\"}}):[_vm._v(_vm._s(_vm.file.name))]],2),_vm._v(\" \"),_vm._t(\"default\")],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!./file_row_header.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!./file_row_header.vue?vue&type=script&lang=js\"","<script>\nimport { GlTruncate } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlTruncate,\n  },\n  props: {\n    path: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"file-row-header sticky-top js-file-row-header gl-bg-white gl-px-2\" :title=\"path\">\n    <gl-truncate :text=\"path\" position=\"middle\" class=\"gl-font-bold\" />\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!./file_row.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file_row.vue?vue&type=script&lang=js\"","<script>\nimport { GlTruncate, GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { escapeFileUrl } from '~/lib/utils/url_utility';\nimport FileIcon from '~/vue_shared/components/file_icon.vue';\nimport FileHeader from '~/vue_shared/components/file_row_header.vue';\n\nexport default {\n  name: 'FileRow',\n  components: {\n    FileHeader,\n    FileIcon,\n    GlTruncate,\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    file: {\n      type: Object,\n      required: true,\n    },\n    fileUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    level: {\n      type: Number,\n      required: true,\n    },\n    fileClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    truncateMiddle: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    isTree() {\n      return this.file.type === 'tree';\n    },\n    isBlob() {\n      return this.file.type === 'blob';\n    },\n    fileClass() {\n      return {\n        'file-open': this.isBlob && this.file.opened,\n        'is-active': this.isBlob && this.file.active,\n        folder: this.isTree,\n        'is-open': this.file.opened,\n        'is-linked': this.file.linked,\n      };\n    },\n    textForTitle() {\n      // don't output a title if we don't have the expanded path\n      return this.file?.tree?.length ? this.file.tree[0].parentPath : false;\n    },\n    fileRouterUrl() {\n      return this.fileUrl || `/project${this.file.url}`;\n    },\n  },\n  watch: {\n    'file.active': function fileActiveWatch(active) {\n      if (this.file.type === 'blob' && active) {\n        this.scrollIntoView();\n      }\n    },\n  },\n  mounted() {\n    if (this.hasPathAtCurrentRoute()) {\n      this.scrollIntoView(true);\n    }\n  },\n  methods: {\n    toggleTreeOpen(path) {\n      this.$emit('toggleTreeOpen', path);\n    },\n    clickedFile(path) {\n      this.$emit('clickFile', path);\n    },\n    clickFile() {\n      // Manual Action if a tree is selected/opened\n      if (this.isTree && this.hasUrlAtCurrentRoute()) {\n        this.toggleTreeOpen(this.file.path);\n      }\n\n      if (this.$router && !this.hasUrlAtCurrentRoute()) this.$router.push(this.fileRouterUrl);\n\n      if (this.isBlob) this.clickedFile(this.file.path);\n    },\n    scrollIntoView(isInit = false) {\n      const block = isInit && this.isTree ? 'center' : 'nearest';\n\n      this.$el.scrollIntoView({\n        behavior: 'smooth',\n        block,\n      });\n    },\n    hasPathAtCurrentRoute() {\n      if (!this.$router || !this.$router.currentRoute) {\n        return false;\n      }\n\n      // - strip route up to \"/-/\" and ending \"/\"\n      const routePath = this.$router.currentRoute.path\n        .replace(/^.*?[/]-[/]/g, '')\n        .replace(/[/]$/g, '');\n\n      // - strip ending \"/\"\n      const filePath = this.file.path.replace(/[/]$/g, '');\n\n      return filePath === routePath;\n    },\n    hasUrlAtCurrentRoute() {\n      if (!this.$router || !this.$router.currentRoute) return true;\n\n      return this.$router.currentRoute.path === escapeFileUrl(this.fileRouterUrl);\n    },\n  },\n};\n</script>\n\n<template>\n  <file-header v-if=\"file.isHeader\" :path=\"file.path\" />\n  <div\n    v-else\n    :class=\"fileClass\"\n    :title=\"textForTitle\"\n    :data-level=\"level\"\n    class=\"file-row\"\n    role=\"button\"\n    @click=\"clickFile\"\n    @mouseleave=\"$emit('mouseleave', $event)\"\n  >\n    <div class=\"file-row-name-container\">\n      <span\n        ref=\"textOutput\"\n        class=\"file-row-name\"\n        :title=\"file.name\"\n        :data-qa-file-name=\"file.name\"\n        data-testid=\"file-row-name-container\"\n        :class=\"[fileClasses, { 'str-truncated': !truncateMiddle, 'gl-min-w-0': truncateMiddle }]\"\n      >\n        <gl-icon\n          v-if=\"file.linked\"\n          v-gl-tooltip=\"\n            __('This file was linked in the page URL and will appear as the first one in the list')\n          \"\n          name=\"link\"\n          :size=\"16\"\n        />\n        <file-icon\n          class=\"file-row-icon\"\n          :class=\"{ 'gl-text-subtle': file.type === 'tree' }\"\n          :file-name=\"file.name\"\n          :loading=\"file.loading\"\n          :folder=\"isTree\"\n          :opened=\"file.opened\"\n          :size=\"16\"\n          :submodule=\"file.submodule\"\n        />\n        <gl-truncate v-if=\"truncateMiddle\" :text=\"file.name\" position=\"middle\" class=\"gl-pr-7\" />\n        <template v-else>{{ file.name }}</template>\n      </span>\n      <slot></slot>\n    </div>\n  </div>\n</template>\n\n<style>\n.file-row {\n  display: flex;\n  align-items: center;\n  height: var(--file-row-height, 32px);\n  padding: 4px 8px;\n  margin-left: -8px;\n  margin-right: -8px;\n  border-radius: 3px;\n  text-align: left;\n  cursor: pointer;\n}\n\n.file-row-name-container {\n  display: flex;\n  width: 100%;\n  align-items: center;\n  overflow: visible;\n}\n\n.file-row-name {\n  display: inline-block;\n  flex: 1;\n  max-width: inherit;\n  height: 19px;\n  line-height: 16px;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  margin-left: calc(var(--level) * 16px);\n}\n\n.file-row-name .file-row-icon {\n  margin-right: 2px;\n  vertical-align: middle;\n}\n</style>\n","import { render, staticRenderFns } from \"./file_row_header.vue?vue&type=template&id=ea716598\"\nimport script from \"./file_row_header.vue?vue&type=script&lang=js\"\nexport * from \"./file_row_header.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:\"file-row-header sticky-top js-file-row-header gl-bg-white gl-px-2\",attrs:{\"title\":_vm.path}},[_c('gl-truncate',{staticClass:\"gl-font-bold\",attrs:{\"text\":_vm.path,\"position\":\"middle\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--20-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file_row.vue?vue&type=style&index=0&id=760065ee&prod&lang=css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./file_row.vue?vue&type=template&id=760065ee\"\nimport script from \"./file_row.vue?vue&type=script&lang=js\"\nexport * from \"./file_row.vue?vue&type=script&lang=js\"\nimport style0 from \"./file_row.vue?vue&type=style&index=0&id=760065ee&prod&lang=css\"\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-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"data-track-action\":\"click_button\",\"data-track-label\":\"reply_comment_button\",\"category\":\"tertiary\",\"icon\":\"reply\",\"title\":_vm.$options.i18n.buttonText,\"aria-label\":_vm.$options.i18n.buttonText},on:{\"click\":function($event){return _vm.$emit('startReplying')}}})\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!./reply_button.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!./reply_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlButton } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  i18n: {\n    buttonText: __('Reply to comment'),\n  },\n  name: 'ReplyButton',\n  components: {\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n};\n</script>\n\n<template>\n  <gl-button\n    v-gl-tooltip\n    data-track-action=\"click_button\"\n    data-track-label=\"reply_comment_button\"\n    category=\"tertiary\"\n    icon=\"reply\"\n    :title=\"$options.i18n.buttonText\"\n    :aria-label=\"$options.i18n.buttonText\"\n    @click=\"$emit('startReplying')\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./reply_button.vue?vue&type=template&id=1546171c\"\nimport script from \"./reply_button.vue?vue&type=script&lang=js\"\nexport * from \"./reply_button.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 { BFormRadio } from '../../../../vendor/bootstrap-vue/src/components/form-radio/form-radio';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  model\n} = BFormRadio.options;\nvar script = {\n  name: 'GlFormRadio',\n  components: {\n    BFormRadio\n  },\n  inheritAttrs: false,\n  model: {\n    prop: model.prop,\n    event: model.event\n  },\n  props: {\n    /**\n     * Whether the radio is checked\n     */\n    checked: {\n      type: [String, Number, Boolean, Object],\n      required: false,\n      default: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-radio',_vm._b({staticClass:\"gl-form-radio\",attrs:{\"checked\":_vm.checked},on:{\"input\":function($event){return _vm.$emit('input', $event)},\"change\":function($event){return _vm.$emit('change', $event)}}},'b-form-radio',_vm.$attrs,false),[_vm._t(\"default\"),_vm._v(\" \"),(_vm.$scopedSlots.help)?_c('p',{staticClass:\"help-text\"},[_vm._t(\"help\")],2):_vm._e()],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n  return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n  return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n  let value = `${input}`;\n  let index = -1;\n  if (value[0] === '-') value = value.slice(1);\n  if (value === '0') return false;\n  while (value[++index] === '0');\n  return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n  if (typeof start === 'string' || typeof end === 'string') {\n    return true;\n  }\n  return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n  if (maxLength > 0) {\n    let dash = input[0] === '-' ? '-' : '';\n    if (dash) input = input.slice(1);\n    input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n  }\n  if (toNumber === false) {\n    return String(input);\n  }\n  return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n  let negative = input[0] === '-' ? '-' : '';\n  if (negative) {\n    input = input.slice(1);\n    maxLength--;\n  }\n  while (input.length < maxLength) input = '0' + input;\n  return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n  parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n  parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n  let prefix = options.capture ? '' : '?:';\n  let positives = '';\n  let negatives = '';\n  let result;\n\n  if (parts.positives.length) {\n    positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n  }\n\n  if (parts.negatives.length) {\n    negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n  }\n\n  if (positives && negatives) {\n    result = `${positives}|${negatives}`;\n  } else {\n    result = positives || negatives;\n  }\n\n  if (options.wrap) {\n    return `(${prefix}${result})`;\n  }\n\n  return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n  if (isNumbers) {\n    return toRegexRange(a, b, { wrap: false, ...options });\n  }\n\n  let start = String.fromCharCode(a);\n  if (a === b) return start;\n\n  let stop = String.fromCharCode(b);\n  return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n  if (Array.isArray(start)) {\n    let wrap = options.wrap === true;\n    let prefix = options.capture ? '' : '?:';\n    return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n  }\n  return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n  return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n  if (options.strictRanges === true) throw rangeError([start, end]);\n  return [];\n};\n\nconst invalidStep = (step, options) => {\n  if (options.strictRanges === true) {\n    throw new TypeError(`Expected step \"${step}\" to be a number`);\n  }\n  return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n  let a = Number(start);\n  let b = Number(end);\n\n  if (!Number.isInteger(a) || !Number.isInteger(b)) {\n    if (options.strictRanges === true) throw rangeError([start, end]);\n    return [];\n  }\n\n  // fix negative zero\n  if (a === 0) a = 0;\n  if (b === 0) b = 0;\n\n  let descending = a > b;\n  let startString = String(start);\n  let endString = String(end);\n  let stepString = String(step);\n  step = Math.max(Math.abs(step), 1);\n\n  let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n  let toNumber = padded === false && stringify(start, end, options) === false;\n  let format = options.transform || transform(toNumber);\n\n  if (options.toRegex && step === 1) {\n    return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n  }\n\n  let parts = { negatives: [], positives: [] };\n  let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    if (options.toRegex === true && step > 1) {\n      push(a);\n    } else {\n      range.push(pad(format(a, index), maxLen, toNumber));\n    }\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return step > 1\n      ? toSequence(parts, options, maxLen)\n      : toRegex(range, null, { wrap: false, ...options });\n  }\n\n  return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n  if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n    return invalidRange(start, end, options);\n  }\n\n  let format = options.transform || (val => String.fromCharCode(val));\n  let a = `${start}`.charCodeAt(0);\n  let b = `${end}`.charCodeAt(0);\n\n  let descending = a > b;\n  let min = Math.min(a, b);\n  let max = Math.max(a, b);\n\n  if (options.toRegex && step === 1) {\n    return toRange(min, max, false, options);\n  }\n\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    range.push(format(a, index));\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return toRegex(range, null, { wrap: false, options });\n  }\n\n  return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n  if (end == null && isValidValue(start)) {\n    return [start];\n  }\n\n  if (!isValidValue(start) || !isValidValue(end)) {\n    return invalidRange(start, end, options);\n  }\n\n  if (typeof step === 'function') {\n    return fill(start, end, 1, { transform: step });\n  }\n\n  if (isObject(step)) {\n    return fill(start, end, 0, step);\n  }\n\n  let opts = { ...options };\n  if (opts.capture === true) opts.wrap = true;\n  step = step || opts.step || 1;\n\n  if (!isNumber(step)) {\n    if (step != null && !isObject(step)) return invalidStep(step, opts);\n    return fill(start, end, 1, step);\n  }\n\n  if (isNumber(start) && isNumber(end)) {\n    return fillNumbers(start, end, step, opts);\n  }\n\n  return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","import { trimFirstCharOfLineContent } from '~/diffs/store/utils'; // eslint-disable-line import/no-deprecated\nimport createGqClient, { fetchPolicies } from '~/lib/graphql';\nimport AjaxCache from '~/lib/utils/ajax_cache';\nimport { sprintf, __ } from '~/locale';\n\n// factory function because global flag makes RegExp stateful\nconst createQuickActionsRegex = () => /^\\/\\w+.*$/gm;\n\nexport const findNoteObjectById = (notes, id) => notes.filter((n) => n.id === id)[0];\n\nexport const getQuickActionText = (note) => {\n  let text = __('Applying command');\n  const quickActions = AjaxCache.get(gl.GfmAutoComplete.dataSources.commands) || [];\n\n  const executedCommands = quickActions.filter((command) => {\n    const commandRegex = new RegExp(`/${command.name}`);\n    return commandRegex.test(note);\n  });\n\n  if (executedCommands && executedCommands.length) {\n    if (executedCommands.length > 1) {\n      text = __('Applying multiple commands');\n    } else {\n      const commandDescription = executedCommands[0].description.toLowerCase();\n      text = sprintf(__('Applying command to %{commandDescription}'), { commandDescription });\n    }\n  }\n\n  return text;\n};\n\nexport const hasQuickActions = (note) => createQuickActionsRegex().test(note);\n\nexport const stripQuickActions = (note) => note.replace(createQuickActionsRegex(), '').trim();\n\nexport const prepareDiffLines = (diffLines) =>\n  diffLines.map((line) => ({ ...trimFirstCharOfLineContent(line) })); // eslint-disable-line import/no-deprecated\n\nexport const gqClient = createGqClient(\n  {},\n  {\n    fetchPolicy: fetchPolicies.NO_CACHE,\n  },\n);\n","import $ from 'jquery';\nimport Vue from 'vue';\nimport { debounce } from 'lodash';\nimport actionCable from '~/actioncable_consumer';\nimport Api from '~/api';\nimport { createAlert, VARIANT_INFO } from '~/alert';\nimport { EVENT_ISSUABLE_VUE_APP_CHANGE } from '~/issuable/constants';\nimport { STATUS_CLOSED, STATUS_REOPENED, TYPE_ISSUE } from '~/issues/constants';\nimport axios from '~/lib/utils/axios_utils';\nimport { __, sprintf } from '~/locale';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { confidentialWidget } from '~/sidebar/components/confidential/sidebar_confidentiality_widget.vue';\nimport updateIssueLockMutation from '~/sidebar/queries/update_issue_lock.mutation.graphql';\nimport updateMergeRequestLockMutation from '~/sidebar/queries/update_merge_request_lock.mutation.graphql';\nimport loadAwardsHandler from '~/awards_handler';\nimport { isInMRPage } from '~/lib/utils/common_utils';\nimport { mergeUrlParams } from '~/lib/utils/url_utility';\nimport sidebarTimeTrackingEventHub from '~/sidebar/event_hub';\nimport TaskList from '~/task_list';\nimport mrWidgetEventHub from '~/vue_merge_request_widget/event_hub';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_NOTE } from '~/graphql_shared/constants';\nimport notesEventHub from '../event_hub';\n\nimport promoteTimelineEvent from '../graphql/promote_timeline_event.mutation.graphql';\n\nimport * as constants from '../constants';\nimport * as types from './mutation_types';\nimport * as utils from './utils';\n\nexport const updateLockedAttribute = ({ commit, getters }, { locked, fullPath }) => {\n  const { iid, targetType } = getters.getNoteableData;\n\n  return utils.gqClient\n    .mutate({\n      mutation:\n        targetType === TYPE_ISSUE ? updateIssueLockMutation : updateMergeRequestLockMutation,\n      variables: {\n        input: {\n          projectPath: fullPath,\n          iid: String(iid),\n          locked,\n        },\n      },\n    })\n    .then(({ data }) => {\n      const discussionLocked =\n        targetType === TYPE_ISSUE\n          ? data.issueSetLocked.issue.discussionLocked\n          : data.mergeRequestSetLocked.mergeRequest.discussionLocked;\n\n      commit(types.SET_ISSUABLE_LOCK, discussionLocked);\n    });\n};\n\nexport const expandDiscussion = ({ commit, dispatch }, data) => {\n  if (data.discussionId) {\n    dispatch('diffs/renderFileForDiscussionId', data.discussionId, { root: true });\n  }\n\n  commit(types.EXPAND_DISCUSSION, data);\n};\n\nexport const collapseDiscussion = ({ commit }, data) => commit(types.COLLAPSE_DISCUSSION, data);\n\nexport const setNotesData = ({ commit }, data) => commit(types.SET_NOTES_DATA, data);\n\nexport const setNoteableData = ({ commit }, data) => commit(types.SET_NOTEABLE_DATA, data);\n\nexport const setConfidentiality = ({ commit }, data) => commit(types.SET_ISSUE_CONFIDENTIAL, data);\n\nexport const setUserData = ({ commit }, data) => commit(types.SET_USER_DATA, data);\n\nexport const setLastFetchedAt = ({ commit }, data) => commit(types.SET_LAST_FETCHED_AT, data);\n\nexport const setInitialNotes = ({ commit }, discussions) =>\n  commit(types.ADD_OR_UPDATE_DISCUSSIONS, discussions);\n\nexport const setTargetNoteHash = ({ commit }, data) => commit(types.SET_TARGET_NOTE_HASH, data);\n\nexport const setNotesFetchedState = ({ commit }, state) =>\n  commit(types.SET_NOTES_FETCHED_STATE, state);\n\nexport const toggleDiscussion = ({ commit }, data) => commit(types.TOGGLE_DISCUSSION, data);\n\nexport const toggleAllDiscussions = ({ commit, getters }) => {\n  const expanded = getters.allDiscussionsExpanded;\n  commit(types.SET_EXPAND_ALL_DISCUSSIONS, !expanded);\n};\n\nexport const fetchDiscussions = (\n  { commit, dispatch, getters },\n  { path, filter, persistFilter },\n) => {\n  let config =\n    filter !== undefined\n      ? { params: { notes_filter: filter, persist_filter: persistFilter } }\n      : null;\n\n  if (getters.noteableType === constants.MERGE_REQUEST_NOTEABLE_TYPE) {\n    config = { params: { notes_filter: 0, persist_filter: false } };\n  }\n\n  if (\n    getters.noteableType === constants.ISSUE_NOTEABLE_TYPE ||\n    getters.noteableType === constants.MERGE_REQUEST_NOTEABLE_TYPE\n  ) {\n    return dispatch('fetchDiscussionsBatch', { path, config, perPage: 20 });\n  }\n\n  return axios.get(path, config).then(({ data }) => {\n    commit(types.ADD_OR_UPDATE_DISCUSSIONS, data);\n    commit(types.SET_FETCHING_DISCUSSIONS, false);\n\n    dispatch('updateResolvableDiscussionsCounts');\n  });\n};\n\nexport const fetchNotes = ({ dispatch, getters }) => {\n  if (getters.isFetching) return null;\n\n  dispatch('setFetchingState', true);\n\n  return dispatch('fetchDiscussions', getters.getFetchDiscussionsConfig)\n    .then(() => dispatch('initPolling'))\n    .then(() => {\n      dispatch('setLoadingState', false);\n      dispatch('setNotesFetchedState', true);\n      notesEventHub.$emit('fetchedNotesData');\n      dispatch('setFetchingState', false);\n    })\n    .catch(() => {\n      dispatch('setLoadingState', false);\n      dispatch('setNotesFetchedState', true);\n      createAlert({\n        message: __('Something went wrong while fetching comments. Please try again.'),\n      });\n    });\n};\n\nexport const initPolling = ({ state, dispatch, getters, commit }) => {\n  if (state.isPollingInitialized) {\n    return;\n  }\n\n  dispatch('setLastFetchedAt', getters.getNotesDataByProp('lastFetchedAt'));\n\n  const debouncedFetchUpdatedNotes = debounce(() => {\n    dispatch('fetchUpdatedNotes');\n  }, constants.FETCH_UPDATED_NOTES_DEBOUNCE_TIMEOUT);\n\n  actionCable.subscriptions.create(\n    {\n      channel: 'Noteable::NotesChannel',\n      project_id: state.notesData.projectId,\n      group_id: state.notesData.groupId,\n      noteable_type: state.notesData.noteableType,\n      noteable_id: state.notesData.noteableId,\n    },\n    {\n      connected() {\n        dispatch('fetchUpdatedNotes');\n      },\n      received(data) {\n        if (data.event === 'updated') {\n          debouncedFetchUpdatedNotes();\n        }\n      },\n    },\n  );\n\n  commit(types.SET_IS_POLLING_INITIALIZED, true);\n};\n\nexport const fetchDiscussionsBatch = ({ commit, dispatch }, { path, config, cursor, perPage }) => {\n  const params = { ...config?.params, per_page: perPage };\n\n  if (cursor) {\n    params.cursor = cursor;\n  }\n\n  return axios.get(path, { params }).then(({ data, headers }) => {\n    commit(types.ADD_OR_UPDATE_DISCUSSIONS, data);\n\n    if (headers && headers['x-next-page-cursor']) {\n      const nextConfig = { ...config };\n\n      if (config?.params?.persist_filter) {\n        delete nextConfig.params.notes_filter;\n        delete nextConfig.params.persist_filter;\n      }\n\n      return dispatch('fetchDiscussionsBatch', {\n        path,\n        config: nextConfig,\n        cursor: headers['x-next-page-cursor'],\n        perPage: Math.min(Math.round(perPage * 1.5), 100),\n      });\n    }\n\n    commit(types.SET_DONE_FETCHING_BATCH_DISCUSSIONS, true);\n    commit(types.SET_FETCHING_DISCUSSIONS, false);\n    dispatch('updateResolvableDiscussionsCounts');\n\n    return undefined;\n  });\n};\n\nexport const updateDiscussion = ({ commit, state }, discussion) => {\n  if (discussion == null) return null;\n\n  commit(types.UPDATE_DISCUSSION, discussion);\n\n  return utils.findNoteObjectById(state.discussions, discussion.id);\n};\n\nexport const setDiscussionSortDirection = ({ commit }, { direction, persist = true }) => {\n  commit(types.SET_DISCUSSIONS_SORT, { direction, persist });\n};\n\nexport const setTimelineView = ({ commit }, enabled) => {\n  commit(types.SET_TIMELINE_VIEW, enabled);\n};\n\nexport const setSelectedCommentPosition = ({ commit }, position) => {\n  commit(types.SET_SELECTED_COMMENT_POSITION, position);\n};\n\nexport const setSelectedCommentPositionHover = ({ commit }, position) => {\n  commit(types.SET_SELECTED_COMMENT_POSITION_HOVER, position);\n};\n\nexport const removeNote = ({ commit, dispatch, state }, note) => {\n  const discussion = state.discussions.find(({ id }) => id === note.discussion_id);\n\n  commit(types.DELETE_NOTE, note);\n\n  dispatch('updateMergeRequestWidget');\n  dispatch('updateResolvableDiscussionsCounts');\n\n  if (isInMRPage()) {\n    dispatch('diffs/removeDiscussionsFromDiff', discussion);\n  }\n};\n\nexport const deleteNote = ({ dispatch }, note) =>\n  axios.delete(note.path).then(() => {\n    dispatch('removeNote', note);\n  });\n\nexport const updateNote = ({ commit, dispatch }, { endpoint, note }) =>\n  axios.put(endpoint, note).then(({ data }) => {\n    commit(types.UPDATE_NOTE, data);\n    dispatch('startTaskList');\n  });\n\nexport const updateOrCreateNotes = ({ commit, state, getters, dispatch }, notes) => {\n  const { notesById } = getters;\n  const debouncedFetchDiscussions = (isFetching) => {\n    if (!isFetching) {\n      commit(types.SET_FETCHING_DISCUSSIONS, true);\n      dispatch('fetchDiscussions', { path: state.notesData.discussionsPath });\n    } else {\n      if (isFetching !== true) {\n        clearTimeout(state.currentlyFetchingDiscussions);\n      }\n\n      commit(\n        types.SET_FETCHING_DISCUSSIONS,\n        setTimeout(() => {\n          dispatch('fetchDiscussions', { path: state.notesData.discussionsPath });\n        }, constants.DISCUSSION_FETCH_TIMEOUT),\n      );\n    }\n  };\n\n  notes.forEach((note) => {\n    if (notesById[note.id]) {\n      commit(types.UPDATE_NOTE, note);\n    } else if (note.type === constants.DISCUSSION_NOTE || note.type === constants.DIFF_NOTE) {\n      const discussion = utils.findNoteObjectById(state.discussions, note.discussion_id);\n\n      if (discussion) {\n        commit(types.ADD_NEW_REPLY_TO_DISCUSSION, note);\n      } else if (note.type === constants.DIFF_NOTE && !note.base_discussion) {\n        debouncedFetchDiscussions(state.currentlyFetchingDiscussions);\n      } else {\n        commit(types.ADD_NEW_NOTE, note);\n      }\n    } else {\n      commit(types.ADD_NEW_NOTE, note);\n    }\n  });\n};\n\nexport const promoteCommentToTimelineEvent = (\n  { commit },\n  { noteId, addError, addGenericError },\n) => {\n  commit(types.SET_PROMOTE_COMMENT_TO_TIMELINE_PROGRESS, true); // Set loading state\n  return utils.gqClient\n    .mutate({\n      mutation: promoteTimelineEvent,\n      variables: {\n        input: {\n          noteId: convertToGraphQLId(TYPENAME_NOTE, noteId),\n        },\n      },\n    })\n    .then(({ data = {} }) => {\n      const errors = data.timelineEventPromoteFromNote?.errors;\n      if (errors.length) {\n        const errorMessage = sprintf(addError, {\n          error: errors.join('. '),\n        });\n        throw new Error(errorMessage);\n      } else {\n        notesEventHub.$emit('comment-promoted-to-timeline-event');\n        toast(__('Comment added to the timeline.'));\n      }\n    })\n    .catch((error) => {\n      const message = error.message || addGenericError;\n\n      let captureError = false;\n      let errorObj = null;\n\n      if (message === addGenericError) {\n        captureError = true;\n        errorObj = error;\n      }\n\n      createAlert({\n        message,\n        captureError,\n        error: errorObj,\n      });\n    })\n    .finally(() => {\n      commit(types.SET_PROMOTE_COMMENT_TO_TIMELINE_PROGRESS, false); // Revert loading state\n    });\n};\n\nexport const replyToDiscussion = (\n  { commit, state, getters, dispatch },\n  { endpoint, data: reply },\n) =>\n  axios.post(endpoint, reply).then(({ data }) => {\n    if (data.discussion) {\n      commit(types.UPDATE_DISCUSSION, data.discussion);\n\n      updateOrCreateNotes({ commit, state, getters, dispatch }, data.discussion.notes);\n\n      dispatch('updateMergeRequestWidget');\n      dispatch('startTaskList');\n      dispatch('updateResolvableDiscussionsCounts');\n    } else {\n      commit(types.ADD_NEW_REPLY_TO_DISCUSSION, data);\n    }\n\n    return data;\n  });\n\nexport const createNewNote = ({ commit, dispatch }, { endpoint, data: reply }) =>\n  axios.post(endpoint, reply).then(({ data }) => {\n    if (!data.errors) {\n      commit(types.ADD_NEW_NOTE, data);\n\n      dispatch('updateMergeRequestWidget');\n      dispatch('startTaskList');\n      dispatch('updateResolvableDiscussionsCounts');\n    }\n    return data;\n  });\n\nexport const removePlaceholderNotes = ({ commit }) => commit(types.REMOVE_PLACEHOLDER_NOTES);\n\nexport const resolveDiscussion = ({ state, dispatch, getters }, { discussionId }) => {\n  const discussion = utils.findNoteObjectById(state.discussions, discussionId);\n  const isResolved = getters.isDiscussionResolved(discussionId);\n\n  if (!discussion) {\n    return Promise.reject();\n  }\n  if (isResolved) {\n    return Promise.resolve();\n  }\n\n  return dispatch('toggleResolveNote', {\n    endpoint: discussion.resolve_path,\n    isResolved,\n    discussion: true,\n  });\n};\n\nexport const toggleResolveNote = ({ commit, dispatch }, { endpoint, isResolved, discussion }) => {\n  const method = isResolved\n    ? constants.UNRESOLVE_NOTE_METHOD_NAME\n    : constants.RESOLVE_NOTE_METHOD_NAME;\n  const mutationType = discussion ? types.UPDATE_DISCUSSION : types.UPDATE_NOTE;\n\n  return axios[method](endpoint).then(({ data }) => {\n    commit(mutationType, data);\n\n    dispatch('updateResolvableDiscussionsCounts');\n\n    dispatch('updateMergeRequestWidget');\n  });\n};\n\nexport const closeIssuable = ({ commit, dispatch, state }) => {\n  dispatch('toggleStateButtonLoading', true);\n  return axios.put(state.notesData.closePath).then(({ data }) => {\n    commit(types.CLOSE_ISSUE);\n    dispatch('emitStateChangedEvent', data);\n    dispatch('toggleStateButtonLoading', false);\n  });\n};\n\nexport const reopenIssuable = ({ commit, dispatch, state }) => {\n  dispatch('toggleStateButtonLoading', true);\n  return axios.put(state.notesData.reopenPath).then(({ data }) => {\n    commit(types.REOPEN_ISSUE);\n    dispatch('emitStateChangedEvent', data);\n    dispatch('toggleStateButtonLoading', false);\n  });\n};\n\nexport const toggleStateButtonLoading = ({ commit }, value) =>\n  commit(types.TOGGLE_STATE_BUTTON_LOADING, value);\n\nexport const emitStateChangedEvent = ({ getters }, data) => {\n  const event = new CustomEvent(EVENT_ISSUABLE_VUE_APP_CHANGE, {\n    detail: {\n      data,\n      isClosed: getters.openState === STATUS_CLOSED,\n    },\n  });\n\n  document.dispatchEvent(event);\n};\n\nexport const toggleIssueLocalState = ({ commit }, newState) => {\n  if (newState === STATUS_CLOSED) {\n    commit(types.CLOSE_ISSUE);\n  } else if (newState === STATUS_REOPENED) {\n    commit(types.REOPEN_ISSUE);\n  }\n};\n\nexport const saveNote = ({ commit, dispatch }, noteData) => {\n  // For MR discussuions we need to post as `note[note]` and issue we use `note.note`.\n  // For batch comments, we use draft_note\n  const note = noteData.data.draft_note || noteData.data['note[note]'] || noteData.data.note.note;\n  let placeholderText = note;\n  const hasQuickActions = utils.hasQuickActions(placeholderText);\n  const replyId = noteData.data.in_reply_to_discussion_id;\n  let methodToDispatch;\n  const postData = { ...noteData };\n  if (postData.isDraft === true) {\n    methodToDispatch = replyId\n      ? 'batchComments/addDraftToDiscussion'\n      : 'batchComments/createNewDraft';\n    if (!postData.draft_note && noteData.note) {\n      postData.draft_note = postData.note;\n      delete postData.note;\n    }\n  } else {\n    methodToDispatch = replyId ? 'replyToDiscussion' : 'createNewNote';\n  }\n\n  commit(types.REMOVE_PLACEHOLDER_NOTES); // remove previous placeholders\n\n  if (hasQuickActions) {\n    placeholderText = utils.stripQuickActions(placeholderText);\n  }\n\n  if (placeholderText.length) {\n    commit(types.SHOW_PLACEHOLDER_NOTE, {\n      noteBody: placeholderText,\n      replyId,\n    });\n  }\n\n  if (hasQuickActions) {\n    commit(types.SHOW_PLACEHOLDER_NOTE, {\n      isSystemNote: true,\n      noteBody: utils.getQuickActionText(note),\n      replyId,\n    });\n  }\n\n  const processQuickActions = (res) => {\n    const { quick_actions_status: { messages = null, command_names: commandNames = [] } = {} } =\n      res;\n    if (commandNames?.indexOf('submit_review') >= 0) {\n      dispatch('batchComments/clearDrafts');\n    }\n\n    /*\n     The following reply means that quick actions have been successfully applied:\n\n     {\"commands_changes\":{},\"valid\":false,\"errors\":{},\"quick_actions_status\":{\"messages\":[\"Commands applied\"],\"command_names\":[\"due\"],\"commands_only\":true}}\n     */\n    if (hasQuickActions && messages) {\n      // synchronizing the quick action with the sidebar widget\n      // this is a temporary solution until we have confidentiality real-time updates\n      if (\n        confidentialWidget.setConfidentiality &&\n        messages.some((m) => m.includes('Made this issue confidential'))\n      ) {\n        confidentialWidget.setConfidentiality();\n      }\n\n      $('.js-gfm-input').trigger('clear-commands-cache.atwho');\n\n      createAlert({\n        message: messages || __('Commands applied'),\n        variant: VARIANT_INFO,\n        parent: noteData.flashContainer,\n      });\n    }\n\n    return res;\n  };\n\n  const processEmojiAward = (res) => {\n    const { commands_changes: commandsChanges } = res;\n    const { emoji_award: emojiAward } = commandsChanges || {};\n    if (!emojiAward) {\n      return res;\n    }\n\n    const votesBlock = $('.js-awards-block').eq(0);\n\n    return loadAwardsHandler()\n      .then((awardsHandler) => {\n        awardsHandler.addAwardToEmojiBar(votesBlock, emojiAward);\n        awardsHandler.scrollToAwards();\n      })\n      .catch(() => {\n        createAlert({\n          message: __('Something went wrong while adding your award. Please try again.'),\n          parent: noteData.flashContainer,\n        });\n      })\n      .then(() => res);\n  };\n\n  const processTimeTracking = (res) => {\n    const { commands_changes: commandsChanges } = res;\n    const { spend_time: spendTime, time_estimate: timeEstimate } = commandsChanges || {};\n    if (spendTime != null || timeEstimate != null) {\n      sidebarTimeTrackingEventHub.$emit('timeTrackingUpdated', {\n        commands_changes: commandsChanges,\n      });\n    }\n\n    return res;\n  };\n\n  const removePlaceholder = (res) => {\n    commit(types.REMOVE_PLACEHOLDER_NOTES);\n\n    return res;\n  };\n\n  return dispatch(methodToDispatch, postData, { root: true })\n    .then(processQuickActions)\n    .then(processEmojiAward)\n    .then(processTimeTracking)\n    .then(removePlaceholder);\n};\n\nexport const setFetchingState = ({ commit }, fetchingState) =>\n  commit(types.SET_NOTES_FETCHING_STATE, fetchingState);\n\n// eslint-disable-next-line max-params\nconst pollSuccessCallBack = async (resp, commit, state, getters, dispatch) => {\n  if (state.isResolvingDiscussion) {\n    return null;\n  }\n\n  if (resp.notes?.length) {\n    await dispatch('updateOrCreateNotes', resp.notes);\n    dispatch('startTaskList');\n    dispatch('updateResolvableDiscussionsCounts');\n  }\n\n  commit(types.SET_LAST_FETCHED_AT, resp.last_fetched_at);\n\n  return resp;\n};\n\nconst getFetchDataParams = (state) => {\n  const endpoint = state.notesData.notesPath;\n  const options = {\n    headers: {\n      'X-Last-Fetched-At': state.lastFetchedAt ? `${state.lastFetchedAt}` : undefined,\n    },\n  };\n\n  return { endpoint, options };\n};\n\nexport const fetchUpdatedNotes = ({ commit, state, getters, dispatch }) => {\n  const { endpoint, options } = getFetchDataParams(state);\n\n  return axios\n    .get(endpoint, options)\n    .then(({ data }) => {\n      pollSuccessCallBack(data, commit, state, getters, dispatch);\n    })\n    .catch(() => {});\n};\n\nexport const toggleAward = ({ commit, getters }, { awardName, noteId }) => {\n  commit(types.TOGGLE_AWARD, { awardName, note: getters.notesById[noteId] });\n};\n\nexport const toggleAwardRequest = ({ dispatch }, data) => {\n  const { endpoint, awardName } = data;\n\n  return axios.post(endpoint, { name: awardName }).then(() => {\n    dispatch('toggleAward', data);\n  });\n};\n\nexport const fetchDiscussionDiffLines = ({ commit }, discussion) =>\n  axios.get(discussion.truncated_diff_lines_path).then(({ data }) => {\n    commit(types.SET_DISCUSSION_DIFF_LINES, {\n      discussionId: discussion.id,\n      diffLines: data.truncated_diff_lines,\n    });\n  });\n\nexport const updateMergeRequestWidget = () => {\n  mrWidgetEventHub.$emit('mr.discussion.updated');\n};\n\nexport const setLoadingState = ({ commit }, data) => {\n  commit(types.SET_NOTES_LOADING_STATE, data);\n};\n\nexport const filterDiscussion = ({ commit, dispatch }, { path, filter, persistFilter }) => {\n  commit(types.CLEAR_DISCUSSIONS);\n  dispatch('setLoadingState', true);\n  dispatch('fetchDiscussions', { path, filter, persistFilter })\n    .then(() => {\n      dispatch('setLoadingState', false);\n      dispatch('setNotesFetchedState', true);\n    })\n    .catch(() => {\n      dispatch('setLoadingState', false);\n      dispatch('setNotesFetchedState', true);\n      createAlert({\n        message: __('Something went wrong while fetching comments. Please try again.'),\n      });\n    });\n};\n\nexport const setCommentsDisabled = ({ commit }, data) => {\n  commit(types.DISABLE_COMMENTS, data);\n};\n\nexport const startTaskList = ({ dispatch }) =>\n  Vue.nextTick(\n    () =>\n      new TaskList({\n        dataType: 'note',\n        fieldName: 'note',\n        selector: '.notes .is-editable',\n        onSuccess: () => dispatch('startTaskList'),\n      }),\n  );\n\nexport const updateResolvableDiscussionsCounts = ({ commit }) =>\n  commit(types.UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS);\n\nexport const submitSuggestion = (\n  { commit, dispatch },\n  { discussionId, suggestionId, flashContainer, message },\n) => {\n  const dispatchResolveDiscussion = () =>\n    dispatch('resolveDiscussion', { discussionId }).catch(() => {});\n\n  commit(types.SET_RESOLVING_DISCUSSION, true);\n\n  return Api.applySuggestion(suggestionId, message)\n    .then(dispatchResolveDiscussion)\n    .catch((err) => {\n      const defaultMessage = __(\n        'Something went wrong while applying the suggestion. Please try again.',\n      );\n\n      const errorMessage = err.response.data?.message;\n\n      const alertMessage = errorMessage || defaultMessage;\n\n      createAlert({\n        message: alertMessage,\n        parent: flashContainer,\n      });\n    })\n    .finally(() => {\n      commit(types.SET_RESOLVING_DISCUSSION, false);\n    });\n};\n\nexport const submitSuggestionBatch = ({ commit, dispatch, state }, { message, flashContainer }) => {\n  const suggestionIds = state.batchSuggestionsInfo.map(({ suggestionId }) => suggestionId);\n\n  const resolveAllDiscussions = () =>\n    state.batchSuggestionsInfo.map((suggestionInfo) => {\n      const { discussionId } = suggestionInfo;\n      return dispatch('resolveDiscussion', { discussionId }).catch(() => {});\n    });\n\n  commit(types.SET_APPLYING_BATCH_STATE, true);\n  commit(types.SET_RESOLVING_DISCUSSION, true);\n\n  return Api.applySuggestionBatch(suggestionIds, message)\n    .then(() => Promise.all(resolveAllDiscussions()))\n    .then(() => commit(types.CLEAR_SUGGESTION_BATCH))\n    .catch((err) => {\n      const defaultMessage = __(\n        'Something went wrong while applying the batch of suggestions. Please try again.',\n      );\n\n      const errorMessage = err.response.data?.message;\n\n      const alertMessage = errorMessage || defaultMessage;\n\n      createAlert({\n        message: alertMessage,\n        parent: flashContainer,\n      });\n    })\n    .finally(() => {\n      commit(types.SET_APPLYING_BATCH_STATE, false);\n      commit(types.SET_RESOLVING_DISCUSSION, false);\n    });\n};\n\nexport const addSuggestionInfoToBatch = ({ commit }, { suggestionId, noteId, discussionId }) =>\n  commit(types.ADD_SUGGESTION_TO_BATCH, { suggestionId, noteId, discussionId });\n\nexport const removeSuggestionInfoFromBatch = ({ commit }, suggestionId) =>\n  commit(types.REMOVE_SUGGESTION_FROM_BATCH, suggestionId);\n\nexport const convertToDiscussion = ({ commit }, noteId) =>\n  commit(types.CONVERT_TO_DISCUSSION, noteId);\n\nexport const removeConvertedDiscussion = ({ commit }, noteId) =>\n  commit(types.REMOVE_CONVERTED_DISCUSSION, noteId);\n\nexport const setCurrentDiscussionId = ({ commit }, discussionId) =>\n  commit(types.SET_CURRENT_DISCUSSION_ID, discussionId);\n\nexport const fetchDescriptionVersion = ({ dispatch }, { endpoint, startingVersion, versionId }) => {\n  let requestUrl = endpoint;\n\n  if (startingVersion) {\n    requestUrl = mergeUrlParams({ start_version_id: startingVersion }, requestUrl);\n  }\n  dispatch('requestDescriptionVersion');\n\n  return axios\n    .get(requestUrl)\n    .then((res) => {\n      dispatch('receiveDescriptionVersion', { descriptionVersion: res.data, versionId });\n    })\n    .catch((error) => {\n      dispatch('receiveDescriptionVersionError', error);\n      createAlert({\n        message: __('Something went wrong while fetching description changes. Please try again.'),\n      });\n    });\n};\n\nexport const requestDescriptionVersion = ({ commit }) => {\n  commit(types.REQUEST_DESCRIPTION_VERSION);\n};\nexport const receiveDescriptionVersion = ({ commit }, descriptionVersion) => {\n  commit(types.RECEIVE_DESCRIPTION_VERSION, descriptionVersion);\n};\nexport const receiveDescriptionVersionError = ({ commit }, error) => {\n  commit(types.RECEIVE_DESCRIPTION_VERSION_ERROR, error);\n};\n\nexport const softDeleteDescriptionVersion = (\n  { dispatch },\n  { endpoint, startingVersion, versionId },\n) => {\n  let requestUrl = endpoint;\n\n  if (startingVersion) {\n    requestUrl = mergeUrlParams({ start_version_id: startingVersion }, requestUrl);\n  }\n  dispatch('requestDeleteDescriptionVersion');\n\n  return axios\n    .delete(requestUrl)\n    .then(() => {\n      dispatch('receiveDeleteDescriptionVersion', versionId);\n    })\n    .catch((error) => {\n      dispatch('receiveDeleteDescriptionVersionError', error);\n      createAlert({\n        message: __('Something went wrong while deleting description changes. Please try again.'),\n      });\n\n      // Throw an error here because a component like SystemNote -\n      //  needs to know if the request failed to reset its internal state.\n      throw new Error();\n    });\n};\n\nexport const requestDeleteDescriptionVersion = ({ commit }) => {\n  commit(types.REQUEST_DELETE_DESCRIPTION_VERSION);\n};\nexport const receiveDeleteDescriptionVersion = ({ commit }, versionId) => {\n  commit(types.RECEIVE_DELETE_DESCRIPTION_VERSION, { [versionId]: __('Deleted') });\n};\nexport const receiveDeleteDescriptionVersionError = ({ commit }, error) => {\n  commit(types.RECEIVE_DELETE_DESCRIPTION_VERSION_ERROR, error);\n};\n\nexport const updateAssignees = ({ commit }, assignees) => {\n  commit(types.UPDATE_ASSIGNEES, assignees);\n};\n\nexport const updateDiscussionPosition = ({ commit }, updatedPosition) => {\n  commit(types.UPDATE_DISCUSSION_POSITION, updatedPosition);\n};\n\nexport const updateMergeRequestFilters = ({ commit }, newFilters) =>\n  commit(types.SET_MERGE_REQUEST_FILTERS, newFilters);\n","export const ADD_NEW_NOTE = 'ADD_NEW_NOTE';\nexport const ADD_NEW_REPLY_TO_DISCUSSION = 'ADD_NEW_REPLY_TO_DISCUSSION';\nexport const ADD_OR_UPDATE_DISCUSSIONS = 'ADD_OR_UPDATE_DISCUSSIONS';\nexport const CLEAR_DISCUSSIONS = 'CLEAR_DISCUSSIONS';\nexport const DELETE_NOTE = 'DELETE_NOTE';\nexport const REMOVE_PLACEHOLDER_NOTES = 'REMOVE_PLACEHOLDER_NOTES';\nexport const SET_NOTES_DATA = 'SET_NOTES_DATA';\nexport const SET_NOTEABLE_DATA = 'SET_NOTEABLE_DATA';\nexport const SET_USER_DATA = 'SET_USER_DATA';\nexport const SET_LAST_FETCHED_AT = 'SET_LAST_FETCHED_AT';\nexport const SET_TARGET_NOTE_HASH = 'SET_TARGET_NOTE_HASH';\nexport const SHOW_PLACEHOLDER_NOTE = 'SHOW_PLACEHOLDER_NOTE';\nexport const TOGGLE_AWARD = 'TOGGLE_AWARD';\nexport const UPDATE_NOTE = 'UPDATE_NOTE';\nexport const UPDATE_DISCUSSION = 'UPDATE_DISCUSSION';\nexport const UPDATE_DISCUSSION_POSITION = 'UPDATE_DISCUSSION_POSITION';\nexport const SET_DISCUSSION_DIFF_LINES = 'SET_DISCUSSION_DIFF_LINES';\nexport const SET_NOTES_FETCHING_STATE = 'SET_NOTES_FETCHING_STATE';\nexport const SET_NOTES_FETCHED_STATE = 'SET_NOTES_FETCHED_STATE';\nexport const SET_NOTES_LOADING_STATE = 'SET_NOTES_LOADING_STATE';\nexport const DISABLE_COMMENTS = 'DISABLE_COMMENTS';\nexport const APPLY_SUGGESTION = 'APPLY_SUGGESTION';\nexport const SET_APPLYING_BATCH_STATE = 'SET_APPLYING_BATCH_STATE';\nexport const ADD_SUGGESTION_TO_BATCH = 'ADD_SUGGESTION_TO_BATCH';\nexport const REMOVE_SUGGESTION_FROM_BATCH = 'REMOVE_SUGGESTION_FROM_BATCH';\nexport const CLEAR_SUGGESTION_BATCH = 'CLEAR_SUGGESTION_BATCH';\nexport const CONVERT_TO_DISCUSSION = 'CONVERT_TO_DISCUSSION';\nexport const REMOVE_CONVERTED_DISCUSSION = 'REMOVE_CONVERTED_DISCUSSION';\nexport const UPDATE_ASSIGNEES = 'UPDATE_ASSIGNEES';\nexport const SET_IS_POLLING_INITIALIZED = 'SET_IS_POLLING_INITIALIZED';\n\n// DISCUSSION\nexport const COLLAPSE_DISCUSSION = 'COLLAPSE_DISCUSSION';\nexport const EXPAND_DISCUSSION = 'EXPAND_DISCUSSION';\nexport const TOGGLE_DISCUSSION = 'TOGGLE_DISCUSSION';\nexport const SET_EXPAND_DISCUSSIONS = 'SET_EXPAND_DISCUSSIONS';\nexport const SET_EXPAND_ALL_DISCUSSIONS = 'SET_EXPAND_ALL_DISCUSSIONS';\nexport const UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS = 'UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS';\nexport const SET_CURRENT_DISCUSSION_ID = 'SET_CURRENT_DISCUSSION_ID';\nexport const SET_DISCUSSIONS_SORT = 'SET_DISCUSSIONS_SORT';\nexport const SET_TIMELINE_VIEW = 'SET_TIMELINE_VIEW';\nexport const SET_SELECTED_COMMENT_POSITION = 'SET_SELECTED_COMMENT_POSITION';\nexport const SET_SELECTED_COMMENT_POSITION_HOVER = 'SET_SELECTED_COMMENT_POSITION_HOVER';\nexport const SET_FETCHING_DISCUSSIONS = 'SET_FETCHING_DISCUSSIONS';\nexport const SET_RESOLVING_DISCUSSION = 'SET_RESOLVING_DISCUSSION';\nexport const SET_DONE_FETCHING_BATCH_DISCUSSIONS = 'SET_DONE_FETCHING_BATCH_DISCUSSIONS';\n\n// Issue\nexport const CLOSE_ISSUE = 'CLOSE_ISSUE';\nexport const REOPEN_ISSUE = 'REOPEN_ISSUE';\nexport const TOGGLE_STATE_BUTTON_LOADING = 'TOGGLE_STATE_BUTTON_LOADING';\nexport const SET_ISSUE_CONFIDENTIAL = 'SET_ISSUE_CONFIDENTIAL';\nexport const SET_ISSUABLE_LOCK = 'SET_ISSUABLE_LOCK';\n\n// Description version\nexport const REQUEST_DESCRIPTION_VERSION = 'REQUEST_DESCRIPTION_VERSION';\nexport const RECEIVE_DESCRIPTION_VERSION = 'RECEIVE_DESCRIPTION_VERSION';\nexport const RECEIVE_DESCRIPTION_VERSION_ERROR = 'RECEIVE_DESCRIPTION_VERSION_ERROR';\nexport const REQUEST_DELETE_DESCRIPTION_VERSION = 'REQUEST_DELETE_DESCRIPTION_VERSION';\nexport const RECEIVE_DELETE_DESCRIPTION_VERSION = 'RECEIVE_DELETE_DESCRIPTION_VERSION';\nexport const RECEIVE_DELETE_DESCRIPTION_VERSION_ERROR = 'RECEIVE_DELETE_DESCRIPTION_VERSION_ERROR';\n\n// Incidents\nexport const SET_PROMOTE_COMMENT_TO_TIMELINE_PROGRESS = 'SET_PROMOTE_COMMENT_TO_TIMELINE_PROGRESS';\n\nexport const SET_MERGE_REQUEST_FILTERS = 'SET_MERGE_REQUEST_FILTERS';\n","import { DESCRIPTION_TYPE, TIME_DIFFERENCE_VALUE } from '../constants';\n\n/**\n * Checks the time difference between two notes from their 'created_at' dates\n * returns an integer\n */\nexport const getTimeDifferenceMinutes = (noteBeggining, noteEnd) => {\n  const descriptionNoteBegin = new Date(noteBeggining.created_at);\n  const descriptionNoteEnd = new Date(noteEnd.created_at);\n  const timeDifferenceMinutes = (descriptionNoteEnd - descriptionNoteBegin) / 1000 / 60;\n\n  return Math.ceil(timeDifferenceMinutes);\n};\n\n/**\n * Checks if a note is a system note and if the content is description\n *\n * @param {Object} note\n * @returns {Boolean}\n */\nexport const isDescriptionSystemNote = (note) => note.system && note.note === DESCRIPTION_TYPE;\n\n/**\n * Collapses the system notes of a description type, e.g. Changed the description, n minutes ago\n * the notes will collapse as long as they happen no more than 10 minutes away from each away\n * in between the notes can be anything, another type of system note\n * (such as 'changed the weight') or a comment.\n *\n * @param {Array} notes\n * @returns {Array}\n */\nexport const collapseSystemNotes = (notes) => {\n  let lastDescriptionSystemNote = null;\n  let lastDescriptionSystemNoteIndex = -1;\n\n  return notes.slice(0).reduce((acc, currentNote) => {\n    const note = currentNote.notes[0];\n\n    if (isDescriptionSystemNote(note)) {\n      // is it the first one?\n      if (!lastDescriptionSystemNote) {\n        lastDescriptionSystemNote = note;\n        lastDescriptionSystemNoteIndex = acc.length;\n      } else if (lastDescriptionSystemNote) {\n        const timeDifferenceMinutes = getTimeDifferenceMinutes(lastDescriptionSystemNote, note);\n\n        // are they less than 10 minutes apart from the same user?\n        if (\n          timeDifferenceMinutes > TIME_DIFFERENCE_VALUE ||\n          note.author.id !== lastDescriptionSystemNote.author.id ||\n          lastDescriptionSystemNote.description_version_deleted\n        ) {\n          // update the previous system note\n          lastDescriptionSystemNote = note;\n          lastDescriptionSystemNoteIndex = acc.length;\n        } else {\n          // set the first version to fetch grouped system note versions\n          note.start_description_version_id = lastDescriptionSystemNote.description_version_id;\n\n          // delete the previous one\n          acc.splice(lastDescriptionSystemNoteIndex, 1);\n\n          // update the previous system note index\n          lastDescriptionSystemNoteIndex = acc.length;\n        }\n      }\n    }\n\n    acc.push(currentNote);\n    return acc;\n  }, []);\n};\n","import { flattenDeep, clone } from 'lodash';\nimport { match } from '~/diffs/utils/diff_file';\nimport { isInMRPage } from '~/lib/utils/common_utils';\nimport { doesHashExistInUrl } from '~/lib/utils/url_utility';\nimport { badgeState } from '~/merge_requests/components/merge_request_header.vue';\nimport * as constants from '../constants';\nimport { collapseSystemNotes } from './collapse_utils';\n\nconst getDraftComments = (state) => {\n  if (!state.batchComments) {\n    return [];\n  }\n\n  return state.batchComments.drafts\n    .filter((draft) => !draft.file_path && !draft.discussion_id)\n    .map((x) => ({\n      ...x,\n      // Treat a top-level draft note as individual_note so it's not included in\n      // expand/collapse threads\n      individual_note: true,\n    }))\n    .sort((a, b) => a.id - b.id);\n};\n\nconst hideActivity = (filters, discussion) => {\n  if (filters.length === constants.MR_FILTER_OPTIONS) return false;\n  if (filters.length === 0) return true;\n\n  const firstNote = discussion.notes[0];\n  const hidingFilters = constants.MR_FILTER_OPTIONS.filter(({ value }) => !filters.includes(value));\n\n  for (let i = 0, len = hidingFilters.length; i < len; i += 1) {\n    const filter = hidingFilters[i];\n\n    if (\n      // For all of the below firstNote is the first note of a discussion, whether that be\n      // the first in a discussion or a single note\n      // If the filter option filters based on icon check against the first notes system note icon\n      filter.systemNoteIcons?.includes(firstNote.system_note_icon_name) ||\n      // If the filter option filters based on note type use the first notes type\n      (filter.noteType?.includes(firstNote.type) && !firstNote.author?.bot) ||\n      // If the filter option filters based on the note text then check if it is sytem\n      // and filter based on the text of the system note\n      (firstNote.system && filter.noteText?.some((t) => firstNote.note.includes(t))) ||\n      // For individual notes we filter if the discussion is a single note and is not a sytem\n      (filter.individualNote === discussion.individual_note &&\n        !firstNote.system &&\n        !firstNote.author?.bot) ||\n      // For bot comments we filter on the authors `bot` boolean attribute\n      (filter.bot && firstNote.author?.bot)\n    ) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nexport const discussions = (state, getters, rootState) => {\n  let discussionsInState = clone(state.discussions);\n  // NOTE: not testing bc will be removed when backend is finished.\n\n  if (state.noteableData.targetType === 'merge_request') {\n    discussionsInState = discussionsInState.reduce((acc, discussion) => {\n      if (hideActivity(state.mergeRequestFilters, discussion)) {\n        return acc;\n      }\n\n      acc.push(discussion);\n\n      return acc;\n    }, []);\n  }\n\n  if (state.isTimelineEnabled) {\n    discussionsInState = discussionsInState\n      .reduce((acc, discussion) => {\n        const transformedToIndividualNotes = discussion.notes.map((note) => ({\n          ...discussion,\n          id: note.id,\n          created_at: note.created_at,\n          individual_note: true,\n          notes: [note],\n        }));\n\n        return acc.concat(transformedToIndividualNotes);\n      }, [])\n      .sort((a, b) => new Date(a.created_at) - new Date(b.created_at));\n  }\n\n  discussionsInState = collapseSystemNotes(discussionsInState);\n\n  discussionsInState = discussionsInState.concat(getDraftComments(rootState));\n\n  if (state.discussionSortOrder === constants.DESC) {\n    discussionsInState = discussionsInState.reverse();\n  }\n\n  return discussionsInState;\n};\n\nexport const convertedDisscussionIds = (state) => state.convertedDisscussionIds;\n\nexport const targetNoteHash = (state) => state.targetNoteHash;\n\nexport const getNotesData = (state) => state.notesData;\n\nexport const isNotesFetched = (state) => state.isNotesFetched;\n\n/*\n * WARNING: This is an example of an \"unnecessary\" getter\n * more info found here: https://gitlab.com/groups/gitlab-org/-/epics/2913.\n */\n\nexport const sortDirection = (state) => state.discussionSortOrder;\n\nexport const persistSortOrder = (state) => state.persistSortOrder;\n\nexport const timelineEnabled = (state) => state.isTimelineEnabled;\n\nexport const isFetching = (state) => state.isFetching;\n\nexport const isLoading = (state) => state.isLoading;\n\nexport const getNotesDataByProp = (state) => (prop) => state.notesData[prop];\n\nexport const getNoteableData = (state) => state.noteableData;\n\nexport const getNoteableDataByProp = (state) => (prop) => state.noteableData[prop];\n\nexport const getBlockedByIssues = (state) => state.noteableData.blocked_by_issues;\n\nexport const userCanReply = (state) => Boolean(state.noteableData.current_user.can_create_note);\n\nexport const openState = (state) => (isInMRPage() ? badgeState.state : state.noteableData.state);\n\nexport const getUserData = (state) => state.userData || {};\n\nexport const getUserDataByProp = (state) => (prop) => state.userData && state.userData[prop];\n\nexport const descriptionVersions = (state) => state.descriptionVersions;\n\nexport const canUserAddIncidentTimelineEvents = (state) => {\n  return Boolean(\n    state.userData?.can_add_timeline_events &&\n      state.noteableData.type === constants.NOTEABLE_TYPE_MAPPING.Incident,\n  );\n};\n\nexport const notesById = (state) =>\n  state.discussions.reduce((acc, note) => {\n    note.notes.every((n) => Object.assign(acc, { [n.id]: n }));\n    return acc;\n  }, {});\n\nexport const noteableType = (state) => {\n  const { ISSUE_NOTEABLE_TYPE, MERGE_REQUEST_NOTEABLE_TYPE, EPIC_NOTEABLE_TYPE } = constants;\n\n  if (state.noteableData.noteableType === EPIC_NOTEABLE_TYPE) {\n    return EPIC_NOTEABLE_TYPE;\n  }\n\n  return state.noteableData.merge_params ? MERGE_REQUEST_NOTEABLE_TYPE : ISSUE_NOTEABLE_TYPE;\n};\n\nconst reverseNotes = (array) => array.slice(0).reverse();\n\nconst isLastNote = (note, state) =>\n  !note.system && state.userData && note.author && note.author.id === state.userData.id;\n\nexport const getCurrentUserLastNote = (state) =>\n  flattenDeep(reverseNotes(state.discussions).map((note) => reverseNotes(note.notes))).find((el) =>\n    isLastNote(el, state),\n  );\n\nexport const getDiscussionLastNote = (state) => (discussion) =>\n  reverseNotes(discussion.notes).find((el) => isLastNote(el, state));\n\nexport const unresolvedDiscussionsCount = (state) => state.unresolvedDiscussionsCount;\nexport const resolvableDiscussionsCount = (state) => state.resolvableDiscussionsCount;\n\nexport const showJumpToNextDiscussion =\n  (state, getters) =>\n  (mode = 'discussion') => {\n    const orderedDiffs =\n      mode !== 'discussion'\n        ? getters.unresolvedDiscussionsIdsByDiff\n        : getters.unresolvedDiscussionsIdsByDate;\n\n    return orderedDiffs.length > 1;\n  };\n\nexport const isDiscussionResolved = (state, getters) => (discussionId) =>\n  getters.resolvedDiscussionsById[discussionId] !== undefined;\n\nexport const allResolvableDiscussions = (state) =>\n  state.discussions.filter((d) => !d.individual_note && d.resolvable);\n\nexport const resolvedDiscussionsById = (state) => {\n  const map = {};\n\n  state.discussions\n    .filter((d) => d.resolvable)\n    .forEach((n) => {\n      if (n.notes) {\n        const resolved = n.notes.filter((note) => note.resolvable).every((note) => note.resolved);\n\n        if (resolved) {\n          map[n.id] = n;\n        }\n      }\n    });\n\n  return map;\n};\n\n// Gets Discussions IDs ordered by the date of their initial note\nexport const unresolvedDiscussionsIdsByDate = (state, getters) =>\n  getters.allResolvableDiscussions\n    .filter((d) => !d.resolved)\n    .sort((a, b) => {\n      const aDate = new Date(a.notes[0].created_at);\n      const bDate = new Date(b.notes[0].created_at);\n\n      if (aDate < bDate) {\n        return -1;\n      }\n\n      return aDate === bDate ? 0 : 1;\n    })\n    .map((d) => d.id);\n\n// Gets Discussions IDs ordered by their position in the diff\n//\n// Sorts the array of resolvable yet unresolved discussions by\n// comparing file names first. If file names are the same, compares\n// line numbers.\nexport const unresolvedDiscussionsIdsByDiff = (state, getters, allState) => {\n  const authoritativeFiles = allState.diffs.diffFiles;\n\n  return getters.allResolvableDiscussions\n    .filter((d) => !d.resolved && d.active)\n    .sort((a, b) => {\n      let order = 0;\n\n      if (!a.diff_file || !b.diff_file) {\n        return order;\n      }\n\n      const authoritativeA = authoritativeFiles.find((source) =>\n        match({ fileA: source, fileB: a.diff_file, mode: 'mr' }),\n      );\n      const authoritativeB = authoritativeFiles.find((source) =>\n        match({ fileA: source, fileB: b.diff_file, mode: 'mr' }),\n      );\n\n      if (authoritativeA && authoritativeB) {\n        order = authoritativeA.order - authoritativeB.order;\n      }\n\n      // Get the line numbers, to compare within the same file\n      const aLines = [a.position.new_line, a.position.old_line];\n      const bLines = [b.position.new_line, b.position.old_line];\n\n      return order < 0 ||\n        (order === 0 &&\n          // .max() because one of them might be zero (if removed/added)\n          Math.max(aLines[0], aLines[1]) < Math.max(bLines[0], bLines[1]))\n        ? -1\n        : 1;\n    })\n    .map((d) => d.id);\n};\n\nexport const resolvedDiscussionCount = (state, getters) => {\n  const resolvedMap = getters.resolvedDiscussionsById;\n\n  return Object.keys(resolvedMap).length;\n};\n\nexport const discussionTabCounter = (state) =>\n  state.discussions.reduce(\n    (acc, discussion) =>\n      acc + discussion.notes.filter((note) => !note.system && !note.placeholder).length,\n    0,\n  );\n\n// Returns the list of discussion IDs ordered according to given parameter\n// @param {Boolean} diffOrder - is ordered by diff?\nexport const unresolvedDiscussionsIdsOrdered = (state, getters) => (diffOrder) => {\n  if (diffOrder) {\n    return getters.unresolvedDiscussionsIdsByDiff;\n  }\n  return getters.unresolvedDiscussionsIdsByDate;\n};\n\n// Checks if a given discussion is the last in the current order (diff or date)\n// @param {Boolean} discussionId - id of the discussion\n// @param {Boolean} diffOrder - is ordered by diff?\nexport const isLastUnresolvedDiscussion = (state, getters) => (discussionId, diffOrder) => {\n  const idsOrdered = getters.unresolvedDiscussionsIdsOrdered(diffOrder);\n  const lastDiscussionId = idsOrdered[idsOrdered.length - 1];\n\n  return lastDiscussionId === discussionId;\n};\n\nexport const findUnresolvedDiscussionIdNeighbor =\n  (state, getters) =>\n  ({ discussionId, diffOrder, step }) => {\n    const diffIds = getters.unresolvedDiscussionsIdsOrdered(diffOrder);\n    const dateIds = getters.unresolvedDiscussionsIdsOrdered(false);\n    const ids = diffIds.length ? diffIds : dateIds;\n    const index = ids.indexOf(discussionId) + step;\n\n    if (index < 0 && step < 0) {\n      return ids[ids.length - 1];\n    }\n\n    if (index === ids.length && step > 0) {\n      return ids[0];\n    }\n\n    return ids[index];\n  };\n\n// Gets the ID of the discussion following the one provided, respecting order (diff or date)\n// @param {Boolean} discussionId - id of the current discussion\n// @param {Boolean} diffOrder - is ordered by diff?\nexport const nextUnresolvedDiscussionId = (state, getters) => (discussionId, diffOrder) =>\n  getters.findUnresolvedDiscussionIdNeighbor({ discussionId, diffOrder, step: 1 });\n\nexport const previousUnresolvedDiscussionId = (state, getters) => (discussionId, diffOrder) =>\n  getters.findUnresolvedDiscussionIdNeighbor({ discussionId, diffOrder, step: -1 });\n\n// @param {Boolean} diffOrder - is ordered by diff?\nexport const firstUnresolvedDiscussionId = (state, getters) => (diffOrder) => {\n  if (diffOrder) {\n    return getters.unresolvedDiscussionsIdsByDiff[0];\n  }\n  return getters.unresolvedDiscussionsIdsByDate[0];\n};\n\nexport const getDiscussion = (state) => (discussionId) =>\n  state.discussions.find((discussion) => discussion.id === discussionId);\n\nexport const commentsDisabled = (state) => state.commentsDisabled;\n\nexport const suggestionsCount = (state, getters) =>\n  Object.values(getters.notesById).filter((n) => n.suggestions?.length).length;\n\n// eslint-disable-next-line max-params\nexport const hasDrafts = (state, getters, rootState, rootGetters) =>\n  Boolean(rootGetters['batchComments/hasDrafts']);\n\nexport const getSuggestionsFilePaths = (state) => () =>\n  state.batchSuggestionsInfo.reduce((acc, suggestion) => {\n    const discussion = state.discussions.find((d) => d.id === suggestion.discussionId);\n\n    if (acc.indexOf(discussion?.diff_file?.file_path) === -1) {\n      acc.push(discussion.diff_file.file_path);\n    }\n\n    return acc;\n  }, []);\n\nexport const getFetchDiscussionsConfig = (state, getters) => {\n  const defaultConfig = { path: getters.getNotesDataByProp('discussionsPath') };\n\n  const currentFilter =\n    getters.getNotesDataByProp('notesFilter') || constants.DISCUSSION_FILTERS_DEFAULT_VALUE;\n\n  if (\n    doesHashExistInUrl(constants.NOTE_UNDERSCORE) &&\n    currentFilter !== constants.DISCUSSION_FILTERS_DEFAULT_VALUE\n  ) {\n    return {\n      ...defaultConfig,\n      filter: constants.DISCUSSION_FILTERS_DEFAULT_VALUE,\n      persistFilter: false,\n    };\n  }\n  return defaultConfig;\n};\n\nexport const allDiscussionsExpanded = (state) => {\n  return state.discussions.every((discussion) => discussion.expanded);\n};\n","import { isEqual } from 'lodash';\nimport { STATUS_CLOSED, STATUS_REOPENED } from '~/issues/constants';\nimport { isInMRPage } from '~/lib/utils/common_utils';\nimport { uuids } from '~/lib/utils/uuids';\nimport * as constants from '../constants';\nimport * as types from './mutation_types';\nimport * as utils from './utils';\n\nexport default {\n  [types.ADD_NEW_NOTE](state, data) {\n    const note = data.discussion ? data.discussion.notes[0] : data;\n    const { discussion_id: discussionId, type } = note;\n    const [exists] = state.discussions.filter((n) => n.id === note.discussion_id);\n    const isDiscussion = type === constants.DISCUSSION_NOTE || type === constants.DIFF_NOTE;\n\n    if (!exists) {\n      let discussion = data.discussion || note.base_discussion;\n\n      if (!discussion) {\n        discussion = {\n          expanded: true,\n          id: discussionId,\n          individual_note: !isDiscussion,\n          reply_id: discussionId,\n        };\n\n        if (isDiscussion && isInMRPage()) {\n          discussion.resolvable = note.resolvable;\n          discussion.resolved = false;\n          discussion.active = true;\n          discussion.resolve_path = note.resolve_path;\n          discussion.resolve_with_issue_path = note.resolve_with_issue_path;\n          discussion.diff_discussion = false;\n        }\n      }\n\n      if (discussion.truncated_diff_lines) {\n        discussion.truncated_diff_lines = utils.prepareDiffLines(discussion.truncated_diff_lines);\n      }\n\n      // note.base_discussion = undefined; // No point keeping a reference to this\n      delete note.base_discussion;\n      discussion.notes = [note];\n\n      state.discussions.push(discussion);\n    }\n  },\n\n  [types.ADD_NEW_REPLY_TO_DISCUSSION](state, note) {\n    const discussion = utils.findNoteObjectById(state.discussions, note.discussion_id);\n    const existingNote = discussion && utils.findNoteObjectById(discussion.notes, note.id);\n\n    if (discussion && !existingNote) {\n      discussion.notes.push(note);\n    }\n  },\n\n  [types.DELETE_NOTE](state, note) {\n    const noteObj = utils.findNoteObjectById(state.discussions, note.discussion_id);\n\n    if (noteObj.individual_note) {\n      state.discussions.splice(state.discussions.indexOf(noteObj), 1);\n    } else {\n      const comment = utils.findNoteObjectById(noteObj.notes, note.id);\n      noteObj.notes.splice(noteObj.notes.indexOf(comment), 1);\n\n      if (!noteObj.notes.length) {\n        state.discussions.splice(state.discussions.indexOf(noteObj), 1);\n      }\n    }\n  },\n\n  [types.EXPAND_DISCUSSION](state, { discussionId }) {\n    const discussion = utils.findNoteObjectById(state.discussions, discussionId);\n    Object.assign(discussion, { expanded: true });\n  },\n\n  [types.COLLAPSE_DISCUSSION](state, { discussionId }) {\n    const discussion = utils.findNoteObjectById(state.discussions, discussionId);\n    Object.assign(discussion, { expanded: false });\n  },\n\n  [types.REMOVE_PLACEHOLDER_NOTES](state) {\n    const { discussions } = state;\n\n    for (let i = discussions.length - 1; i >= 0; i -= 1) {\n      const note = discussions[i];\n      const children = note.notes;\n\n      if (children.length > 1) {\n        // remove placeholder from discussions\n        for (let j = children.length - 1; j >= 0; j -= 1) {\n          if (children[j].isPlaceholderNote) {\n            children.splice(j, 1);\n          }\n        }\n      } else if (note.isPlaceholderNote) {\n        // remove placeholders from state root\n        discussions.splice(i, 1);\n      }\n    }\n  },\n\n  [types.SET_NOTES_DATA](state, data) {\n    Object.assign(state, { notesData: data });\n  },\n\n  [types.SET_NOTEABLE_DATA](state, data) {\n    Object.assign(state, { noteableData: data });\n  },\n\n  [types.SET_ISSUE_CONFIDENTIAL](state, data) {\n    state.noteableData.confidential = data;\n  },\n\n  [types.SET_ISSUABLE_LOCK](state, locked) {\n    state.noteableData.discussion_locked = locked;\n  },\n\n  [types.SET_USER_DATA](state, data) {\n    Object.assign(state, { userData: data });\n  },\n\n  [types.CLEAR_DISCUSSIONS](state) {\n    state.discussions = [];\n  },\n\n  [types.ADD_OR_UPDATE_DISCUSSIONS](state, discussionsData) {\n    discussionsData.forEach((d) => {\n      const discussion = { ...d };\n      const diffData = {};\n\n      if (discussion.diff_file) {\n        diffData.file_hash = discussion.diff_file.file_hash;\n\n        diffData.truncated_diff_lines = utils.prepareDiffLines(\n          discussion.truncated_diff_lines || [],\n        );\n      }\n\n      // To support legacy notes, should be very rare case.\n      if (discussion.individual_note && discussion.notes.length > 1) {\n        discussion.notes.forEach((n) => {\n          const newDiscussion = {\n            ...discussion,\n            ...diffData,\n            notes: [n], // override notes array to only have one item to mimick individual_note\n          };\n          const oldDiscussion = state.discussions.find(\n            (existingDiscussion) =>\n              existingDiscussion.id === discussion.id && existingDiscussion.notes[0].id === n.id,\n          );\n\n          if (oldDiscussion) {\n            state.discussions.splice(state.discussions.indexOf(oldDiscussion), 1, newDiscussion);\n          } else {\n            state.discussions.push(newDiscussion);\n          }\n        });\n      } else {\n        const oldDiscussion = utils.findNoteObjectById(state.discussions, discussion.id);\n\n        if (oldDiscussion) {\n          state.discussions.splice(state.discussions.indexOf(oldDiscussion), 1, {\n            ...discussion,\n            ...diffData,\n            expanded: oldDiscussion.expanded,\n          });\n        } else {\n          state.discussions.push({ ...discussion, ...diffData });\n        }\n      }\n    });\n  },\n\n  [types.SET_LAST_FETCHED_AT](state, fetchedAt) {\n    Object.assign(state, { lastFetchedAt: fetchedAt });\n  },\n\n  [types.SET_TARGET_NOTE_HASH](state, hash) {\n    Object.assign(state, { targetNoteHash: hash });\n  },\n\n  [types.SHOW_PLACEHOLDER_NOTE](state, data) {\n    let notesArr = state.discussions;\n\n    const existingDiscussion = utils.findNoteObjectById(notesArr, data.replyId);\n    if (existingDiscussion) {\n      notesArr = existingDiscussion.notes;\n    }\n\n    notesArr.push({\n      id: uuids()[0],\n      individual_note: true,\n      isPlaceholderNote: true,\n      placeholderType: data.isSystemNote ? constants.SYSTEM_NOTE : constants.NOTE,\n      notes: [\n        {\n          body: data.noteBody,\n        },\n      ],\n    });\n  },\n\n  [types.TOGGLE_AWARD](state, data) {\n    const { awardName, note } = data;\n    const { id, name, username } = state.userData;\n\n    const hasEmojiAwardedByCurrentUser = note.award_emoji.filter(\n      (emoji) => `${emoji.name}` === `${data.awardName}` && emoji.user.id === id,\n    );\n\n    if (hasEmojiAwardedByCurrentUser.length) {\n      // If current user has awarded this emoji, remove it.\n      note.award_emoji.splice(note.award_emoji.indexOf(hasEmojiAwardedByCurrentUser[0]), 1);\n    } else {\n      note.award_emoji.push({\n        name: awardName,\n        user: { id, name, username },\n      });\n    }\n  },\n\n  [types.TOGGLE_DISCUSSION](state, { discussionId, forceExpanded = null }) {\n    const discussion = utils.findNoteObjectById(state.discussions, discussionId);\n    Object.assign(discussion, {\n      expanded: forceExpanded === null ? !discussion.expanded : forceExpanded,\n    });\n  },\n\n  [types.SET_EXPAND_DISCUSSIONS](state, { discussionIds, expanded }) {\n    if (discussionIds?.length) {\n      discussionIds.forEach((discussionId) => {\n        const discussion = utils.findNoteObjectById(state.discussions, discussionId);\n        Object.assign(discussion, { expanded });\n      });\n    }\n  },\n\n  [types.SET_EXPAND_ALL_DISCUSSIONS](state, expanded) {\n    state.discussions.forEach((discussion) => {\n      Object.assign(discussion, { expanded });\n    });\n  },\n\n  [types.SET_RESOLVING_DISCUSSION](state, isResolving) {\n    state.isResolvingDiscussion = isResolving;\n  },\n\n  [types.UPDATE_NOTE](state, note) {\n    const discussion = utils.findNoteObjectById(state.discussions, note.discussion_id);\n\n    // Disable eslint here so we can delete the property that we no longer need\n    // in the note object\n    // eslint-disable-next-line no-param-reassign\n    delete note.base_discussion;\n\n    if (discussion.individual_note) {\n      if (note.type === constants.DISCUSSION_NOTE) {\n        discussion.individual_note = false;\n      }\n\n      discussion.notes.splice(0, 1, note);\n    } else {\n      const comment = utils.findNoteObjectById(discussion.notes, note.id);\n\n      if (!isEqual(comment, note)) {\n        discussion.notes.splice(discussion.notes.indexOf(comment), 1, note);\n      }\n    }\n\n    if (note.resolvable && note.id === discussion.notes[0].id) {\n      Object.assign(discussion, {\n        resolvable: note.resolvable,\n        resolved: note.resolved,\n        resolved_at: note.resolved_at,\n        resolved_by: note.resolved_by,\n        resolved_by_push: note.resolved_by_push,\n      });\n    }\n  },\n\n  [types.APPLY_SUGGESTION](state, { noteId, discussionId, suggestionId }) {\n    const noteObj = utils.findNoteObjectById(state.discussions, discussionId);\n    const comment = utils.findNoteObjectById(noteObj.notes, noteId);\n\n    comment.suggestions = comment.suggestions.map((suggestion) => ({\n      ...suggestion,\n      applied: suggestion.applied || suggestion.id === suggestionId,\n      appliable: false,\n    }));\n  },\n\n  [types.SET_APPLYING_BATCH_STATE](state, isApplyingBatch) {\n    state.batchSuggestionsInfo.forEach((suggestionInfo) => {\n      const { discussionId, noteId, suggestionId } = suggestionInfo;\n\n      const noteObj = utils.findNoteObjectById(state.discussions, discussionId);\n      const comment = utils.findNoteObjectById(noteObj.notes, noteId);\n\n      comment.suggestions = comment.suggestions.map((suggestion) => ({\n        ...suggestion,\n        is_applying_batch: suggestion.id === suggestionId && isApplyingBatch,\n      }));\n    });\n  },\n\n  [types.ADD_SUGGESTION_TO_BATCH](state, { noteId, discussionId, suggestionId }) {\n    state.batchSuggestionsInfo.push({\n      suggestionId,\n      noteId,\n      discussionId,\n    });\n  },\n\n  [types.REMOVE_SUGGESTION_FROM_BATCH](state, id) {\n    const index = state.batchSuggestionsInfo.findIndex(({ suggestionId }) => suggestionId === id);\n    if (index !== -1) {\n      state.batchSuggestionsInfo.splice(index, 1);\n    }\n  },\n\n  [types.CLEAR_SUGGESTION_BATCH](state) {\n    state.batchSuggestionsInfo.splice(0, state.batchSuggestionsInfo.length);\n  },\n\n  [types.UPDATE_DISCUSSION](state, noteData) {\n    const note = noteData;\n    const selectedDiscussion = state.discussions.find((disc) => disc.id === note.id);\n    note.expanded = true; // override expand flag to prevent collapse\n    Object.assign(selectedDiscussion, { ...note });\n  },\n\n  [types.UPDATE_DISCUSSION_POSITION](state, { discussionId, position }) {\n    const selectedDiscussion = state.discussions.find((disc) => disc.id === discussionId);\n    if (selectedDiscussion) Object.assign(selectedDiscussion.position, { ...position });\n  },\n\n  [types.CLOSE_ISSUE](state) {\n    Object.assign(state.noteableData, { state: STATUS_CLOSED });\n  },\n\n  [types.REOPEN_ISSUE](state) {\n    Object.assign(state.noteableData, { state: STATUS_REOPENED });\n  },\n\n  [types.TOGGLE_STATE_BUTTON_LOADING](state, value) {\n    Object.assign(state, { isToggleStateButtonLoading: value });\n  },\n\n  [types.SET_NOTES_FETCHED_STATE](state, value) {\n    Object.assign(state, { isNotesFetched: value });\n  },\n\n  [types.SET_NOTES_LOADING_STATE](state, value) {\n    state.isLoading = value;\n  },\n\n  [types.SET_NOTES_FETCHING_STATE](state, value) {\n    state.isFetching = value;\n  },\n\n  [types.SET_DISCUSSION_DIFF_LINES](state, { discussionId, diffLines }) {\n    const discussion = utils.findNoteObjectById(state.discussions, discussionId);\n\n    discussion.truncated_diff_lines = utils.prepareDiffLines(diffLines);\n  },\n\n  [types.SET_DISCUSSIONS_SORT](state, { direction, persist }) {\n    state.discussionSortOrder = direction;\n    state.persistSortOrder = persist;\n  },\n\n  [types.SET_TIMELINE_VIEW](state, value) {\n    state.isTimelineEnabled = value;\n  },\n\n  [types.SET_SELECTED_COMMENT_POSITION](state, position) {\n    state.selectedCommentPosition = position;\n  },\n\n  [types.SET_SELECTED_COMMENT_POSITION_HOVER](state, position) {\n    state.selectedCommentPositionHover = position;\n  },\n\n  [types.DISABLE_COMMENTS](state, value) {\n    state.commentsDisabled = value;\n  },\n  [types.UPDATE_RESOLVABLE_DISCUSSIONS_COUNTS](state) {\n    state.resolvableDiscussionsCount = state.discussions.filter(\n      (discussion) => !discussion.individual_note && discussion.resolvable,\n    ).length;\n    state.unresolvedDiscussionsCount = state.discussions.filter(\n      (discussion) =>\n        !discussion.individual_note &&\n        discussion.resolvable &&\n        discussion.notes.some((note) => note.resolvable && !note.resolved),\n    ).length;\n  },\n\n  [types.CONVERT_TO_DISCUSSION](state, discussionId) {\n    const convertedDisscussionIds = [...state.convertedDisscussionIds, discussionId];\n    Object.assign(state, { convertedDisscussionIds });\n  },\n\n  [types.REMOVE_CONVERTED_DISCUSSION](state, discussionId) {\n    const convertedDisscussionIds = [...state.convertedDisscussionIds];\n\n    convertedDisscussionIds.splice(convertedDisscussionIds.indexOf(discussionId), 1);\n    Object.assign(state, { convertedDisscussionIds });\n  },\n\n  [types.SET_CURRENT_DISCUSSION_ID](state, discussionId) {\n    state.currentDiscussionId = discussionId;\n  },\n\n  [types.REQUEST_DESCRIPTION_VERSION](state) {\n    state.isLoadingDescriptionVersion = true;\n  },\n  [types.RECEIVE_DESCRIPTION_VERSION](state, { descriptionVersion, versionId }) {\n    const descriptionVersions = { ...state.descriptionVersions, [versionId]: descriptionVersion };\n    Object.assign(state, { descriptionVersions, isLoadingDescriptionVersion: false });\n  },\n  [types.RECEIVE_DESCRIPTION_VERSION_ERROR](state) {\n    state.isLoadingDescriptionVersion = false;\n  },\n  [types.REQUEST_DELETE_DESCRIPTION_VERSION](state) {\n    state.isLoadingDescriptionVersion = true;\n  },\n  [types.RECEIVE_DELETE_DESCRIPTION_VERSION](state, descriptionVersion) {\n    state.isLoadingDescriptionVersion = false;\n    Object.assign(state.descriptionVersions, descriptionVersion);\n  },\n  [types.RECEIVE_DELETE_DESCRIPTION_VERSION_ERROR](state) {\n    state.isLoadingDescriptionVersion = false;\n  },\n  [types.UPDATE_ASSIGNEES](state, assignees) {\n    state.noteableData.assignees = assignees;\n  },\n  [types.SET_FETCHING_DISCUSSIONS](state, value) {\n    state.currentlyFetchingDiscussions = value;\n  },\n  [types.SET_DONE_FETCHING_BATCH_DISCUSSIONS](state, value) {\n    state.doneFetchingBatchDiscussions = value;\n  },\n  [types.SET_PROMOTE_COMMENT_TO_TIMELINE_PROGRESS](state, value) {\n    state.isPromoteCommentToTimelineEventInProgress = value;\n  },\n  [types.SET_IS_POLLING_INITIALIZED](state, value) {\n    state.isPollingInitialized = value;\n  },\n  [types.SET_MERGE_REQUEST_FILTERS](state, value) {\n    state.mergeRequestFilters = value;\n  },\n};\n","import { ASC, MR_FILTER_OPTIONS } from '../constants';\n\nconst createState = () => ({\n  discussions: [],\n  discussionSortOrder: ASC,\n  persistSortOrder: true,\n  convertedDisscussionIds: [],\n  targetNoteHash: null,\n  lastFetchedAt: null,\n  currentDiscussionId: null,\n  batchSuggestionsInfo: [],\n  currentlyFetchingDiscussions: false,\n  doneFetchingBatchDiscussions: false,\n  /**\n   * selectedCommentPosition & selectedCommentPositionHover structures are the same as `position.line_range`:\n   * {\n   *  start: { line_code: string, new_line: number, old_line:number, type: string },\n   *  end: { line_code: string, new_line: number, old_line:number, type: string },\n   * }\n   */\n  selectedCommentPosition: null,\n  selectedCommentPositionHover: null,\n\n  // View layer\n  isToggleStateButtonLoading: false,\n  isNotesFetched: false,\n  isLoading: true,\n  isLoadingDescriptionVersion: false,\n  isPromoteCommentToTimelineEventInProgress: false,\n\n  // holds endpoints and permissions provided through haml\n  notesData: {\n    markdownDocsPath: '',\n  },\n  userData: {},\n  noteableData: {\n    discussion_locked: false,\n    confidential: false, // TODO: Move data like this to Issue Store, should not be apart of notes.\n    current_user: {},\n    preview_note_path: 'path/to/preview',\n  },\n  isResolvingDiscussion: false,\n  commentsDisabled: false,\n  resolvableDiscussionsCount: 0,\n  unresolvedDiscussionsCount: 0,\n  descriptionVersions: {},\n  isTimelineEnabled: false,\n  isFetching: false,\n  isPollingInitialized: false,\n  mergeRequestFilters: MR_FILTER_OPTIONS.map((f) => f.value),\n});\n\nexport default createState;\n","import * as actions from '../actions';\nimport * as getters from '../getters';\nimport mutations from '../mutations';\nimport createState from '../state';\n\nexport default () => ({\n  state: createState(),\n  actions,\n  getters,\n  mutations,\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('pre',{staticClass:\"code-block rounded code\",class:_vm.$options.userColorScheme,style:(_vm.styleObject)},[_vm._t(\"default\",function(){return [_c('code',{staticClass:\"gl-block\"},[_vm._v(_vm._s(_vm.code))])]})],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!./code_block.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!./code_block.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  name: 'CodeBlock',\n  props: {\n    code: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    maxHeight: {\n      type: String,\n      required: false,\n      default: 'initial',\n    },\n  },\n  computed: {\n    styleObject() {\n      const { maxHeight } = this;\n      const isScrollable = maxHeight !== 'initial';\n      const scrollableStyles = {\n        maxHeight,\n        overflowY: 'auto',\n      };\n\n      return isScrollable ? scrollableStyles : null;\n    },\n  },\n  userColorScheme: window.gon.user_color_scheme,\n};\n</script>\n<template>\n  <pre\n    class=\"code-block rounded code\"\n    :class=\"$options.userColorScheme\"\n    :style=\"styleObject\"\n  ><slot><code class=\"gl-block\">{{ code }}</code></slot></pre>\n</template>\n","import { render, staticRenderFns } from \"./code_block.vue?vue&type=template&id=441e6620\"\nimport script from \"./code_block.vue?vue&type=script&lang=js\"\nexport * from \"./code_block.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('li',{staticClass:\"timeline-entry\"},[_c('div',{staticClass:\"timeline-entry-inner\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./timeline_entry_item.vue?vue&type=template&id=0702bda7\"\nvar script = {}\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 baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n  return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","/**\n * @gitlab/at.js - 1.5.7\n * Copyright (c) 2021 chord.luo <chord.luo@gmail.com>;\n * Homepage: https://gitlab.com/gitlab-org/frontend/At.js\n * License: MIT\n */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module unless amdModuleId is set\n    define([\"jquery\"], function (a0) {\n      return (factory(a0));\n    });\n  } else if (typeof exports === 'object') {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory(require(\"jquery\"));\n  } else {\n    factory(jQuery);\n  }\n}(this, function ($) {\nvar DEFAULT_CALLBACKS, KEY_CODE;\n\nKEY_CODE = {\n  ESC: 27,\n  TAB: 9,\n  ENTER: 13,\n  CTRL: 17,\n  A: 65,\n  P: 80,\n  N: 78,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  BACKSPACE: 8,\n  SPACE: 32\n};\n\nDEFAULT_CALLBACKS = {\n  beforeSave: function(data) {\n    return Controller.arrayToDefaultHash(data);\n  },\n  matcher: function(flag, subtext, should_startWithSpace, acceptSpaceBar) {\n    var _a, _y, match, regexp, space;\n    flag = flag.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n    if (should_startWithSpace) {\n      flag = '(?:^|\\\\s)' + flag;\n    }\n    _a = decodeURI(\"%C3%80\");\n    _y = decodeURI(\"%C3%BF\");\n    space = acceptSpaceBar ? \"\\ \" : \"\";\n    regexp = new RegExp(flag + \"([A-Za-z\" + _a + \"-\" + _y + \"0-9_\" + space + \"\\'\\.\\+\\-]*)$|\" + flag + \"([^\\\\x00-\\\\xff]*)$\", 'gi');\n    match = regexp.exec(subtext);\n    if (match) {\n      return match[2] || match[1];\n    } else {\n      return null;\n    }\n  },\n  filter: function(query, data, searchKey) {\n    var _results, i, item, len;\n    _results = [];\n    for (i = 0, len = data.length; i < len; i++) {\n      item = data[i];\n      if (~new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase())) {\n        _results.push(item);\n      }\n    }\n    return _results;\n  },\n  remoteFilter: null,\n  sorter: function(query, items, searchKey) {\n    var _results, i, item, len;\n    if (!query) {\n      return items;\n    }\n    _results = [];\n    for (i = 0, len = items.length; i < len; i++) {\n      item = items[i];\n      item.atwho_order = new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase());\n      if (item.atwho_order > -1) {\n        _results.push(item);\n      }\n    }\n    return _results.sort(function(a, b) {\n      return a.atwho_order - b.atwho_order;\n    });\n  },\n  tplEval: function(tpl, map) {\n    var error, template;\n    template = tpl;\n    try {\n      if (typeof tpl !== 'string') {\n        template = tpl(map);\n      }\n      return template.replace(/\\$\\{([^\\}]*)\\}/g, function(tag, key, pos) {\n        return map[key];\n      });\n    } catch (error1) {\n      error = error1;\n      return \"\";\n    }\n  },\n  highlighter: function(li, query) {\n    var regexp;\n    if (!query) {\n      return li;\n    }\n    regexp = new RegExp(\">\\\\s*([^\\<]*?)(\" + query.replace(\"+\", \"\\\\+\") + \")([^\\<]*)\\\\s*<\", 'ig');\n    return li.replace(regexp, function(str, $1, $2, $3) {\n      return '> ' + $1 + '<strong>' + $2 + '</strong>' + $3 + ' <';\n    });\n  },\n  beforeInsert: function(value, $li, e) {\n    return value;\n  },\n  beforeReposition: function(offset) {\n    return offset;\n  },\n  afterMatchFailed: function(at, el) {}\n};\n\nvar App;\n\nApp = (function() {\n  function App(inputor) {\n    this.currentFlag = null;\n    this.controllers = {};\n    this.aliasMaps = {};\n    this.$inputor = $(inputor);\n    this.setupRootElement();\n    this.listen();\n  }\n\n  App.prototype.createContainer = function(doc) {\n    var ref;\n    if ((ref = this.$el) != null) {\n      ref.remove();\n    }\n    return $(doc.body).append(this.$el = $(\"<div class='atwho-container'></div>\"));\n  };\n\n  App.prototype.setupRootElement = function(iframe, asRoot) {\n    var error;\n    if (asRoot == null) {\n      asRoot = false;\n    }\n    if (iframe) {\n      this.window = iframe.contentWindow;\n      this.document = iframe.contentDocument || this.window.document;\n      this.iframe = iframe;\n    } else {\n      this.document = this.$inputor[0].ownerDocument;\n      this.window = this.document.defaultView || this.document.parentWindow;\n      try {\n        this.iframe = this.window.frameElement;\n      } catch (error1) {\n        error = error1;\n        this.iframe = null;\n        if ($.fn.atwho.debug) {\n          throw new Error(\"iframe auto-discovery is failed.\\nPlease use `setIframe` to set the target iframe manually.\\n\" + error);\n        }\n      }\n    }\n    return this.createContainer((this.iframeAsRoot = asRoot) ? this.document : document);\n  };\n\n  App.prototype.controller = function(at) {\n    var c, current, currentFlag, ref;\n    if (this.aliasMaps[at]) {\n      current = this.controllers[this.aliasMaps[at]];\n    } else {\n      ref = this.controllers;\n      for (currentFlag in ref) {\n        c = ref[currentFlag];\n        if (currentFlag === at) {\n          current = c;\n          break;\n        }\n      }\n    }\n    if (current) {\n      return current;\n    } else {\n      return this.controllers[this.currentFlag];\n    }\n  };\n\n  App.prototype.setContextFor = function(at) {\n    this.currentFlag = at;\n    return this;\n  };\n\n  App.prototype.reg = function(flag, setting) {\n    var base, controller;\n    controller = (base = this.controllers)[flag] || (base[flag] = this.$inputor.is('[contentEditable]') ? new EditableController(this, flag) : new TextareaController(this, flag));\n    if (setting.alias) {\n      this.aliasMaps[setting.alias] = flag;\n    }\n    controller.init(setting);\n    return this;\n  };\n\n  App.prototype.listen = function() {\n    return this.$inputor.on('compositionstart', (function(_this) {\n      return function(e) {\n        var ref;\n        if ((ref = _this.controller()) != null) {\n          ref.view.hide();\n        }\n        _this.isComposing = true;\n        return null;\n      };\n    })(this)).on('compositionend', (function(_this) {\n      return function(e) {\n        _this.isComposing = false;\n        setTimeout(function(e) {\n          return _this.dispatch(e);\n        });\n        return null;\n      };\n    })(this)).on('keyup.atwhoInner', (function(_this) {\n      return function(e) {\n        return _this.onKeyup(e);\n      };\n    })(this)).on('keydown.atwhoInner', (function(_this) {\n      return function(e) {\n        return _this.onKeydown(e);\n      };\n    })(this)).on('blur.atwhoInner', (function(_this) {\n      return function(e) {\n        var c;\n        if (c = _this.controller()) {\n          c.expectedQueryCBId = null;\n          return c.view.hide(e, c.getOpt(\"displayTimeout\"));\n        }\n      };\n    })(this)).on('click.atwhoInner', (function(_this) {\n      return function(e) {\n        return _this.dispatch(e);\n      };\n    })(this)).on('scroll.atwhoInner', (function(_this) {\n      return function() {\n        var lastScrollTop;\n        lastScrollTop = _this.$inputor.scrollTop();\n        return function(e) {\n          var currentScrollTop, ref;\n          currentScrollTop = e.target.scrollTop;\n          if (lastScrollTop !== currentScrollTop) {\n            if ((ref = _this.controller()) != null) {\n              ref.view.hide(e);\n            }\n          }\n          lastScrollTop = currentScrollTop;\n          return true;\n        };\n      };\n    })(this)());\n  };\n\n  App.prototype.shutdown = function() {\n    var _, c, ref;\n    ref = this.controllers;\n    for (_ in ref) {\n      c = ref[_];\n      c.destroy();\n      delete this.controllers[_];\n    }\n    this.$inputor.off('.atwhoInner');\n    return this.$el.remove();\n  };\n\n  App.prototype.dispatch = function(e) {\n    var _, c, ref, results;\n    if (void 0 === e) {\n      return;\n    }\n    ref = this.controllers;\n    results = [];\n    for (_ in ref) {\n      c = ref[_];\n      results.push(c.lookUp(e));\n    }\n    return results;\n  };\n\n  App.prototype.onKeyup = function(e) {\n    var ref;\n    switch (e.keyCode) {\n      case KEY_CODE.ESC:\n        e.preventDefault();\n        if ((ref = this.controller()) != null) {\n          ref.view.hide();\n        }\n        break;\n      case KEY_CODE.DOWN:\n      case KEY_CODE.UP:\n      case KEY_CODE.CTRL:\n      case KEY_CODE.ENTER:\n        $.noop();\n        break;\n      case KEY_CODE.P:\n      case KEY_CODE.N:\n        if (!e.ctrlKey) {\n          this.dispatch(e);\n        }\n        break;\n      default:\n        this.dispatch(e);\n    }\n  };\n\n  App.prototype.onKeydown = function(e) {\n    var ref, view;\n    view = (ref = this.controller()) != null ? ref.view : void 0;\n    if (!(view && view.visible())) {\n      return;\n    }\n    switch (e.keyCode) {\n      case KEY_CODE.ESC:\n        e.preventDefault();\n        view.hide(e);\n        break;\n      case KEY_CODE.UP:\n        e.preventDefault();\n        view.prev();\n        break;\n      case KEY_CODE.DOWN:\n        e.preventDefault();\n        view.next();\n        break;\n      case KEY_CODE.P:\n        if (!e.ctrlKey) {\n          return;\n        }\n        e.preventDefault();\n        view.prev();\n        break;\n      case KEY_CODE.N:\n        if (!e.ctrlKey) {\n          return;\n        }\n        e.preventDefault();\n        view.next();\n        break;\n      case KEY_CODE.TAB:\n      case KEY_CODE.ENTER:\n      case KEY_CODE.SPACE:\n        if (!view.visible()) {\n          return;\n        }\n        if (!this.controller().getOpt('spaceSelectsMatch') && e.keyCode === KEY_CODE.SPACE) {\n          return;\n        }\n        if (!this.controller().getOpt('tabSelectsMatch') && e.keyCode === KEY_CODE.TAB) {\n          return;\n        }\n        if (view.highlighted()) {\n          e.preventDefault();\n          view.choose(e);\n        } else {\n          view.hide(e);\n        }\n        break;\n      default:\n        $.noop();\n    }\n  };\n\n  return App;\n\n})();\n\nvar Controller,\n  slice = [].slice;\n\nController = (function() {\n  Controller.prototype.uid = function() {\n    return (Math.random().toString(16) + \"000000000\").substr(2, 8) + (new Date().getTime());\n  };\n\n  function Controller(app, at1) {\n    this.app = app;\n    this.at = at1;\n    this.$inputor = this.app.$inputor;\n    this.id = this.$inputor[0].id || this.uid();\n    this.expectedQueryCBId = null;\n    this.setting = null;\n    this.query = null;\n    this.pos = 0;\n    this.range = null;\n    if ((this.$el = $(\"#atwho-ground-\" + this.id, this.app.$el)).length === 0) {\n      this.app.$el.append(this.$el = $(\"<div id='atwho-ground-\" + this.id + \"'></div>\"));\n    }\n    this.model = new Model(this);\n    this.view = new View(this);\n  }\n\n  Controller.prototype.init = function(setting) {\n    this.setting = $.extend({}, this.setting || $.fn.atwho[\"default\"], setting);\n    this.view.init();\n    return this.model.reload(this.setting.data);\n  };\n\n  Controller.prototype.destroy = function() {\n    this.trigger('beforeDestroy');\n    this.model.destroy();\n    this.view.destroy();\n    return this.$el.remove();\n  };\n\n  Controller.prototype.callDefault = function() {\n    var args, error, funcName;\n    funcName = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n    try {\n      return DEFAULT_CALLBACKS[funcName].apply(this, args);\n    } catch (error1) {\n      error = error1;\n      return $.error(error + \" Or maybe At.js doesn't have function \" + funcName);\n    }\n  };\n\n  Controller.prototype.trigger = function(name, data) {\n    var alias, eventName;\n    if (data == null) {\n      data = [];\n    }\n    data.push(this);\n    alias = this.getOpt('alias');\n    eventName = alias ? name + \"-\" + alias + \".atwho\" : name + \".atwho\";\n    return this.$inputor.trigger(eventName, data);\n  };\n\n  Controller.prototype.callbacks = function(funcName) {\n    return this.getOpt(\"callbacks\")[funcName] || DEFAULT_CALLBACKS[funcName];\n  };\n\n  Controller.prototype.getOpt = function(at, default_value) {\n    var e;\n    try {\n      return this.setting[at];\n    } catch (error1) {\n      e = error1;\n      return null;\n    }\n  };\n\n  Controller.prototype.insertContentFor = function($li) {\n    var data, tpl;\n    tpl = this.getOpt('insertTpl');\n    data = $.extend({}, $li.data('item-data'), {\n      'atwho-at': this.at\n    });\n    return this.callbacks(\"tplEval\").call(this, tpl, data, \"onInsert\");\n  };\n\n  Controller.prototype.renderView = function(data) {\n    var searchKey;\n    searchKey = this.getOpt(\"searchKey\");\n    data = this.callbacks(\"sorter\").call(this, this.query.text, data, searchKey);\n    return this.view.render(data.slice(0, this.getOpt('limit')));\n  };\n\n  Controller.arrayToDefaultHash = function(data) {\n    var i, item, len, results;\n    if (!$.isArray(data)) {\n      return data;\n    }\n    results = [];\n    for (i = 0, len = data.length; i < len; i++) {\n      item = data[i];\n      if ($.isPlainObject(item)) {\n        results.push(item);\n      } else {\n        results.push({\n          name: item\n        });\n      }\n    }\n    return results;\n  };\n\n  Controller.prototype.lookUp = function(e) {\n    var query, wait;\n    if (e && e.type === 'click' && !this.getOpt('lookUpOnClick')) {\n      return;\n    }\n    if (this.getOpt('suspendOnComposing') && this.app.isComposing) {\n      return;\n    }\n    query = this.catchQuery(e);\n    if (!query) {\n      this.expectedQueryCBId = null;\n      return query;\n    }\n    this.app.setContextFor(this.at);\n    if (wait = this.getOpt('delay')) {\n      this._delayLookUp(query, wait);\n    } else {\n      this._lookUp(query);\n    }\n    return query;\n  };\n\n  Controller.prototype._delayLookUp = function(query, wait) {\n    var now, remaining;\n    now = Date.now ? Date.now() : new Date().getTime();\n    this.previousCallTime || (this.previousCallTime = now);\n    remaining = wait - (now - this.previousCallTime);\n    if ((0 < remaining && remaining < wait)) {\n      this.previousCallTime = now;\n      this._stopDelayedCall();\n      return this.delayedCallTimeout = setTimeout((function(_this) {\n        return function() {\n          _this.previousCallTime = 0;\n          _this.delayedCallTimeout = null;\n          return _this._lookUp(query);\n        };\n      })(this), wait);\n    } else {\n      this._stopDelayedCall();\n      if (this.previousCallTime !== now) {\n        this.previousCallTime = 0;\n      }\n      return this._lookUp(query);\n    }\n  };\n\n  Controller.prototype._stopDelayedCall = function() {\n    if (this.delayedCallTimeout) {\n      clearTimeout(this.delayedCallTimeout);\n      return this.delayedCallTimeout = null;\n    }\n  };\n\n  Controller.prototype._generateQueryCBId = function() {\n    return {};\n  };\n\n  Controller.prototype._lookUp = function(query) {\n    var _callback;\n    _callback = function(queryCBId, data) {\n      if (queryCBId !== this.expectedQueryCBId) {\n        return;\n      }\n      if (data && data.length > 0) {\n        return this.renderView(this.constructor.arrayToDefaultHash(data));\n      } else {\n        return this.view.hide();\n      }\n    };\n    this.expectedQueryCBId = this._generateQueryCBId();\n    return this.model.query(query.text, $.proxy(_callback, this, this.expectedQueryCBId));\n  };\n\n  return Controller;\n\n})();\n\nvar TextareaController,\n  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n  hasProp = {}.hasOwnProperty;\n\nTextareaController = (function(superClass) {\n  extend(TextareaController, superClass);\n\n  function TextareaController() {\n    return TextareaController.__super__.constructor.apply(this, arguments);\n  }\n\n  TextareaController.prototype.catchQuery = function() {\n    var caretPos, content, end, isString, query, start, subtext;\n    content = this.$inputor.val();\n    caretPos = this.$inputor.caret('pos', {\n      iframe: this.app.iframe\n    });\n    subtext = content.slice(0, caretPos);\n    query = this.callbacks(\"matcher\").call(this, this.at, subtext, this.getOpt('startWithSpace'), this.getOpt(\"acceptSpaceBar\"));\n    isString = typeof query === 'string';\n    if (isString && query.length < this.getOpt('minLen', 0)) {\n      return;\n    }\n    if (isString && query.length <= this.getOpt('maxLen', 20)) {\n      start = caretPos - query.length;\n      end = start + query.length;\n      this.pos = start;\n      query = {\n        'text': query,\n        'headPos': start,\n        'endPos': end\n      };\n      this.trigger(\"matched\", [this.at, query.text]);\n    } else {\n      query = null;\n      this.view.hide();\n    }\n    return this.query = query;\n  };\n\n  TextareaController.prototype.rect = function() {\n    var c, iframeOffset, scaleBottom;\n    if (!(c = this.$inputor.caret('offset', this.pos - 1, {\n      iframe: this.app.iframe\n    }))) {\n      return;\n    }\n    if (this.app.iframe && !this.app.iframeAsRoot) {\n      iframeOffset = $(this.app.iframe).offset();\n      c.left += iframeOffset.left;\n      c.top += iframeOffset.top;\n    }\n    scaleBottom = this.app.document.selection ? 0 : 2;\n    return {\n      left: c.left,\n      top: c.top,\n      bottom: c.top + c.height + scaleBottom\n    };\n  };\n\n  TextareaController.prototype.insert = function(content, $li) {\n    var $inputor, source, startStr, suffix, text;\n    $inputor = this.$inputor;\n    source = $inputor.val();\n    startStr = source.slice(0, Math.max(this.query.headPos - this.at.length, 0));\n    suffix = (suffix = this.getOpt('suffix')) === \"\" ? suffix : suffix || \" \";\n    content += suffix;\n    text = \"\" + startStr + content + (source.slice(this.query['endPos'] || 0));\n    $inputor.val(text);\n    $inputor.caret('pos', startStr.length + content.length, {\n      iframe: this.app.iframe\n    });\n    if (!$inputor.is(':focus')) {\n      $inputor.focus();\n    }\n    return $inputor.change();\n  };\n\n  return TextareaController;\n\n})(Controller);\n\nvar EditableController,\n  extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n  hasProp = {}.hasOwnProperty;\n\nEditableController = (function(superClass) {\n  extend(EditableController, superClass);\n\n  function EditableController() {\n    return EditableController.__super__.constructor.apply(this, arguments);\n  }\n\n  EditableController.prototype._getRange = function() {\n    var sel;\n    sel = this.app.window.getSelection();\n    if (sel.rangeCount > 0) {\n      return sel.getRangeAt(0);\n    }\n  };\n\n  EditableController.prototype._setRange = function(position, node, range) {\n    if (range == null) {\n      range = this._getRange();\n    }\n    if (!(range && node)) {\n      return;\n    }\n    node = $(node)[0];\n    if (position === 'after') {\n      range.setEndAfter(node);\n      range.setStartAfter(node);\n    } else {\n      range.setEndBefore(node);\n      range.setStartBefore(node);\n    }\n    range.collapse(false);\n    return this._clearRange(range);\n  };\n\n  EditableController.prototype._clearRange = function(range) {\n    var sel;\n    if (range == null) {\n      range = this._getRange();\n    }\n    sel = this.app.window.getSelection();\n    if (this.ctrl_a_pressed == null) {\n      sel.removeAllRanges();\n      return sel.addRange(range);\n    }\n  };\n\n  EditableController.prototype._movingEvent = function(e) {\n    var ref;\n    return e.type === 'click' || ((ref = e.which) === KEY_CODE.RIGHT || ref === KEY_CODE.LEFT || ref === KEY_CODE.UP || ref === KEY_CODE.DOWN);\n  };\n\n  EditableController.prototype._unwrap = function(node) {\n    var next;\n    node = $(node).unwrap().get(0);\n    if ((next = node.nextSibling) && next.nodeValue) {\n      node.nodeValue += next.nodeValue;\n      $(next).remove();\n    }\n    return node;\n  };\n\n  EditableController.prototype.catchQuery = function(e) {\n    var $inserted, $query, _range, index, inserted, isString, lastNode, matched, offset, query, query_content, range;\n    if (!(range = this._getRange())) {\n      return;\n    }\n    if (!range.collapsed) {\n      return;\n    }\n    if (e.which === KEY_CODE.ENTER) {\n      ($query = $(range.startContainer).closest('.atwho-query')).contents().unwrap();\n      if ($query.is(':empty')) {\n        $query.remove();\n      }\n      ($query = $(\".atwho-query\", this.app.document)).text($query.text()).contents().last().unwrap();\n      this._clearRange();\n      return;\n    }\n    if (/firefox/i.test(navigator.userAgent)) {\n      if ($(range.startContainer).is(this.$inputor)) {\n        this._clearRange();\n        return;\n      }\n      if (e.which === KEY_CODE.BACKSPACE && range.startContainer.nodeType === document.ELEMENT_NODE && (offset = range.startOffset - 1) >= 0) {\n        _range = range.cloneRange();\n        _range.setStart(range.startContainer, offset);\n        if ($(_range.cloneContents()).contents().last().is('.atwho-inserted')) {\n          inserted = $(range.startContainer).contents().get(offset);\n          this._setRange('after', $(inserted).contents().last());\n        }\n      } else if (e.which === KEY_CODE.LEFT && range.startContainer.nodeType === document.TEXT_NODE) {\n        $inserted = $(range.startContainer.previousSibling);\n        if ($inserted.is('.atwho-inserted') && range.startOffset === 0) {\n          this._setRange('after', $inserted.contents().last());\n        }\n      }\n    }\n    $(range.startContainer).closest('.atwho-inserted').addClass('atwho-query').siblings().removeClass('atwho-query');\n    if (($query = $(\".atwho-query\", this.app.document)).length > 0 && $query.is(':empty') && $query.text().length === 0) {\n      $query.remove();\n    }\n    if (!this._movingEvent(e)) {\n      $query.removeClass('atwho-inserted');\n    }\n    if ($query.length > 0) {\n      switch (e.which) {\n        case KEY_CODE.LEFT:\n          this._setRange('before', $query.get(0), range);\n          $query.removeClass('atwho-query');\n          return;\n        case KEY_CODE.RIGHT:\n          this._setRange('after', $query.get(0).nextSibling, range);\n          $query.removeClass('atwho-query');\n          return;\n      }\n    }\n    if ($query.length > 0 && (query_content = $query.attr('data-atwho-at-query'))) {\n      $query.empty().html(query_content).attr('data-atwho-at-query', null);\n      this._setRange('after', $query.get(0), range);\n    }\n    _range = range.cloneRange();\n    _range.setStart(range.startContainer, 0);\n    matched = this.callbacks(\"matcher\").call(this, this.at, _range.toString(), this.getOpt('startWithSpace'), this.getOpt(\"acceptSpaceBar\"));\n    isString = typeof matched === 'string';\n    if ($query.length === 0 && isString && (index = range.startOffset - this.at.length - matched.length) >= 0) {\n      range.setStart(range.startContainer, index);\n      $query = $('<span/>', this.app.document).attr(this.getOpt(\"editableAtwhoQueryAttrs\")).addClass('atwho-query');\n      range.surroundContents($query.get(0));\n      lastNode = $query.contents().last().get(0);\n      if (lastNode) {\n        if (/firefox/i.test(navigator.userAgent)) {\n          range.setStart(lastNode, lastNode.length);\n          range.setEnd(lastNode, lastNode.length);\n          this._clearRange(range);\n        } else {\n          this._setRange('after', lastNode, range);\n        }\n      }\n    }\n    if (isString && matched.length < this.getOpt('minLen', 0)) {\n      return;\n    }\n    if (isString && matched.length <= this.getOpt('maxLen', 20)) {\n      query = {\n        text: matched,\n        el: $query\n      };\n      this.trigger(\"matched\", [this.at, query.text]);\n      return this.query = query;\n    } else {\n      this.view.hide();\n      this.query = {\n        el: $query\n      };\n      if ($query.text().indexOf(this.at) >= 0) {\n        if (this._movingEvent(e) && $query.hasClass('atwho-inserted')) {\n          $query.removeClass('atwho-query');\n        } else if (false !== this.callbacks('afterMatchFailed').call(this, this.at, $query)) {\n          this._setRange(\"after\", this._unwrap($query.text($query.text()).contents().first()));\n        }\n      }\n      return null;\n    }\n  };\n\n  EditableController.prototype.rect = function() {\n    var $iframe, iframeOffset, rect;\n    rect = this.query.el.offset();\n    if (!(rect && this.query.el[0].getClientRects().length)) {\n      return;\n    }\n    if (this.app.iframe && !this.app.iframeAsRoot) {\n      iframeOffset = ($iframe = $(this.app.iframe)).offset();\n      rect.left += iframeOffset.left - this.$inputor.scrollLeft();\n      rect.top += iframeOffset.top - this.$inputor.scrollTop();\n    }\n    rect.bottom = rect.top + this.query.el.height();\n    return rect;\n  };\n\n  EditableController.prototype.insert = function(content, $li) {\n    var data, overrides, range, suffix, suffixNode;\n    if (!this.$inputor.is(':focus')) {\n      this.$inputor.focus();\n    }\n    overrides = this.getOpt('functionOverrides');\n    if (overrides.insert) {\n      return overrides.insert.call(this, content, $li);\n    }\n    suffix = (suffix = this.getOpt('suffix')) === \"\" ? suffix : suffix || \"\\u00A0\";\n    data = $li.data('item-data');\n    this.query.el.removeClass('atwho-query').addClass('atwho-inserted').html(content).attr('data-atwho-at-query', \"\" + data['atwho-at'] + this.query.text).attr('contenteditable', \"false\");\n    if (range = this._getRange()) {\n      if (this.query.el.length) {\n        range.setEndAfter(this.query.el[0]);\n      }\n      range.collapse(false);\n      range.insertNode(suffixNode = this.app.document.createTextNode(\"\" + suffix));\n      this._setRange('after', suffixNode, range);\n    }\n    if (!this.$inputor.is(':focus')) {\n      this.$inputor.focus();\n    }\n    return this.$inputor.change();\n  };\n\n  return EditableController;\n\n})(Controller);\n\nvar Model;\n\nModel = (function() {\n  function Model(context) {\n    this.context = context;\n    this.at = this.context.at;\n    this.storage = this.context.$inputor;\n  }\n\n  Model.prototype.destroy = function() {\n    return this.storage.data(this.at, null);\n  };\n\n  Model.prototype.saved = function() {\n    return this.fetch() > 0;\n  };\n\n  Model.prototype.query = function(query, callback) {\n    var _remoteFilter, data, searchKey;\n    data = this.fetch();\n    searchKey = this.context.getOpt(\"searchKey\");\n    data = this.context.callbacks('filter').call(this.context, query, data, searchKey) || [];\n    _remoteFilter = this.context.callbacks('remoteFilter');\n    if (data.length > 0 || (!_remoteFilter && data.length === 0)) {\n      return callback(data);\n    } else {\n      return _remoteFilter.call(this.context, query, callback);\n    }\n  };\n\n  Model.prototype.fetch = function() {\n    return this.storage.data(this.at) || [];\n  };\n\n  Model.prototype.save = function(data) {\n    return this.storage.data(this.at, this.context.callbacks(\"beforeSave\").call(this.context, data || []));\n  };\n\n  Model.prototype.load = function(data) {\n    if (!(this.saved() || !data)) {\n      return this._load(data);\n    }\n  };\n\n  Model.prototype.reload = function(data) {\n    return this._load(data);\n  };\n\n  Model.prototype._load = function(data) {\n    if (typeof data === \"string\") {\n      throw new Error(\"@gitlab/at.js removed support for $.ajax\");\n    } else {\n      return this.save(data);\n    }\n  };\n\n  return Model;\n\n})();\n\nvar View;\n\nView = (function() {\n  function View(context) {\n    this.context = context;\n    this.$el = $(\"<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>\");\n    this.$elUl = this.$el.children();\n    this.timeoutID = null;\n    this.context.$el.append(this.$el);\n    this.bindEvent();\n  }\n\n  View.prototype.init = function() {\n    var header_tpl, id;\n    id = this.context.getOpt(\"alias\") || this.context.at.charCodeAt(0);\n    header_tpl = this.context.getOpt(\"headerTpl\");\n    if (header_tpl && this.$el.children().length === 1) {\n      this.$el.prepend(header_tpl);\n    }\n    return this.$el.attr({\n      'id': \"at-view-\" + id\n    });\n  };\n\n  View.prototype.destroy = function() {\n    return this.$el.remove();\n  };\n\n  View.prototype.bindEvent = function() {\n    var $menu, lastCoordX, lastCoordY;\n    $menu = this.$el.find('ul');\n    lastCoordX = 0;\n    lastCoordY = 0;\n    return $menu.on('mousemove.atwho-view', 'li', (function(_this) {\n      return function(e) {\n        var $cur;\n        if (lastCoordX === e.clientX && lastCoordY === e.clientY) {\n          return;\n        }\n        lastCoordX = e.clientX;\n        lastCoordY = e.clientY;\n        $cur = $(e.currentTarget);\n        if ($cur.hasClass('cur')) {\n          return;\n        }\n        $menu.find('.cur').removeClass('cur');\n        return $cur.addClass('cur');\n      };\n    })(this)).on('click.atwho-view', 'li', (function(_this) {\n      return function(e) {\n        $menu.find('.cur').removeClass('cur');\n        $(e.currentTarget).addClass('cur');\n        _this.choose(e);\n        return e.preventDefault();\n      };\n    })(this));\n  };\n\n  View.prototype.visible = function() {\n    return $.expr.filters.visible(this.$el[0]);\n  };\n\n  View.prototype.highlighted = function() {\n    return this.$el.find(\".cur\").length > 0;\n  };\n\n  View.prototype.choose = function(e) {\n    var $li, content;\n    if (($li = this.$el.find(\".cur\")).length) {\n      content = this.context.insertContentFor($li);\n      this.context._stopDelayedCall();\n      this.context.insert(this.context.callbacks(\"beforeInsert\").call(this.context, content, $li, e), $li);\n      this.context.trigger(\"inserted\", [$li, e]);\n      this.hide(e);\n    }\n    if (this.context.getOpt(\"hideWithoutSuffix\")) {\n      return this.stopShowing = true;\n    }\n  };\n\n  View.prototype.reposition = function(rect) {\n    var _window, offset, overflowOffset, ref;\n    _window = this.context.app.iframeAsRoot ? this.context.app.window : window;\n    if (rect.bottom + this.$el.height() - $(_window).scrollTop() > $(_window).height()) {\n      rect.bottom = rect.top - this.$el.height();\n    }\n    if (rect.left > (overflowOffset = $(_window).width() - this.$el.width() - 5)) {\n      rect.left = overflowOffset;\n    }\n    offset = {\n      left: rect.left,\n      top: rect.bottom\n    };\n    if ((ref = this.context.callbacks(\"beforeReposition\")) != null) {\n      ref.call(this.context, offset);\n    }\n    this.$el.offset(offset);\n    return this.context.trigger(\"reposition\", [offset]);\n  };\n\n  View.prototype.next = function() {\n    var cur, next, nextEl, offset;\n    cur = this.$el.find('.cur').removeClass('cur');\n    next = cur.next();\n    if (!next.length) {\n      next = this.$el.find('li:first');\n    }\n    next.addClass('cur');\n    nextEl = next[0];\n    offset = nextEl.offsetTop + nextEl.offsetHeight + (nextEl.nextSibling ? nextEl.nextSibling.offsetHeight : 0);\n    return this.scrollTop(Math.max(0, offset - this.$el.height()));\n  };\n\n  View.prototype.prev = function() {\n    var cur, offset, prev, prevEl;\n    cur = this.$el.find('.cur').removeClass('cur');\n    prev = cur.prev();\n    if (!prev.length) {\n      prev = this.$el.find('li:last');\n    }\n    prev.addClass('cur');\n    prevEl = prev[0];\n    offset = prevEl.offsetTop + prevEl.offsetHeight + (prevEl.nextSibling ? prevEl.nextSibling.offsetHeight : 0);\n    return this.scrollTop(Math.max(0, offset - this.$el.height()));\n  };\n\n  View.prototype.scrollTop = function(scrollTop) {\n    return this.$elUl.scrollTop(scrollTop);\n  };\n\n  View.prototype.show = function() {\n    var rect;\n    if (this.stopShowing) {\n      this.stopShowing = false;\n      return;\n    }\n    if (!this.visible()) {\n      this.$el.show();\n      this.$el.scrollTop(0);\n      this.context.trigger('shown');\n    }\n    if (rect = this.context.rect()) {\n      return this.reposition(rect);\n    }\n  };\n\n  View.prototype.hide = function(e, time) {\n    var callback;\n    if (!this.visible()) {\n      return;\n    }\n    if (isNaN(time)) {\n      this.$el.hide();\n      return this.context.trigger('hidden', [e]);\n    } else {\n      callback = (function(_this) {\n        return function() {\n          return _this.hide();\n        };\n      })(this);\n      clearTimeout(this.timeoutID);\n      return this.timeoutID = setTimeout(callback, time);\n    }\n  };\n\n  View.prototype.render = function(list) {\n    var $li, $ul, i, item, len, li, tpl;\n    if (!($.isArray(list) && list.length > 0)) {\n      this.hide();\n      return;\n    }\n    this.$el.find('ul').empty();\n    $ul = this.$el.find('ul');\n    tpl = this.context.getOpt('displayTpl');\n    for (i = 0, len = list.length; i < len; i++) {\n      item = list[i];\n      item = $.extend({}, item, {\n        'atwho-at': this.context.at\n      });\n      li = this.context.callbacks(\"tplEval\").call(this.context, tpl, item, \"onDisplay\");\n      $li = $(this.context.callbacks(\"highlighter\").call(this.context, li, this.context.query.text));\n      $li.data(\"item-data\", item);\n      $ul.append($li);\n    }\n    this.show();\n    if (this.context.getOpt('highlightFirst')) {\n      return $ul.find(\"li:first\").addClass(\"cur\");\n    }\n  };\n\n  return View;\n\n})();\n\nvar Api;\n\nApi = {\n  load: function(at, data) {\n    var c;\n    if (c = this.controller(at)) {\n      return c.model.load(data);\n    }\n  },\n  isSelecting: function() {\n    var ref;\n    return !!((ref = this.controller()) != null ? ref.view.visible() : void 0);\n  },\n  hide: function() {\n    var ref;\n    return (ref = this.controller()) != null ? ref.view.hide() : void 0;\n  },\n  reposition: function() {\n    var c;\n    if (c = this.controller()) {\n      return c.view.reposition(c.rect());\n    }\n  },\n  setIframe: function(iframe, asRoot) {\n    this.setupRootElement(iframe, asRoot);\n    return null;\n  },\n  run: function() {\n    return this.dispatch();\n  },\n  destroy: function() {\n    this.shutdown();\n    return this.$inputor.data('atwho', null);\n  }\n};\n\n$.fn.atwho = function(method) {\n  var _args, result;\n  _args = arguments;\n  result = null;\n  this.filter('textarea, input, [contenteditable=\"\"], [contenteditable=true]').each(function() {\n    var $this, app;\n    if (!(app = ($this = $(this)).data(\"atwho\"))) {\n      $this.data('atwho', (app = new App(this)));\n    }\n    if (typeof method === 'object' || !method) {\n      return app.reg(method.at, method);\n    } else if (Api[method] && app) {\n      return result = Api[method].apply(app, Array.prototype.slice.call(_args, 1));\n    } else {\n      return $.error(\"Method \" + method + \" does not exist on jQuery.atwho\");\n    }\n  });\n  if (result != null) {\n    return result;\n  } else {\n    return this;\n  }\n};\n\n$.fn.atwho[\"default\"] = {\n  at: void 0,\n  alias: void 0,\n  data: null,\n  displayTpl: \"<li>${name}</li>\",\n  insertTpl: \"${atwho-at}${name}\",\n  headerTpl: null,\n  callbacks: DEFAULT_CALLBACKS,\n  functionOverrides: {},\n  searchKey: \"name\",\n  suffix: void 0,\n  hideWithoutSuffix: false,\n  startWithSpace: true,\n  acceptSpaceBar: false,\n  highlightFirst: true,\n  limit: 5,\n  maxLen: 20,\n  minLen: 0,\n  displayTimeout: 300,\n  delay: null,\n  spaceSelectsMatch: false,\n  tabSelectsMatch: true,\n  editableAtwhoQueryAttrs: {},\n  scrollDuration: 150,\n  suspendOnComposing: true,\n  lookUpOnClick: true\n};\n\n$.fn.atwho.debug = false;\n\n}));\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',_vm._b({attrs:{\"data-testid\":\"modal-commit\",\"modal-id\":_vm.modalId,\"size\":\"sm\",\"title\":_vm.modalTitle,\"action-cancel\":_vm.actionCancel,\"action-primary\":_vm.actionPrimary},on:{\"hidden\":_vm.resetModalHandler,\"primary\":_vm.handlePrimary}},'gl-modal',_vm.$attrs,false),[(_vm.prependedText.length)?_c('p',{attrs:{\"data-testid\":\"prepended-text\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.prependedText}})],1):_vm._e(),_vm._v(\" \"),_c('gl-form',{ref:\"form\",attrs:{\"action\":_vm.endpoint,\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"authenticity_token\"},domProps:{\"value\":_vm.$options.csrf.token}}),_vm._v(\" \"),(_vm.isCherryPick)?_c('gl-form-group',{attrs:{\"label\":_vm.i18n.projectLabel,\"label-for\":\"start_project\",\"data-testid\":\"dropdown-group\"}},[_c('input',{attrs:{\"id\":\"target_project_id\",\"type\":\"hidden\",\"name\":\"target_project_id\"},domProps:{\"value\":_vm.targetProjectId}}),_vm._v(\" \"),_c('projects-dropdown',{attrs:{\"value\":_vm.targetProjectName},on:{\"input\":_vm.setSelectedProject}})],1):_vm._e(),_vm._v(\" \"),_c('gl-form-group',{attrs:{\"label\":_vm.i18n.branchLabel,\"label-for\":\"start_branch\",\"data-testid\":\"dropdown-group\"}},[_c('input',{attrs:{\"id\":\"start_branch\",\"type\":\"hidden\",\"name\":\"start_branch\"},domProps:{\"value\":_vm.branch}}),_vm._v(\" \"),_c('branches-dropdown',{attrs:{\"value\":_vm.branch},on:{\"input\":_vm.setBranch}})],1),_vm._v(\" \"),(_vm.pushCode)?_c('gl-form-checkbox',{staticClass:\"gl-mt-3\",attrs:{\"name\":\"create_merge_request\"},model:{value:(_vm.checked),callback:function ($$v) {_vm.checked=$$v},expression:\"checked\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.i18n.startMergeRequest},scopedSlots:_vm._u([{key:\"newMergeRequest\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.i18n.newMergeRequest))])]},proxy:true}],null,false,1455792372)})],1):_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"create_merge_request\",\"value\":\"1\"}})],1),_vm._v(\" \"),(!_vm.pushCode)?_c('p',{staticClass:\"gl-mb-0 gl-mt-5\",attrs:{\"data-testid\":\"appended-text\"}},[(_vm.branchCollaboration)?_c('gl-sprintf',{attrs:{\"message\":_vm.i18n.existingBranch},scopedSlots:_vm._u([{key:\"branchName\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.existingBranch))])]},proxy:true}],null,false,2950121280)}):_c('gl-sprintf',{attrs:{\"message\":_vm.i18n.branchInFork}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./branches_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!./branches_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport { debounce, uniqBy } from 'lodash';\nimport {\n  I18N_NO_RESULTS_MESSAGE,\n  I18N_BRANCH_HEADER,\n  I18N_BRANCH_SEARCH_PLACEHOLDER,\n} from '../constants';\n\nexport default {\n  name: 'BranchesDropdown',\n  components: {\n    GlCollapsibleListbox,\n  },\n  props: {\n    value: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  i18n: {\n    noResultsMessage: I18N_NO_RESULTS_MESSAGE,\n    branchHeaderTitle: I18N_BRANCH_HEADER,\n    branchSearchPlaceholder: I18N_BRANCH_SEARCH_PLACEHOLDER,\n  },\n  data() {\n    return {\n      searchTerm: '',\n    };\n  },\n  computed: {\n    ...mapGetters(['joinedBranches']),\n    ...mapState(['isFetching', 'branch']),\n    listboxItems() {\n      const selectedItem = { value: this.branch, text: this.branch };\n      const transformedList = this.joinedBranches.map((value) => ({ value, text: value }));\n\n      if (this.searchTerm) {\n        return transformedList;\n      }\n\n      // Add selected item to top of list if not searching\n      return uniqBy([selectedItem].concat(transformedList), 'value');\n    },\n  },\n  mounted() {\n    this.fetchBranches();\n  },\n  methods: {\n    ...mapActions(['fetchBranches']),\n    selectBranch(branch) {\n      this.$emit('input', branch);\n    },\n    debouncedSearch: debounce(function debouncedSearch() {\n      this.fetchBranches(this.searchTerm);\n    }, 250),\n    searchTermChanged(value) {\n      this.searchTerm = value.trim();\n      this.debouncedSearch(value);\n    },\n  },\n};\n</script>\n<template>\n  <gl-collapsible-listbox\n    class=\"gl-max-w-full\"\n    :header-text=\"$options.i18n.branchHeaderTitle\"\n    :toggle-text=\"value\"\n    toggle-class=\"gl-w-full\"\n    :items=\"listboxItems\"\n    searchable\n    :search-placeholder=\"$options.i18n.branchSearchPlaceholder\"\n    :searching=\"isFetching\"\n    :selected=\"value\"\n    :no-results-text=\"$options.i18n.noResultsMessage\"\n    @search=\"searchTermChanged\"\n    @select=\"selectBranch\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./branches_dropdown.vue?vue&type=template&id=2a5aa854\"\nimport script from \"./branches_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./branches_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-collapsible-listbox',{staticClass:\"gl-max-w-full\",attrs:{\"header-text\":_vm.$options.i18n.branchHeaderTitle,\"toggle-text\":_vm.value,\"toggle-class\":\"gl-w-full\",\"items\":_vm.listboxItems,\"searchable\":\"\",\"search-placeholder\":_vm.$options.i18n.branchSearchPlaceholder,\"searching\":_vm.isFetching,\"selected\":_vm.value,\"no-results-text\":_vm.$options.i18n.noResultsMessage},on:{\"search\":_vm.searchTermChanged,\"select\":_vm.selectBranch}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./projects_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!./projects_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapState } from 'vuex';\nimport { debounce, uniqBy } from 'lodash';\nimport {\n  I18N_NO_RESULTS_MESSAGE,\n  I18N_PROJECT_HEADER,\n  I18N_PROJECT_SEARCH_PLACEHOLDER,\n} from '../constants';\n\nexport default {\n  name: 'ProjectsDropdown',\n  components: {\n    GlCollapsibleListbox,\n  },\n  props: {\n    value: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  i18n: {\n    noResultsMessage: I18N_NO_RESULTS_MESSAGE,\n    projectHeaderTitle: I18N_PROJECT_HEADER,\n    projectSearchPlaceholder: I18N_PROJECT_SEARCH_PLACEHOLDER,\n  },\n  data() {\n    return {\n      filterTerm: '',\n    };\n  },\n  computed: {\n    ...mapGetters(['sortedProjects']),\n    ...mapState(['targetProjectId']),\n    filteredResults() {\n      const lowerCasedFilterTerm = this.filterTerm.toLowerCase();\n      return this.sortedProjects.filter((project) =>\n        project.name.toLowerCase().includes(lowerCasedFilterTerm),\n      );\n    },\n    listboxItems() {\n      const selectedItem = { value: this.selectedProject.id, text: this.selectedProject.name };\n      const transformedList = this.filteredResults.map(({ id, name }) => ({\n        value: id,\n        text: name,\n      }));\n\n      if (this.filterTerm) {\n        return transformedList;\n      }\n\n      // Add selected item to top of list if not searching\n      return uniqBy([selectedItem].concat(transformedList), 'value');\n    },\n    selectedProject() {\n      return this.sortedProjects.find((project) => project.id === this.targetProjectId) || {};\n    },\n  },\n  methods: {\n    selectProject(value) {\n      this.$emit('input', value);\n    },\n    debouncedSearch: debounce(function debouncedSearch(value) {\n      this.filterTerm = value.trim();\n    }, 250),\n  },\n};\n</script>\n<template>\n  <gl-collapsible-listbox\n    class=\"gl-max-w-full\"\n    :header-text=\"$options.i18n.projectHeaderTitle\"\n    :items=\"listboxItems\"\n    searchable\n    :search-placeholder=\"$options.i18n.projectSearchPlaceholder\"\n    :selected=\"selectedProject.id\"\n    :toggle-text=\"selectedProject.name\"\n    toggle-class=\"gl-w-full\"\n    :no-results-text=\"$options.i18n.noResultsMessage\"\n    @search=\"debouncedSearch\"\n    @select=\"selectProject\"\n  />\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!./form_modal.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!./form_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal, GlForm, GlFormCheckbox, GlSprintf, GlFormGroup } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapState } from 'vuex';\nimport api from '~/api';\nimport { BV_SHOW_MODAL } from '~/lib/utils/constants';\nimport csrf from '~/lib/utils/csrf';\nimport eventHub from '../event_hub';\nimport BranchesDropdown from './branches_dropdown.vue';\nimport ProjectsDropdown from './projects_dropdown.vue';\n\nexport default {\n  components: {\n    BranchesDropdown,\n    ProjectsDropdown,\n    GlModal,\n    GlForm,\n    GlFormCheckbox,\n    GlSprintf,\n    GlFormGroup,\n  },\n  inject: {\n    prependedText: {\n      default: '',\n    },\n  },\n  props: {\n    i18n: {\n      type: Object,\n      required: true,\n    },\n    openModal: {\n      type: String,\n      required: true,\n    },\n    modalId: {\n      type: String,\n      required: true,\n    },\n    isCherryPick: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    primaryActionEventName: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      checked: true,\n      actionPrimary: {\n        text: this.i18n.actionPrimaryText,\n        attributes: {\n          variant: 'confirm',\n          category: 'primary',\n          'data-testid': 'submit-commit',\n        },\n      },\n      actionCancel: {\n        text: this.i18n.actionCancelText,\n        attributes: { 'data-testid': 'cancel-commit' },\n      },\n    };\n  },\n  computed: {\n    ...mapState([\n      'branch',\n      'endpoint',\n      'pushCode',\n      'branchCollaboration',\n      'modalTitle',\n      'existingBranch',\n      'targetProjectId',\n      'targetProjectName',\n      'branchesEndpoint',\n    ]),\n  },\n  mounted() {\n    eventHub.$on(this.openModal, this.show);\n  },\n  methods: {\n    ...mapActions(['clearModal', 'setBranch', 'setSelectedBranch', 'setSelectedProject']),\n    show() {\n      this.$root.$emit(BV_SHOW_MODAL, this.modalId);\n    },\n    handlePrimary() {\n      if (this.primaryActionEventName) {\n        api.trackRedisHllUserEvent(this.primaryActionEventName);\n      }\n\n      this.$refs.form.$el.submit();\n    },\n    resetModalHandler() {\n      this.clearModal();\n      this.setSelectedBranch('');\n      this.checked = true;\n    },\n  },\n  csrf,\n};\n</script>\n<template>\n  <gl-modal\n    v-bind=\"$attrs\"\n    data-testid=\"modal-commit\"\n    :modal-id=\"modalId\"\n    size=\"sm\"\n    :title=\"modalTitle\"\n    :action-cancel=\"actionCancel\"\n    :action-primary=\"actionPrimary\"\n    @hidden=\"resetModalHandler\"\n    @primary=\"handlePrimary\"\n  >\n    <p v-if=\"prependedText.length\" data-testid=\"prepended-text\">\n      <gl-sprintf :message=\"prependedText\" />\n    </p>\n\n    <gl-form ref=\"form\" :action=\"endpoint\" method=\"post\">\n      <input type=\"hidden\" name=\"authenticity_token\" :value=\"$options.csrf.token\" />\n\n      <gl-form-group\n        v-if=\"isCherryPick\"\n        :label=\"i18n.projectLabel\"\n        label-for=\"start_project\"\n        data-testid=\"dropdown-group\"\n      >\n        <input\n          id=\"target_project_id\"\n          type=\"hidden\"\n          name=\"target_project_id\"\n          :value=\"targetProjectId\"\n        />\n\n        <projects-dropdown :value=\"targetProjectName\" @input=\"setSelectedProject\" />\n      </gl-form-group>\n\n      <gl-form-group\n        :label=\"i18n.branchLabel\"\n        label-for=\"start_branch\"\n        data-testid=\"dropdown-group\"\n      >\n        <input id=\"start_branch\" type=\"hidden\" name=\"start_branch\" :value=\"branch\" />\n\n        <branches-dropdown :value=\"branch\" @input=\"setBranch\" />\n      </gl-form-group>\n\n      <gl-form-checkbox\n        v-if=\"pushCode\"\n        v-model=\"checked\"\n        name=\"create_merge_request\"\n        class=\"gl-mt-3\"\n      >\n        <gl-sprintf :message=\"i18n.startMergeRequest\">\n          <template #newMergeRequest>\n            <strong>{{ i18n.newMergeRequest }}</strong>\n          </template>\n        </gl-sprintf>\n      </gl-form-checkbox>\n      <input v-else type=\"hidden\" name=\"create_merge_request\" value=\"1\" />\n    </gl-form>\n\n    <p v-if=\"!pushCode\" class=\"gl-mb-0 gl-mt-5\" data-testid=\"appended-text\">\n      <gl-sprintf v-if=\"branchCollaboration\" :message=\"i18n.existingBranch\">\n        <template #branchName>\n          <strong>{{ existingBranch }}</strong>\n        </template>\n      </gl-sprintf>\n      <gl-sprintf v-else :message=\"i18n.branchInFork\" />\n    </p>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./projects_dropdown.vue?vue&type=template&id=31e2772d\"\nimport script from \"./projects_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./projects_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-collapsible-listbox',{staticClass:\"gl-max-w-full\",attrs:{\"header-text\":_vm.$options.i18n.projectHeaderTitle,\"items\":_vm.listboxItems,\"searchable\":\"\",\"search-placeholder\":_vm.$options.i18n.projectSearchPlaceholder,\"selected\":_vm.selectedProject.id,\"toggle-text\":_vm.selectedProject.name,\"toggle-class\":\"gl-w-full\",\"no-results-text\":_vm.$options.i18n.noResultsMessage},on:{\"search\":_vm.debouncedSearch,\"select\":_vm.selectProject}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./form_modal.vue?vue&type=template&id=1e9c1fcb\"\nimport script from \"./form_modal.vue?vue&type=script&lang=js\"\nexport * from \"./form_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"editNoteForm\",staticClass:\"note-edit-form current-note-edit-form js-discussion-note-form\"},[(_vm.conflictWhileEditing)?_c('div',{staticClass:\"js-conflict-edit-warning alert alert-danger\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.changedCommentText.text,\"placeholders\":_vm.changedCommentText.placeholder},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.noteHash,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}],null,false,2525184110)})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"flash-container\"}),_vm._v(\" \"),_c('form',{staticClass:\"edit-note common-note-form js-quick-submit gfm-form\",attrs:{\"data-line-code\":_vm.lineCode}},[_c('comment-field-layout',{attrs:{\"is-internal-note\":_vm.discussionNote.internal,\"note\":_vm.updatedNoteBody,\"noteable-data\":_vm.getNoteableData}},[_c('markdown-editor',{ref:\"markdownEditor\",attrs:{\"value\":_vm.updatedNoteBody,\"render-markdown-path\":_vm.markdownPreviewPath,\"markdown-docs-path\":_vm.markdownDocsPath,\"code-suggestions-config\":_vm.codeSuggestionsConfig,\"add-spacing-classes\":false,\"help-page-path\":_vm.helpPagePath,\"note\":_vm.discussionNote,\"noteable-type\":_vm.noteableType,\"form-field-props\":_vm.formFieldProps,\"autosave-key\":_vm.autosaveKey,\"autocomplete-data-sources\":_vm.autocompleteDataSources,\"disabled\":_vm.shouldDisableField,\"supports-quick-actions\":\"\",\"autofocus\":_vm.autofocus,\"restore-from-autosave\":_vm.restoreFromAutosave},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if(!$event.shiftKey)return null;if(!$event.metaKey)return null;_vm.handleKeySubmit((_vm.forceUpdate = true))},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if(!$event.shiftKey)return null;if(!$event.ctrlKey)return null;_vm.handleKeySubmit((_vm.forceUpdate = true))},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if(!$event.metaKey)return null;if($event.ctrlKey||$event.shiftKey||$event.altKey)return null;return _vm.handleKeySubmit()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;if(!$event.ctrlKey)return null;if($event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.handleKeySubmit()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.editMyLastNote()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.cancelHandler(true)}],\"input\":_vm.onInput,\"handleSuggestDismissed\":() => _vm.$emit('handleSuggestDismissed')}})],1),_vm._v(\" \"),(_vm.glAbilities.measureCommentTemperature)?_c('comment-temperature',{ref:\"commentTemperature\",attrs:{\"item-id\":_vm.getNoteableData.id,\"item-type\":_vm.getNoteableData.noteableType,\"user-id\":_vm.currentUserId},on:{\"save\":function($event){return _vm.onSaveHandler()}},model:{value:(_vm.updatedNoteBody),callback:function ($$v) {_vm.updatedNoteBody=$$v},expression:\"updatedNoteBody\"}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"note-form-actions gl-font-size-0\"},[(_vm.showResolveDiscussionToggle)?[_c('label',[(_vm.discussionResolved)?[_c('gl-form-checkbox',{staticClass:\"js-unresolve-checkbox\",model:{value:(_vm.isUnresolving),callback:function ($$v) {_vm.isUnresolving=$$v},expression:\"isUnresolving\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.__('Unresolve thread'))+\"\\n            \")])]:[_c('gl-form-checkbox',{staticClass:\"js-resolve-checkbox\",model:{value:(_vm.isResolving),callback:function ($$v) {_vm.isResolving=$$v},expression:\"isResolving\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.__('Resolve thread'))+\"\\n            \")])]],2)]:_vm._e(),_vm._v(\" \"),(_vm.showBatchCommentsActions)?[_c('div',{staticClass:\"-gl-mb-3 gl-flex gl-flex-wrap\"},[_c('gl-button',{staticClass:\"gl-mb-3 sm:gl-mr-3\",attrs:{\"disabled\":_vm.isDisabled,\"category\":\"primary\",\"variant\":\"confirm\",\"data-testid\":\"start-review-button\"},on:{\"click\":_vm.handleAddToReview}},[(_vm.hasDrafts)?[_vm._v(_vm._s(_vm.__('Add to review')))]:[_vm._v(_vm._s(_vm.__('Start a review')))]],2),_vm._v(\" \"),_c('gl-button',{staticClass:\"js-comment-button gl-mb-3 sm:gl-mr-3\",attrs:{\"disabled\":_vm.isDisabled,\"category\":\"secondary\",\"variant\":\"confirm\",\"data-testid\":\"comment-now-button\"},on:{\"click\":function($event){return _vm.handleUpdate()}}},[_vm._v(\"\\n            \"+_vm._s(_vm.__('Add comment now'))+\"\\n          \")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"note-edit-cancel js-close-discussion-note-form gl-mb-3\",attrs:{\"category\":\"secondary\",\"variant\":\"default\",\"data-testid\":\"cancelBatchCommentsEnabled\"},on:{\"click\":function($event){return _vm.cancelHandler(true)}}},[_vm._v(\"\\n            \"+_vm._s(_vm.__('Cancel'))+\"\\n          \")])],1)]:[_c('div',{staticClass:\"gl-display-sm-flex gl-font-size-0 gl-flex-wrap\"},[_c('gl-button',{staticClass:\"js-vue-issue-save js-comment-button gl-mb-3 sm:gl-mb-0 sm:gl-mr-3\",attrs:{\"disabled\":_vm.isDisabled,\"category\":\"primary\",\"variant\":\"confirm\",\"data-testid\":\"reply-comment-button\"},on:{\"click\":function($event){return _vm.handleUpdate()}}},[_vm._v(\"\\n            \"+_vm._s(_vm.saveButtonTitle)+\"\\n          \")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"note-edit-cancel js-close-discussion-note-form\",attrs:{\"category\":\"secondary\",\"variant\":\"default\",\"data-testid\":\"cancel\"},on:{\"click\":function($event){return _vm.cancelHandler(true)}}},[_vm._v(\"\\n            \"+_vm._s(_vm.__('Cancel'))+\"\\n          \")])],1)]],2)],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!./note_form.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!./note_form.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlSprintf, GlLink, GlFormCheckbox } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions, mapState } from 'vuex';\nimport { mergeUrlParams } from '~/lib/utils/url_utility';\nimport { __ } from '~/locale';\nimport glAbilitiesMixin from '~/vue_shared/mixins/gl_abilities_mixin';\nimport MarkdownEditor from '~/vue_shared/components/markdown/markdown_editor.vue';\nimport { trackSavedUsingEditor } from '~/vue_shared/components/markdown/tracking';\nimport eventHub from '../event_hub';\nimport issuableStateMixin from '../mixins/issuable_state';\nimport resolvable from '../mixins/resolvable';\nimport { COMMENT_FORM } from '../i18n';\nimport { isSlashCommand } from '../utils';\nimport CommentFieldLayout from './comment_field_layout.vue';\n\nexport default {\n  i18n: COMMENT_FORM,\n  name: 'NoteForm',\n  components: {\n    MarkdownEditor,\n    CommentFieldLayout,\n    GlButton,\n    GlSprintf,\n    GlLink,\n    GlFormCheckbox,\n    CommentTemperature: () =>\n      import(\n        /* webpackChunkName: 'comment_temperature' */ 'ee_component/ai/components/comment_temperature.vue'\n      ),\n  },\n  mixins: [issuableStateMixin, resolvable, glAbilitiesMixin()],\n  props: {\n    noteBody: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    noteId: {\n      type: [String, Number],\n      required: false,\n      default: '',\n    },\n    saveButtonTitle: {\n      type: String,\n      required: false,\n      default: __('Save comment'),\n    },\n    discussion: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    lineCode: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    resolveDiscussion: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    lines: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    note: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    diffFile: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showSuggestPopover: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isDraft: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    autofocus: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    restoreFromAutosave: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      updatedNoteBody: this.noteBody,\n      conflictWhileEditing: false,\n      isSubmitting: false,\n      isMeasuringCommentTemperature: false,\n      isResolving: this.resolveDiscussion,\n      isUnresolving: !this.resolveDiscussion,\n      onSaveHandler: null,\n      resolveAsThread: true,\n      isSubmittingWithKeydown: false,\n      formFieldProps: {\n        id: 'note_note',\n        name: 'note[note]',\n        'aria-label': __('Reply to comment'),\n        placeholder: this.$options.i18n.bodyPlaceholder,\n        class: 'note-textarea js-gfm-input js-note-text markdown-area js-vue-issue-note-form',\n        'data-testid': 'reply-field',\n      },\n    };\n  },\n  computed: {\n    ...mapGetters([\n      'getDiscussionLastNote',\n      'getNoteableData',\n      'getNoteableDataByProp',\n      'getNotesDataByProp',\n      'getUserDataByProp',\n    ]),\n    ...mapState({\n      withBatchComments: (state) => state.batchComments?.withBatchComments,\n    }),\n    ...mapGetters('batchComments', ['hasDrafts']),\n    autocompleteDataSources() {\n      return gl.GfmAutoComplete?.dataSources;\n    },\n    showBatchCommentsActions() {\n      return this.withBatchComments && this.noteId === '' && !this.discussion.for_commit;\n    },\n    showResolveDiscussionToggle() {\n      if (!this.discussion?.notes) return false;\n\n      return (\n        this.discussion?.notes\n          .filter((n) => n.resolvable)\n          .some((n) => n.current_user?.can_resolve_discussion) || this.isDraft\n      );\n    },\n    noteHash() {\n      if (this.noteId) {\n        return `#note_${this.noteId}`;\n      }\n      return '#';\n    },\n    noteableType() {\n      return this.getNoteableData.noteableType;\n    },\n    diffParams() {\n      if (this.diffFile) {\n        return {\n          filePath: this.diffFile.file_path,\n          refs: this.diffFile.diff_refs,\n        };\n      }\n      if (this.note && this.note.position) {\n        return {\n          filePath: this.note.position.new_path,\n          refs: this.note.position,\n        };\n      }\n      if (this.discussion && this.discussion.diff_file) {\n        return {\n          filePath: this.discussion.diff_file.file_path,\n          refs: this.discussion.diff_file.diff_refs,\n        };\n      }\n\n      return null;\n    },\n    markdownPreviewPath() {\n      const notable = this.getNoteableDataByProp('preview_note_path');\n\n      const previewSuggestions = this.line && this.diffParams;\n      const params = previewSuggestions\n        ? {\n            preview_suggestions: previewSuggestions,\n            line: this.line.new_line,\n            file_path: this.diffParams.filePath,\n            base_sha: this.diffParams.refs.base_sha,\n            start_sha: this.diffParams.refs.start_sha,\n            head_sha: this.diffParams.refs.head_sha,\n          }\n        : {};\n\n      return mergeUrlParams(params, notable);\n    },\n    markdownDocsPath() {\n      return this.getNotesDataByProp('markdownDocsPath');\n    },\n    currentUserId() {\n      return this.getUserDataByProp('id');\n    },\n    isDisabled() {\n      return !this.updatedNoteBody.length || this.isSubmitting;\n    },\n    isInternalNote() {\n      return this.discussionNote.internal || this.discussion.confidential;\n    },\n    discussionNote() {\n      const discussionNote = this.discussion.id\n        ? this.getDiscussionLastNote(this.discussion)\n        : this.note;\n      return discussionNote || {};\n    },\n    canSuggest() {\n      return (\n        this.getNoteableData.can_receive_suggestion && this.line && this.line.can_receive_suggestion\n      );\n    },\n    changedCommentText() {\n      return {\n        text: __(\n          'This comment changed after you started editing it. Review the %{startTag}updated comment%{endTag} to ensure information is not lost.',\n        ),\n        placeholder: { link: ['startTag', 'endTag'] },\n      };\n    },\n    codeSuggestionsConfig() {\n      return {\n        canSuggest: this.canSuggest,\n        line: this.line,\n        lines: this.lines,\n        showPopover: this.showSuggestPopover,\n        diffFile: this.diffFile,\n      };\n    },\n    shouldDisableField() {\n      return this.isSubmitting && !this.isMeasuringCommentTemperature;\n    },\n    shouldMeasureNoteTemperature() {\n      return !isSlashCommand(this.updatedNoteBody) && this.glAbilities.measureCommentTemperature;\n    },\n  },\n  watch: {\n    noteBody() {\n      if (this.updatedNoteBody === this.noteBody) {\n        this.updatedNoteBody = this.noteBody;\n      } else {\n        this.conflictWhileEditing = true;\n      }\n    },\n  },\n  mounted() {\n    this.updatePlaceholder();\n  },\n  methods: {\n    ...mapActions(['toggleResolveNote']),\n    shouldToggleResolved(beforeSubmitDiscussionState) {\n      return (\n        this.showResolveDiscussionToggle && beforeSubmitDiscussionState !== this.newResolvedState()\n      );\n    },\n    newResolvedState() {\n      return (\n        (this.discussionResolved && !this.isUnresolving) ||\n        (!this.discussionResolved && this.isResolving)\n      );\n    },\n    editMyLastNote() {\n      if (this.updatedNoteBody === '') {\n        const lastNoteInDiscussion = this.getDiscussionLastNote(this.discussion);\n\n        if (lastNoteInDiscussion) {\n          eventHub.$emit('enterEditMode', {\n            noteId: lastNoteInDiscussion.id,\n          });\n        }\n      }\n    },\n    cancelHandler(shouldConfirm = false) {\n      // check if any dropdowns are active before sending the cancelation event\n      if (\n        !this.$refs.markdownEditor.$el\n          .querySelector('textarea')\n          ?.classList.contains('at-who-active')\n      ) {\n        this.$emit('cancelForm', shouldConfirm, this.noteBody !== this.updatedNoteBody);\n      }\n    },\n    updatePlaceholder() {\n      this.formFieldProps.placeholder = this.discussionNote?.internal\n        ? this.$options.i18n.bodyPlaceholderInternal\n        : this.$options.i18n.bodyPlaceholder;\n    },\n    onInput(value) {\n      this.updatedNoteBody = value;\n    },\n    append(value) {\n      this.$refs.markdownEditor.append(value);\n    },\n    handleKeySubmit(forceUpdate = false) {\n      if (this.showBatchCommentsActions && !forceUpdate) {\n        this.handleAddToReview();\n      } else {\n        this.isSubmittingWithKeydown = true;\n        this.handleUpdate();\n      }\n      if (!this.isMeasuringCommentTemperature) {\n        this.updatedNoteBody = '';\n      }\n    },\n    runCommentTemperatureMeasurement(onSaveHandler) {\n      this.isMeasuringCommentTemperature = true;\n      this.$refs.commentTemperature.measureCommentTemperature();\n      this.onSaveHandler = this[onSaveHandler].bind(this, { shouldMeasureTemperature: false });\n    },\n    handleUpdate({ shouldMeasureTemperature = true } = {}) {\n      const beforeSubmitDiscussionState = this.discussionResolved;\n      this.isSubmitting = true;\n      if (shouldMeasureTemperature && this.shouldMeasureNoteTemperature) {\n        this.runCommentTemperatureMeasurement('handleUpdate');\n        return;\n      }\n\n      this.isMeasuringCommentTemperature = false;\n\n      trackSavedUsingEditor(\n        this.$refs.markdownEditor.isContentEditorActive,\n        `${this.noteableType}_note`,\n      );\n\n      this.$emit(\n        'handleFormUpdate',\n        this.updatedNoteBody,\n        this.$refs.editNoteForm,\n        () => {\n          this.isSubmitting = false;\n\n          if (this.shouldToggleResolved(beforeSubmitDiscussionState)) {\n            this.resolveHandler(beforeSubmitDiscussionState);\n          }\n        },\n        this.discussionResolved ? !this.isUnresolving : this.isResolving,\n      );\n    },\n    handleAddToReview({ shouldMeasureTemperature = true } = {}) {\n      const clickType = this.hasDrafts ? 'noteFormAddToReview' : 'noteFormStartReview';\n      // check if draft should resolve thread\n      const shouldResolve =\n        (this.discussionResolved && !this.isUnresolving) ||\n        (!this.discussionResolved && this.isResolving);\n      this.isSubmitting = true;\n      if (shouldMeasureTemperature && this.shouldMeasureNoteTemperature) {\n        this.runCommentTemperatureMeasurement('handleAddToReview');\n        return;\n      }\n\n      this.isMeasuringCommentTemperature = false;\n\n      eventHub.$emit(clickType, { name: clickType });\n      this.$emit(\n        'handleFormUpdateAddToReview',\n        this.updatedNoteBody,\n        shouldResolve,\n        this.$refs.editNoteForm,\n        () => {\n          this.isSubmitting = false;\n        },\n      );\n    },\n    hasEmailParticipants() {\n      return this.getNoteableData.issue_email_participants?.length;\n    },\n  },\n};\n</script>\n\n<template>\n  <div ref=\"editNoteForm\" class=\"note-edit-form current-note-edit-form js-discussion-note-form\">\n    <div v-if=\"conflictWhileEditing\" class=\"js-conflict-edit-warning alert alert-danger\">\n      <gl-sprintf :message=\"changedCommentText.text\" :placeholders=\"changedCommentText.placeholder\">\n        <template #link=\"{ content }\">\n          <gl-link :href=\"noteHash\" target=\"_blank\">{{ content }}</gl-link>\n        </template>\n      </gl-sprintf>\n    </div>\n    <div class=\"flash-container\"></div>\n    <form :data-line-code=\"lineCode\" class=\"edit-note common-note-form js-quick-submit gfm-form\">\n      <comment-field-layout\n        :is-internal-note=\"discussionNote.internal\"\n        :note=\"updatedNoteBody\"\n        :noteable-data=\"getNoteableData\"\n      >\n        <markdown-editor\n          ref=\"markdownEditor\"\n          :value=\"updatedNoteBody\"\n          :render-markdown-path=\"markdownPreviewPath\"\n          :markdown-docs-path=\"markdownDocsPath\"\n          :code-suggestions-config=\"codeSuggestionsConfig\"\n          :add-spacing-classes=\"false\"\n          :help-page-path=\"helpPagePath\"\n          :note=\"discussionNote\"\n          :noteable-type=\"noteableType\"\n          :form-field-props=\"formFieldProps\"\n          :autosave-key=\"autosaveKey\"\n          :autocomplete-data-sources=\"autocompleteDataSources\"\n          :disabled=\"shouldDisableField\"\n          supports-quick-actions\n          :autofocus=\"autofocus\"\n          :restore-from-autosave=\"restoreFromAutosave\"\n          @keydown.shift.meta.enter=\"handleKeySubmit((forceUpdate = true))\"\n          @keydown.shift.ctrl.enter=\"handleKeySubmit((forceUpdate = true))\"\n          @keydown.meta.enter.exact=\"handleKeySubmit()\"\n          @keydown.ctrl.enter.exact=\"handleKeySubmit()\"\n          @keydown.exact.up=\"editMyLastNote()\"\n          @keydown.exact.esc=\"cancelHandler(true)\"\n          @input=\"onInput\"\n          @handleSuggestDismissed=\"() => $emit('handleSuggestDismissed')\"\n        />\n      </comment-field-layout>\n      <comment-temperature\n        v-if=\"glAbilities.measureCommentTemperature\"\n        ref=\"commentTemperature\"\n        v-model=\"updatedNoteBody\"\n        :item-id=\"getNoteableData.id\"\n        :item-type=\"getNoteableData.noteableType\"\n        :user-id=\"currentUserId\"\n        @save=\"onSaveHandler()\"\n      />\n      <div class=\"note-form-actions gl-font-size-0\">\n        <template v-if=\"showResolveDiscussionToggle\">\n          <label>\n            <template v-if=\"discussionResolved\">\n              <gl-form-checkbox v-model=\"isUnresolving\" class=\"js-unresolve-checkbox\">\n                {{ __('Unresolve thread') }}\n              </gl-form-checkbox>\n            </template>\n            <template v-else>\n              <gl-form-checkbox v-model=\"isResolving\" class=\"js-resolve-checkbox\">\n                {{ __('Resolve thread') }}\n              </gl-form-checkbox>\n            </template>\n          </label>\n        </template>\n\n        <template v-if=\"showBatchCommentsActions\">\n          <div class=\"-gl-mb-3 gl-flex gl-flex-wrap\">\n            <gl-button\n              :disabled=\"isDisabled\"\n              category=\"primary\"\n              variant=\"confirm\"\n              class=\"gl-mb-3 sm:gl-mr-3\"\n              data-testid=\"start-review-button\"\n              @click=\"handleAddToReview\"\n            >\n              <template v-if=\"hasDrafts\">{{ __('Add to review') }}</template>\n              <template v-else>{{ __('Start a review') }}</template>\n            </gl-button>\n            <gl-button\n              :disabled=\"isDisabled\"\n              category=\"secondary\"\n              variant=\"confirm\"\n              data-testid=\"comment-now-button\"\n              class=\"js-comment-button gl-mb-3 sm:gl-mr-3\"\n              @click=\"handleUpdate()\"\n            >\n              {{ __('Add comment now') }}\n            </gl-button>\n            <gl-button\n              class=\"note-edit-cancel js-close-discussion-note-form gl-mb-3\"\n              category=\"secondary\"\n              variant=\"default\"\n              data-testid=\"cancelBatchCommentsEnabled\"\n              @click=\"cancelHandler(true)\"\n            >\n              {{ __('Cancel') }}\n            </gl-button>\n          </div>\n        </template>\n        <template v-else>\n          <div class=\"gl-display-sm-flex gl-font-size-0 gl-flex-wrap\">\n            <gl-button\n              :disabled=\"isDisabled\"\n              category=\"primary\"\n              variant=\"confirm\"\n              data-testid=\"reply-comment-button\"\n              class=\"js-vue-issue-save js-comment-button gl-mb-3 sm:gl-mb-0 sm:gl-mr-3\"\n              @click=\"handleUpdate()\"\n            >\n              {{ saveButtonTitle }}\n            </gl-button>\n            <gl-button\n              class=\"note-edit-cancel js-close-discussion-note-form\"\n              category=\"secondary\"\n              variant=\"default\"\n              data-testid=\"cancel\"\n              @click=\"cancelHandler(true)\"\n            >\n              {{ __('Cancel') }}\n            </gl-button>\n          </div>\n        </template>\n      </div>\n    </form>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_form.vue?vue&type=template&id=30ac93d9\"\nimport script from \"./note_form.vue?vue&type=script&lang=js\"\nexport * from \"./note_form.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-dropdown',{ref:\"dropdown\",attrs:{\"block\":\"\",\"header-text\":_vm.i18n.assignAttribute,\"lazy\":\"\",\"text\":_vm.dropdownText,\"toggle-class\":\"gl-m-0\"},on:{\"show\":_vm.handleShow,\"shown\":_vm.setFocus},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_vm._t(\"footer\")]},proxy:true}],null,true)},[_c('gl-search-box-by-type',{ref:\"search\",attrs:{\"placeholder\":_vm.__('Search')},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}}),_vm._v(\" \"),_c('gl-dropdown-item',{attrs:{\"data-testid\":`no-${_vm.formatIssuableAttribute.kebab}-item`,\"is-check-item\":\"\",\"is-checked\":_vm.isAttributeChecked(_vm.$options.noAttributeId)},on:{\"click\":function($event){return _vm.$emit('change', { id: _vm.$options.noAttributeId })}}},[_vm._v(\"\\n    \"+_vm._s(_vm.i18n.noAttribute)+\"\\n  \")]),_vm._v(\" \"),_c('gl-dropdown-divider'),_vm._v(\" \"),(_vm.$apollo.queries.attributesList.loading)?_c('gl-loading-icon',{staticClass:\"gl-py-4\",attrs:{\"size\":\"sm\",\"data-testid\":\"loading-icon-dropdown\"}}):[(_vm.emptyPropsList)?_c('gl-dropdown-text',[_vm._v(\"\\n      \"+_vm._s(_vm.i18n.noAttributesFound)+\"\\n    \")]):_vm._t(\"list\",function(){return _vm._l((_vm.attributesList),function(attrItem){return _c('gl-dropdown-item',{key:attrItem.id,attrs:{\"is-check-item\":\"\",\"is-checked\":_vm.isAttributeChecked(attrItem.id),\"data-testid\":`${_vm.formatIssuableAttribute.kebab}-items`},on:{\"click\":function($event){return _vm.updateAttribute(attrItem)}}},[_vm._v(\"\\n        \"+_vm._s(attrItem.title)+\"\\n        \"),(_vm.isAttributeOverdue(attrItem))?[_vm._v(_vm._s(_vm.$options.i18n.expired))]:_vm._e()],2)})},{\"attributesList\":_vm.attributesList,\"isAttributeChecked\":_vm.isAttributeChecked,\"updateAttribute\":_vm.updateAttribute})]],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!./sidebar_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!./sidebar_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlDropdown,\n  GlDropdownDivider,\n  GlDropdownItem,\n  GlDropdownText,\n  GlLoadingIcon,\n  GlSearchBoxByType,\n} from '@gitlab/ui';\nimport { kebabCase, snakeCase } from 'lodash';\nimport {\n  TYPE_EPIC,\n  TYPE_ISSUE,\n  TYPE_MERGE_REQUEST,\n  WORKSPACE_GROUP,\n  WORKSPACE_PROJECT,\n} from '~/issues/constants';\nimport { __ } from '~/locale';\nimport {\n  defaultEpicSort,\n  dropdowni18nText,\n  epicIidPattern,\n  IssuableAttributeState,\n  IssuableAttributeType,\n  IssuableAttributeTypeKeyMap,\n  LocalizedIssuableAttributeType,\n  noAttributeId,\n} from 'ee_else_ce/sidebar/constants';\nimport { issuableAttributesQueries } from 'ee_else_ce/sidebar/queries/constants';\nimport { createAlert } from '~/alert';\nimport { PathIdSeparator } from '~/related_issues/constants';\nimport { WORK_ITEM_TYPE_ENUM_EPIC } from '~/work_items/constants';\n\nexport default {\n  noAttributeId,\n  i18n: {\n    expired: __('(expired)'),\n  },\n  components: {\n    GlDropdown,\n    GlDropdownItem,\n    GlDropdownText,\n    GlDropdownDivider,\n    GlSearchBoxByType,\n    GlLoadingIcon,\n  },\n  inject: {\n    issuableAttributesQueries: {\n      default: issuableAttributesQueries,\n    },\n    issuableAttributesState: {\n      default: IssuableAttributeState,\n    },\n    widgetTitleText: {\n      default: {\n        [IssuableAttributeType.Milestone]: __('Milestone'),\n        expired: __('(expired)'),\n        none: __('None'),\n      },\n    },\n  },\n  props: {\n    attrWorkspacePath: {\n      required: true,\n      type: String,\n    },\n    currentAttribute: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    issuableAttribute: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n      validator(value) {\n        return [TYPE_ISSUE, TYPE_MERGE_REQUEST].includes(value);\n      },\n    },\n    workspaceType: {\n      type: String,\n      required: false,\n      default: WORKSPACE_PROJECT,\n      validator(value) {\n        return [WORKSPACE_GROUP, WORKSPACE_PROJECT].includes(value);\n      },\n    },\n    showWorkItemEpics: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      attributesList: [],\n      searchTerm: '',\n      skipQuery: true,\n    };\n  },\n  apollo: {\n    attributesList: {\n      query() {\n        if (this.isEpic && this.showWorkItemEpics) {\n          return this.issuableAttributesQueries[IssuableAttributeType.Parent].list[\n            this.issuableType\n          ].query;\n        }\n\n        const { list } = this.issuableAttributeQuery;\n        const { query } = list[this.issuableType];\n        return query[this.workspaceType] || query;\n      },\n      variables() {\n        if (!this.isEpic) {\n          return {\n            fullPath: this.attrWorkspacePath,\n            title: this.searchTerm,\n            state: this.issuableAttributesState[this.issuableAttribute],\n          };\n        }\n\n        const variables = {\n          fullPath: this.attrWorkspacePath,\n          state: this.issuableAttributesState[this.issuableAttribute],\n          sort: defaultEpicSort,\n        };\n\n        if (this.showWorkItemEpics) {\n          variables.types = [WORK_ITEM_TYPE_ENUM_EPIC];\n        }\n\n        if (epicIidPattern.test(this.searchTerm)) {\n          const matches = this.searchTerm.match(epicIidPattern);\n          variables.iidStartsWith = matches.groups.iid;\n        } else if (this.searchTerm !== '') {\n          variables.in = 'TITLE';\n          variables.title = this.searchTerm;\n        }\n\n        return variables;\n      },\n      update: (data) => data?.workspace?.attributes?.nodes ?? [],\n      error(error) {\n        createAlert({ message: this.i18n.listFetchError, captureError: true, error });\n      },\n      skip() {\n        if (\n          this.isEpic &&\n          this.searchTerm.startsWith(PathIdSeparator.Epic) &&\n          this.searchTerm.length < 2\n        ) {\n          return true;\n        }\n        return this.skipQuery;\n      },\n      debounce: 250,\n    },\n  },\n  computed: {\n    attributeTypeTitle() {\n      return this.widgetTitleText[this.issuableAttribute];\n    },\n    dropdownText() {\n      return this.currentAttribute ? this.currentAttribute?.title : this.attributeTypeTitle;\n    },\n    emptyPropsList() {\n      return this.attributesList.length === 0;\n    },\n    i18n() {\n      const localizedAttribute =\n        LocalizedIssuableAttributeType[IssuableAttributeTypeKeyMap[this.issuableAttribute]];\n      return dropdowni18nText(localizedAttribute, this.issuableType);\n    },\n    isEpic() {\n      // MV to EE https://gitlab.com/gitlab-org/gitlab/-/issues/345311\n      return this.issuableAttribute === TYPE_EPIC;\n    },\n    issuableAttributeQuery() {\n      return this.issuableAttributesQueries[this.issuableAttribute];\n    },\n    formatIssuableAttribute() {\n      return {\n        kebab: kebabCase(this.issuableAttribute),\n        snake: snakeCase(this.issuableAttribute),\n      };\n    },\n  },\n  methods: {\n    isAttributeChecked(attributeId) {\n      return (\n        attributeId === this.currentAttribute?.id || (!this.currentAttribute?.id && !attributeId)\n      );\n    },\n    isAttributeOverdue(attribute) {\n      return this.issuableAttribute === IssuableAttributeType.Milestone\n        ? attribute?.expired\n        : false;\n    },\n    handleShow() {\n      this.skipQuery = false;\n    },\n    setFocus() {\n      this.$refs?.search?.focusInput();\n    },\n    show() {\n      this.$refs.dropdown.show();\n    },\n    updateAttribute(attribute) {\n      this.$emit('change', attribute);\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-dropdown\n    ref=\"dropdown\"\n    block\n    :header-text=\"i18n.assignAttribute\"\n    lazy\n    :text=\"dropdownText\"\n    toggle-class=\"gl-m-0\"\n    @show=\"handleShow\"\n    @shown=\"setFocus\"\n  >\n    <gl-search-box-by-type ref=\"search\" v-model=\"searchTerm\" :placeholder=\"__('Search')\" />\n    <gl-dropdown-item\n      :data-testid=\"`no-${formatIssuableAttribute.kebab}-item`\"\n      is-check-item\n      :is-checked=\"isAttributeChecked($options.noAttributeId)\"\n      @click=\"$emit('change', { id: $options.noAttributeId })\"\n    >\n      {{ i18n.noAttribute }}\n    </gl-dropdown-item>\n    <gl-dropdown-divider />\n    <gl-loading-icon\n      v-if=\"$apollo.queries.attributesList.loading\"\n      size=\"sm\"\n      class=\"gl-py-4\"\n      data-testid=\"loading-icon-dropdown\"\n    />\n    <template v-else>\n      <gl-dropdown-text v-if=\"emptyPropsList\">\n        {{ i18n.noAttributesFound }}\n      </gl-dropdown-text>\n      <slot\n        v-else\n        name=\"list\"\n        :attributes-list=\"attributesList\"\n        :is-attribute-checked=\"isAttributeChecked\"\n        :update-attribute=\"updateAttribute\"\n      >\n        <gl-dropdown-item\n          v-for=\"attrItem in attributesList\"\n          :key=\"attrItem.id\"\n          is-check-item\n          :is-checked=\"isAttributeChecked(attrItem.id)\"\n          :data-testid=\"`${formatIssuableAttribute.kebab}-items`\"\n          @click=\"updateAttribute(attrItem)\"\n        >\n          {{ attrItem.title }}\n          <template v-if=\"isAttributeOverdue(attrItem)\">{{ $options.i18n.expired }}</template>\n        </gl-dropdown-item>\n      </slot>\n    </template>\n    <template #footer>\n      <slot name=\"footer\"></slot>\n    </template>\n  </gl-dropdown>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_dropdown.vue?vue&type=template&id=c8002916\"\nimport script from \"./sidebar_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_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 { sprintf, s__ } from '~/locale';\n\n/**\n * Combines each given item into a noun series sentence fragment. It does this\n * in a way that supports i18n by giving context and punctuation to the locale\n * functions.\n *\n * **Examples:**\n *\n * - `[\"A\", \"B\"] => \"A and B\"`\n * - `[\"A\", \"B\", \"C\"] => \"A, B, and C\"`\n *\n * **Why only nouns?**\n *\n * Some languages need a bit more context to translate other series.\n *\n * @param {String[]} items\n */\nexport const toNounSeriesText = (items, { onlyCommas = false } = {}) => {\n  if (items.length === 0) {\n    return '';\n  }\n  if (items.length === 1) {\n    return sprintf(s__(`nounSeries|%{item}`), { item: items[0] }, false);\n  }\n  if (items.length === 2 && !onlyCommas) {\n    return sprintf(\n      s__('nounSeries|%{firstItem} and %{lastItem}'),\n      {\n        firstItem: items[0],\n        lastItem: items[1],\n      },\n      false,\n    );\n  }\n\n  return items.reduce((item, nextItem, idx) =>\n    idx === items.length - 1 && !onlyCommas\n      ? sprintf(s__('nounSeries|%{item}, and %{lastItem}'), { item, lastItem: nextItem }, false)\n      : sprintf(s__('nounSeries|%{item}, %{nextItem}'), { item, nextItem }, false),\n  );\n};\n\nexport default {\n  toNounSeriesText,\n};\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mr_widget_how_to_merge_modal.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!./mr_widget_how_to_merge_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal, GlLink, GlSprintf } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { escapeShellString } from '~/lib/utils/text_utility';\nimport { __ } from '~/locale';\n\nexport default {\n  i18n: {\n    steps: {\n      step1: {\n        label: __('Step 1.'),\n        help: __(\"Fetch and check out this merge request's feature branch:\"),\n      },\n      step2: {\n        label: __('Step 2.'),\n        help: __('Review the changes locally.'),\n      },\n      step3: {\n        label: __('Step 3.'),\n        help: __('Resolve any conflicts. %{linkStart}How do I fix them?%{linkEnd}'),\n      },\n      step4: {\n        label: __('Step 4.'),\n        help: __('Push the source branch up to GitLab.'),\n      },\n    },\n    tip: __(\n      '%{strongStart}Tip:%{strongEnd} You can also %{linkStart}check out with merge request ID%{linkEnd}.',\n    ),\n    title: __('Check out, review, and resolve locally'),\n  },\n  components: {\n    GlModal,\n    GlLink,\n    GlSprintf,\n  },\n  props: {\n    canMerge: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isFork: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    sourceBranch: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    sourceProjectPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    targetBranch: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    sourceProjectDefaultUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    reviewingDocsPath: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      resolveConflictsFromCli: helpPagePath('topics/git/git_rebase', {\n        anchor: 'resolve-conflicts-from-the-command-line',\n      }),\n    };\n  },\n  computed: {\n    mergeInfo1() {\n      const escapedOriginBranch = escapeShellString(`origin/${this.sourceBranch}`);\n\n      return this.isFork\n        ? `git fetch \"${this.sourceProjectDefaultUrl}\" ${this.escapedSourceBranch}\\ngit checkout -b ${this.escapedForkBranch} FETCH_HEAD` // eslint-disable-line @gitlab/require-i18n-strings\n        : `git fetch origin\\ngit checkout -b ${this.escapedSourceBranch} ${escapedOriginBranch}`; // eslint-disable-line @gitlab/require-i18n-strings\n    },\n    mergeInfo2() {\n      return this.isFork\n        ? `git push \"${this.sourceProjectDefaultUrl}\" ${this.escapedForkPushBranch}` // eslint-disable-line @gitlab/require-i18n-strings\n        : `git push origin ${this.escapedSourceBranch}`; // eslint-disable-line @gitlab/require-i18n-strings\n    },\n    escapedForkBranch() {\n      return escapeShellString(`${this.sourceProjectPath}-${this.sourceBranch}`);\n    },\n    escapedForkPushBranch() {\n      return escapeShellString(\n        `${this.sourceProjectPath}-${this.sourceBranch}:${this.sourceBranch}`,\n      );\n    },\n    escapedSourceBranch() {\n      return escapeShellString(this.sourceBranch);\n    },\n  },\n  mounted() {\n    document.addEventListener('click', (e) => {\n      if (e.target.closest('.js-check-out-modal-trigger')) {\n        this.$refs.modal.show();\n      }\n    });\n  },\n  userColorScheme: window.gon.user_color_scheme,\n};\n</script>\n\n<template>\n  <gl-modal\n    ref=\"modal\"\n    modal-id=\"modal-merge-info\"\n    :title=\"$options.i18n.title\"\n    :no-enforce-focus=\"true\"\n    no-focus-on-show\n    no-fade\n    hide-footer\n  >\n    <p>\n      <strong>\n        {{ $options.i18n.steps.step1.label }}\n      </strong>\n      {{ $options.i18n.steps.step1.help }}\n    </p>\n    <pre\n      :class=\"$options.userColorScheme\"\n      class=\"code highlight js-syntax-highlight gl-rounded-base\"\n      data-testid=\"how-to-merge-instructions\"\n      >{{ mergeInfo1 }}</pre\n    >\n    <p\n      v-if=\"reviewingDocsPath\"\n      class=\"-gl-mt-4 gl-rounded-b-base gl-border-1 gl-border-solid gl-border-default gl-px-4 gl-py-3\"\n    >\n      <gl-sprintf data-testid=\"docs-tip\" :message=\"$options.i18n.tip\">\n        <template #strong=\"{ content }\">\n          <strong>{{ content }}</strong>\n        </template>\n        <template #link=\"{ content }\">\n          <gl-link class=\"gl-inline-block\" :href=\"reviewingDocsPath\" target=\"_blank\">{{\n            content\n          }}</gl-link>\n        </template>\n      </gl-sprintf>\n    </p>\n    <p>\n      <strong>\n        {{ $options.i18n.steps.step2.label }}\n      </strong>\n      {{ $options.i18n.steps.step2.help }}\n    </p>\n    <p>\n      <strong>\n        {{ $options.i18n.steps.step3.label }}\n      </strong>\n      <gl-sprintf :message=\"$options.i18n.steps.step3.help\">\n        <template #link=\"{ content }\">\n          <gl-link class=\"gl-inline-block\" :href=\"resolveConflictsFromCli\">\n            {{ content }}\n          </gl-link>\n        </template>\n      </gl-sprintf>\n    </p>\n    <p>\n      <strong>\n        {{ $options.i18n.steps.step4.label }}\n      </strong>\n      {{ $options.i18n.steps.step4.help }}\n    </p>\n    <pre\n      :class=\"$options.userColorScheme\"\n      class=\"code highlight js-syntax-highlight language-shell gl-rounded-base\"\n      data-testid=\"how-to-merge-instructions\"\n      >{{ mergeInfo2 }}</pre\n    >\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_how_to_merge_modal.vue?vue&type=template&id=337fa76c\"\nimport script from \"./mr_widget_how_to_merge_modal.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_how_to_merge_modal.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-modal',{ref:\"modal\",attrs:{\"modal-id\":\"modal-merge-info\",\"title\":_vm.$options.i18n.title,\"no-enforce-focus\":true,\"no-focus-on-show\":\"\",\"no-fade\":\"\",\"hide-footer\":\"\"}},[_c('p',[_c('strong',[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.steps.step1.label)+\"\\n    \")]),_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.steps.step1.help)+\"\\n  \")]),_vm._v(\" \"),_c('pre',{staticClass:\"code highlight js-syntax-highlight gl-rounded-base\",class:_vm.$options.userColorScheme,attrs:{\"data-testid\":\"how-to-merge-instructions\"}},[_vm._v(_vm._s(_vm.mergeInfo1))]),_vm._v(\" \"),(_vm.reviewingDocsPath)?_c('p',{staticClass:\"-gl-mt-4 gl-rounded-b-base gl-border-1 gl-border-solid gl-border-default gl-px-4 gl-py-3\"},[_c('gl-sprintf',{attrs:{\"data-testid\":\"docs-tip\",\"message\":_vm.$options.i18n.tip},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('strong',[_vm._v(_vm._s(content))])]}},{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-inline-block\",attrs:{\"href\":_vm.reviewingDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}],null,false,1644116207)})],1):_vm._e(),_vm._v(\" \"),_c('p',[_c('strong',[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.steps.step2.label)+\"\\n    \")]),_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.steps.step2.help)+\"\\n  \")]),_vm._v(\" \"),_c('p',[_c('strong',[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.steps.step3.label)+\"\\n    \")]),_vm._v(\" \"),_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.steps.step3.help},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-inline-block\",attrs:{\"href\":_vm.resolveConflictsFromCli}},[_vm._v(\"\\n          \"+_vm._s(content)+\"\\n        \")])]}}])})],1),_vm._v(\" \"),_c('p',[_c('strong',[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.steps.step4.label)+\"\\n    \")]),_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.steps.step4.help)+\"\\n  \")]),_vm._v(\" \"),_c('pre',{staticClass:\"code highlight js-syntax-highlight language-shell gl-rounded-base\",class:_vm.$options.userColorScheme,attrs:{\"data-testid\":\"how-to-merge-instructions\"}},[_vm._v(_vm._s(_vm.mergeInfo2))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport MrWidgetHowToMergeModal from '~/vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue';\n\nexport default () => {\n  const modalEl = document.getElementById('js-check-out-modal');\n\n  if (!modalEl) return false;\n\n  const {\n    canMerge,\n    isFork,\n    sourceBranch,\n    sourceProjectPath,\n    targetBranch,\n    sourceProjectDefaultUrl,\n    reviewingDocsPath,\n  } = modalEl.dataset;\n\n  return new Vue({\n    el: modalEl,\n    render(h) {\n      return h(MrWidgetHowToMergeModal, {\n        props: {\n          canMerge: parseBoolean(canMerge),\n          isFork: parseBoolean(isFork),\n          sourceBranch,\n          sourceProjectPath,\n          targetBranch,\n          sourceProjectDefaultUrl,\n          reviewingDocsPath,\n        },\n      });\n    },\n  });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isLoading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"label\":_vm.__('Loading pipeline status')}}):(_vm.hasCiStatus)?_c('ci-icon',{attrs:{\"status\":_vm.ciStatus,\"title\":_vm.statusTitle,\"aria-label\":_vm.statusTitle}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '~/lib/utils/axios_utils';\n\nexport default class CommitPipelineService {\n  constructor(endpoint) {\n    this.endpoint = endpoint;\n  }\n\n  fetchData() {\n    return axios.get(this.endpoint);\n  }\n}\n","<script>\nimport { GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport Visibility from 'visibilityjs';\nimport { isEmpty } from 'lodash';\nimport { createAlert } from '~/alert';\nimport Poll from '~/lib/utils/poll';\nimport { __, s__, sprintf } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport CommitPipelineService from '../services/commit_pipeline_service';\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    CiIcon,\n    GlLoadingIcon,\n  },\n  props: {\n    endpoint: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      ciStatus: {},\n      isLoading: true,\n    };\n  },\n  computed: {\n    statusTitle() {\n      return sprintf(s__('PipelineStatusTooltip|Pipeline: %{ciStatus}'), {\n        ciStatus: this.ciStatus.text,\n      });\n    },\n    hasCiStatus() {\n      return !isEmpty(this.ciStatus) && !this.isLoading;\n    },\n  },\n  mounted() {\n    this.service = new CommitPipelineService(this.endpoint);\n    this.initPolling();\n  },\n  beforeDestroy() {\n    this.poll.stop();\n  },\n  methods: {\n    successCallback(res) {\n      const { pipelines } = res.data;\n\n      if (pipelines.length > 0) {\n        // The pipeline entity always keeps the latest pipeline info on the `details.status`\n        this.ciStatus = pipelines[0].details.status;\n      } else {\n        this.ciStatus = {};\n      }\n\n      this.isLoading = false;\n    },\n    errorCallback() {\n      this.ciStatus = {\n        text: __('not found'),\n        icon: 'status_notfound',\n        group: 'notfound',\n      };\n      this.isLoading = false;\n      createAlert({\n        message: __('Something went wrong on our end'),\n      });\n    },\n    initPolling() {\n      this.poll = new Poll({\n        resource: this.service,\n        method: 'fetchData',\n        successCallback: (response) => this.successCallback(response),\n        errorCallback: this.errorCallback,\n      });\n\n      if (!Visibility.hidden()) {\n        this.isLoading = true;\n        this.poll.makeRequest();\n      } else {\n        this.fetchPipelineCommitData();\n      }\n\n      Visibility.change(() => {\n        if (!Visibility.hidden()) {\n          this.poll.restart();\n        } else {\n          this.poll.stop();\n        }\n      });\n    },\n    fetchPipelineCommitData() {\n      this.service.fetchData().then(this.successCallback).catch(this.errorCallback);\n    },\n  },\n};\n</script>\n<template>\n  <gl-loading-icon v-if=\"isLoading\" size=\"sm\" :label=\"__('Loading pipeline status')\" />\n  <ci-icon\n    v-else-if=\"hasCiStatus\"\n    :status=\"ciStatus\"\n    :title=\"statusTitle\"\n    :aria-label=\"statusTitle\"\n  />\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!./commit_pipeline_status.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!./commit_pipeline_status.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./commit_pipeline_status.vue?vue&type=template&id=7fa06148\"\nimport script from \"./commit_pipeline_status.vue?vue&type=script&lang=js\"\nexport * from \"./commit_pipeline_status.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('noteable-note',{staticClass:\"draft-note !gl-mb-0\",attrs:{\"note\":_vm.draft,\"line\":_vm.line,\"discussion-root\":true,\"autosave-key\":_vm.autosaveDraftKey,\"restore-from-autosave\":_vm.restoreFromAutosave},on:{\"handleEdit\":_vm.handleEditing,\"cancelForm\":_vm.handleNotEditing,\"updateSuccess\":_vm.handleNotEditing,\"handleDeleteNote\":_vm.deleteDraft,\"handleUpdateNote\":_vm.update,\"toggleResolveStatus\":function($event){return _vm.toggleResolveDiscussion(_vm.draft.id)}},nativeOn:{\"mouseenter\":function($event){return _vm.handleMouseEnter(_vm.draft)},\"mouseleave\":function($event){return _vm.handleMouseLeave(_vm.draft)}},scopedSlots:_vm._u([{key:\"note-header-info\",fn:function(){return [_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-2\",attrs:{\"variant\":\"warning\",\"title\":_vm.__('Pending comments are hidden until you submit your review.')}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Pending'))+\"\\n    \")])]},proxy:true},(!_vm.draft.isEditing)?{key:\"after-note-body\",fn:function(){return [(_vm.draftCommands)?_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html:[$options.safeHtmlConfig]\",value:(_vm.draftCommands),expression:\"draftCommands\",arg:_vm.$options.safeHtmlConfig}],staticClass:\"draft-note-referenced-commands gl-mb-2 gl-ml-3 gl-text-sm gl-text-subtle\"}):_vm._e()]},proxy:true}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draft_note.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!./draft_note.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlTooltipDirective } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapMutations, mapState } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport NoteableNote from '~/notes/components/noteable_note.vue';\nimport * as types from '~/batch_comments/stores/modules/batch_comments/mutation_types';\nimport { clearDraft } from '~/lib/utils/autosave';\n\nexport default {\n  components: {\n    NoteableNote,\n    GlBadge,\n  },\n  directives: {\n    SafeHtml,\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    draft: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      // diff files in virtual scroller can be culled when scrolling the page (their instances get destroyed)\n      // when a file reappears on the screen we need to restore draft's form: opened state and edited note text\n      // we can detect if a file was culled with an opened form by saving the form opened state on the draft object\n      // this can be used to force markdown editor to use autosaved content instead of an unedited draft note text\n      // https://gitlab.com/gitlab-org/gitlab/-/issues/436954\n      restoreFromAutosave: Boolean(this.draft.isEditing),\n    };\n  },\n  computed: {\n    ...mapState('batchComments', ['isPublishing']),\n    ...mapGetters('batchComments', ['isPublishingDraft']),\n    draftCommands() {\n      return this.draft.references.commands;\n    },\n    autosaveDraftKey() {\n      if (!this.autosaveKey) return null;\n      return `${this.autosaveKey}/draft-note-${this.draft.id}`;\n    },\n  },\n  mounted() {\n    if (window.location.hash && window.location.hash === `#note_${this.draft.id}`) {\n      this.scrollToDraft(this.draft);\n    }\n  },\n  methods: {\n    ...mapActions('batchComments', [\n      'deleteDraft',\n      'updateDraft',\n      'publishSingleDraft',\n      'scrollToDraft',\n      'toggleResolveDiscussion',\n    ]),\n    ...mapMutations('batchComments', {\n      setDraftEditing: types.SET_DRAFT_EDITING,\n    }),\n    ...mapActions(['setSelectedCommentPositionHover']),\n    update(data) {\n      this.updateDraft(data);\n    },\n    publishNow() {\n      this.publishSingleDraft(this.draft.id);\n    },\n    handleEditing() {\n      this.setDraftEditing({ draftId: this.draft.id, isEditing: true });\n    },\n    handleNotEditing() {\n      this.restoreFromAutosave = false;\n      this.clearDraft();\n      this.setDraftEditing({ draftId: this.draft.id, isEditing: false });\n    },\n    handleMouseEnter(draft) {\n      if (draft.position) {\n        this.setSelectedCommentPositionHover(draft.position.line_range);\n      }\n    },\n    handleMouseLeave(draft) {\n      // Even though position isn't used here we still don't want to unnecessarily call a mutation\n      // The lack of position tells us that highlighting is irrelevant in this context\n      if (draft.position) {\n        this.setSelectedCommentPositionHover();\n      }\n    },\n    clearDraft() {\n      if (this.autosaveDraftKey) clearDraft(this.autosaveDraftKey);\n    },\n  },\n  safeHtmlConfig: {\n    ADD_TAGS: ['use', 'gl-emoji', 'copy-code'],\n  },\n};\n</script>\n<template>\n  <noteable-note\n    :note=\"draft\"\n    :line=\"line\"\n    :discussion-root=\"true\"\n    class=\"draft-note !gl-mb-0\"\n    :autosave-key=\"autosaveDraftKey\"\n    :restore-from-autosave=\"restoreFromAutosave\"\n    @handleEdit=\"handleEditing\"\n    @cancelForm=\"handleNotEditing\"\n    @updateSuccess=\"handleNotEditing\"\n    @handleDeleteNote=\"deleteDraft\"\n    @handleUpdateNote=\"update\"\n    @toggleResolveStatus=\"toggleResolveDiscussion(draft.id)\"\n    @mouseenter.native=\"handleMouseEnter(draft)\"\n    @mouseleave.native=\"handleMouseLeave(draft)\"\n  >\n    <template #note-header-info>\n      <gl-badge\n        v-gl-tooltip\n        variant=\"warning\"\n        class=\"gl-mr-2\"\n        :title=\"__('Pending comments are hidden until you submit your review.')\"\n      >\n        {{ __('Pending') }}\n      </gl-badge>\n    </template>\n    <template v-if=\"!draft.isEditing\" #after-note-body>\n      <div\n        v-if=\"draftCommands\"\n        v-safe-html:[$options.safeHtmlConfig]=\"draftCommands\"\n        class=\"draft-note-referenced-commands gl-mb-2 gl-ml-3 gl-text-sm gl-text-subtle\"\n      ></div>\n    </template>\n  </noteable-note>\n</template>\n","import { render, staticRenderFns } from \"./draft_note.vue?vue&type=template&id=e9295676\"\nimport script from \"./draft_note.vue?vue&type=script&lang=js\"\nexport * from \"./draft_note.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 baseForOwn = require('./_baseForOwn');\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n  baseForOwn(object, function(value, key, object) {\n    setter(accumulator, iteratee(value), key, object);\n  });\n  return accumulator;\n}\n\nmodule.exports = baseInverter;\n","exports = module.exports = require(\"../../../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.vue-recycle-scroller {\\n  position: relative;\\n}\\n.vue-recycle-scroller.direction-vertical:not(.page-mode) {\\n  overflow-y: auto;\\n}\\n.vue-recycle-scroller.direction-horizontal:not(.page-mode) {\\n  overflow-x: auto;\\n}\\n.vue-recycle-scroller.direction-horizontal {\\n  display: flex;\\n}\\n.vue-recycle-scroller__slot {\\n  flex: auto 0 0;\\n}\\n.vue-recycle-scroller__item-wrapper {\\n  flex: 1;\\n  box-sizing: border-box;\\n  overflow: hidden;\\n  position: relative;\\n}\\n.vue-recycle-scroller.ready .vue-recycle-scroller__item-view {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n}\\n.will-change-transform {\\n  will-change: transform;\\n}\\n.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper {\\n  width: 100%;\\n}\\n.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper {\\n  height: 100%;\\n}\\n.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view {\\n  width: 100%;\\n}\\n.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view {\\n  height: 100%;\\n}\\n\", \"\"]);\n\n","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"revertFindingToDetected\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFindingRevertToDetected\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityFinding\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"id\"},\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stateTransitions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"toState\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":514}};\n    doc.loc.source = {\"body\":\"mutation revertFindingToDetected($uuid: String!) {\\n  securityFindingRevertToDetected(input: { uuid: $uuid }) {\\n    errors\\n    securityFinding {\\n      id: uuid\\n      state\\n      dismissalReason\\n      vulnerability {\\n        id\\n        stateTransitions(last: 1) {\\n          nodes {\\n            id\\n            author {\\n              id\\n              name\\n              username\\n              webUrl\\n            }\\n            comment\\n            createdAt\\n            toState\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"revertFindingToDetected\"] = oneQuery(doc, \"revertFindingToDetected\");\n        \n","export default () => ({\n  inject: {\n    glAbilities: {\n      from: 'glAbilities',\n      default: () => ({}),\n    },\n  },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"incident-severity gl-justify-content-between gl-inline-flex gl-max-w-full gl-items-center\"},[_c('gl-icon',{class:[`icon-${_vm.severity.icon}`, { 'gl-mr-3 gl-shrink-0': !_vm.iconOnly }],attrs:{\"size\":_vm.iconSize,\"name\":`severity-${_vm.severity.icon}`}}),_vm._v(\" \"),(!_vm.iconOnly)?_c('tooltip-on-truncate',{staticClass:\"gl-truncate\",attrs:{\"title\":_vm.severity.label}},[_vm._v(\"\\n    \"+_vm._s(_vm.severity.label)+\"\\n  \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./severity.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!./severity.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { GlIcon } from '@gitlab/ui';\nimport TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue';\n\nexport default {\n  components: {\n    GlIcon,\n    TooltipOnTruncate,\n  },\n  props: {\n    severity: {\n      type: Object,\n      required: true,\n      validator(severity) {\n        const { value, label, icon } = severity;\n        return value && label && icon;\n      },\n    },\n    iconSize: {\n      type: Number,\n      required: false,\n      default: 12,\n    },\n    iconOnly: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"incident-severity gl-justify-content-between gl-inline-flex gl-max-w-full gl-items-center\"\n  >\n    <gl-icon\n      :size=\"iconSize\"\n      :name=\"`severity-${severity.icon}`\"\n      :class=\"[`icon-${severity.icon}`, { 'gl-mr-3 gl-shrink-0': !iconOnly }]\"\n    />\n    <tooltip-on-truncate v-if=\"!iconOnly\" :title=\"severity.label\" class=\"gl-truncate\">\n      {{ severity.label }}\n    </tooltip-on-truncate>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./severity.vue?vue&type=template&id=506e5b38\"\nimport script from \"./severity.vue?vue&type=script&lang=js\"\nexport * from \"./severity.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","export const HTTP_STATUS_ABORTED = 0;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_CREATED = 201;\nexport const HTTP_STATUS_ACCEPTED = 202;\nexport const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203;\nexport const HTTP_STATUS_NO_CONTENT = 204;\nexport const HTTP_STATUS_RESET_CONTENT = 205;\nexport const HTTP_STATUS_PARTIAL_CONTENT = 206;\nexport const HTTP_STATUS_MULTI_STATUS = 207;\nexport const HTTP_STATUS_ALREADY_REPORTED = 208;\nexport const HTTP_STATUS_IM_USED = 226;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_UNAUTHORIZED = 401;\nexport const HTTP_STATUS_FORBIDDEN = 403;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HTTP_STATUS_METHOD_NOT_ALLOWED = 405;\nexport const HTTP_STATUS_CONFLICT = 409;\nexport const HTTP_STATUS_GONE = 410;\nexport const HTTP_STATUS_PAYLOAD_TOO_LARGE = 413;\nexport const HTTP_STATUS_IM_A_TEAPOT = 418;\nexport const HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;\nexport const HTTP_STATUS_TOO_MANY_REQUESTS = 429;\nexport const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;\nexport const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;\n\nexport const successCodes = [\n  HTTP_STATUS_OK,\n  HTTP_STATUS_CREATED,\n  HTTP_STATUS_ACCEPTED,\n  HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION,\n  HTTP_STATUS_NO_CONTENT,\n  HTTP_STATUS_RESET_CONTENT,\n  HTTP_STATUS_PARTIAL_CONTENT,\n  HTTP_STATUS_MULTI_STATUS,\n  HTTP_STATUS_ALREADY_REPORTED,\n  HTTP_STATUS_IM_USED,\n];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-editable-item',{ref:\"editable\",staticClass:\"block health-status\",attrs:{\"can-edit\":_vm.canEdit,\"loading\":_vm.isLoading,\"title\":_vm.$options.HEALTH_STATUS_I18N_HEALTH_STATUS,\"tracking\":_vm.$options.healthStatusTracking},on:{\"close\":_vm.updateHealthStatus,\"open\":_vm.showDropdown},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport.title\",value:(_vm.healthStatusTooltip),expression:\"healthStatusTooltip\",modifiers:{\"left\":true,\"viewport\":true,\"title\":true}}],staticClass:\"sidebar-collapsed-icon\",on:{\"click\":_vm.expandSidebar}},[_c('gl-icon',{attrs:{\"name\":\"status-health\"}}),_vm._v(\" \"),(_vm.isLoading)?_c('gl-loading-icon'):_c('p',{staticClass:\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(\"\\n        \"+_vm._s(_vm.healthStatusText)+\"\\n      \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed\"},[(_vm.healthStatus)?_c('issue-health-status',{staticClass:\"gl-mt-2\",attrs:{\"health-status\":_vm.healthStatus}}):_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.$options.HEALTH_STATUS_I18N_NONE))])],1)]},proxy:true},{key:\"default\",fn:function(){return [_c('health-status-dropdown',{ref:\"dropdown\",attrs:{\"health-status\":_vm.healthStatus},on:{\"change\":_vm.updateHealthStatus}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_health_status_widget.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_health_status_widget.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLoadingIcon, GlTooltipDirective as GlTooltip } from '@gitlab/ui';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport { createAlert } from '~/alert';\nimport { STATUS_OPEN, STATUS_REOPENED } from '~/issues/constants';\nimport { s__, sprintf } from '~/locale';\nimport SidebarEditableItem from '~/sidebar/components/sidebar_editable_item.vue';\nimport IssueHealthStatus from 'ee/related_items_tree/components/issue_health_status.vue';\nimport Tracking from '~/tracking';\nimport {\n  HEALTH_STATUS_I18N_FETCH_ERROR,\n  HEALTH_STATUS_I18N_HEALTH_STATUS,\n  HEALTH_STATUS_I18N_NONE,\n  HEALTH_STATUS_I18N_UPDATE_ERROR,\n  HEALTH_STATUS_OPEN_DROPDOWN_DELAY,\n  healthStatusTextMap,\n  healthStatusTracking,\n} from '../../constants';\nimport { healthStatusQueries } from '../../queries/constants';\nimport HealthStatusDropdown from './health_status_dropdown.vue';\n\nexport default {\n  HEALTH_STATUS_I18N_HEALTH_STATUS,\n  HEALTH_STATUS_I18N_NONE,\n  HEALTH_STATUS_I18N_UPDATE_ERROR,\n  healthStatusTracking,\n  components: {\n    GlIcon,\n    GlLoadingIcon,\n    HealthStatusDropdown,\n    SidebarEditableItem,\n    IssueHealthStatus,\n  },\n  directives: {\n    GlTooltip,\n  },\n  mixins: [Tracking.mixin()],\n  inject: ['canUpdate'],\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      isUpdating: false,\n    };\n  },\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    issuable: {\n      query() {\n        return healthStatusQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: this.iid,\n        };\n      },\n      skip() {\n        return !this.iid;\n      },\n      update: (data) => data.workspace?.issuable,\n      error(error) {\n        createAlert({\n          message: sprintf(HEALTH_STATUS_I18N_FETCH_ERROR, { issuableType: this.issuableType }),\n        });\n        Sentry.captureException(error);\n      },\n    },\n  },\n  computed: {\n    canEdit() {\n      return this.canUpdate && this.isOpen;\n    },\n    healthStatus() {\n      return this.issuable?.healthStatus;\n    },\n    healthStatusText() {\n      return this.healthStatus ? healthStatusTextMap[this.healthStatus] : HEALTH_STATUS_I18N_NONE;\n    },\n    healthStatusTooltip() {\n      const tooltipText = s__('Sidebar|Health status');\n      return this.healthStatus ? `${tooltipText}: ${this.healthStatusText}` : tooltipText;\n    },\n    isLoading() {\n      return this.$apollo.queries.issuable.loading || this.isUpdating;\n    },\n    isOpen() {\n      return this.issuable?.state === STATUS_OPEN || this.issuable?.state === STATUS_REOPENED;\n    },\n  },\n  methods: {\n    expandSidebar() {\n      // Wait for the open sidebar animation to finish before opening the\n      // health status dropdown, otherwise the dropdown is misaligned.\n      setTimeout(this.$refs.editable.expand, HEALTH_STATUS_OPEN_DROPDOWN_DELAY);\n    },\n    showDropdown() {\n      this.$refs.dropdown.show();\n    },\n    updateHealthStatus(healthStatus) {\n      this.$refs.editable.collapse();\n      if (healthStatus === undefined || healthStatus === this.healthStatus) {\n        return;\n      }\n\n      this.track('change_health_status', { property: healthStatus });\n      this.isUpdating = true;\n\n      this.$apollo\n        .mutate({\n          mutation: healthStatusQueries[this.issuableType].mutation,\n          variables: {\n            healthStatus,\n            iid: this.iid,\n            projectPath: this.fullPath,\n          },\n        })\n        .then(({ data }) => {\n          if (data.updateIssue.errors.length) {\n            throw new Error(data.updateIssue.errors.join('\\n'));\n          } else {\n            this.$emit('statusUpdated', healthStatus);\n          }\n        })\n        .catch((error) => {\n          createAlert({\n            message: sprintf(HEALTH_STATUS_I18N_UPDATE_ERROR, { issuableType: this.issuableType }),\n          });\n          Sentry.captureException(error);\n        })\n        .finally(() => {\n          this.isUpdating = false;\n        });\n    },\n  },\n};\n</script>\n\n<template>\n  <sidebar-editable-item\n    ref=\"editable\"\n    class=\"block health-status\"\n    :can-edit=\"canEdit\"\n    :loading=\"isLoading\"\n    :title=\"$options.HEALTH_STATUS_I18N_HEALTH_STATUS\"\n    :tracking=\"$options.healthStatusTracking\"\n    @close=\"updateHealthStatus\"\n    @open=\"showDropdown\"\n  >\n    <template #collapsed>\n      <div\n        v-gl-tooltip.left.viewport.title=\"healthStatusTooltip\"\n        class=\"sidebar-collapsed-icon\"\n        @click=\"expandSidebar\"\n      >\n        <gl-icon name=\"status-health\" />\n        <gl-loading-icon v-if=\"isLoading\" />\n        <p v-else class=\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\">\n          {{ healthStatusText }}\n        </p>\n      </div>\n      <div class=\"hide-collapsed\">\n        <issue-health-status v-if=\"healthStatus\" class=\"gl-mt-2\" :health-status=\"healthStatus\" />\n        <span v-else class=\"gl-text-subtle\">{{ $options.HEALTH_STATUS_I18N_NONE }}</span>\n      </div>\n    </template>\n    <template #default>\n      <health-status-dropdown\n        ref=\"dropdown\"\n        :health-status=\"healthStatus\"\n        @change=\"updateHealthStatus\"\n      />\n    </template>\n  </sidebar-editable-item>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_health_status_widget.vue?vue&type=template&id=f5723bee\"\nimport script from \"./sidebar_health_status_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_health_status_widget.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { __, s__ } from '~/locale';\n\nexport const COMMENT_FORM = {\n  GENERIC_UNSUBMITTABLE_NETWORK: __(\n    'Your comment could not be submitted! Please check your network connection and try again.',\n  ),\n  error: __('Comment could not be submitted: %{reason}.'),\n  note: __('Note'),\n  comment: __('Comment'),\n  wiki: __('Wiki'),\n  internalComment: __('Add internal note'),\n  issue: __('issue'),\n  startThread: __('Start thread'),\n  startInternalThread: __('Start internal thread'),\n  mergeRequest: __('merge request'),\n  epic: __('epic'),\n  bodyPlaceholder: __('Write a comment or drag your files here…'),\n  bodyPlaceholderInternal: __('Write an internal note or drag your files here…'),\n  internal: s__('Notes|Make this an internal note'),\n  internalVisibility: s__(\n    'Notes|Internal notes are only visible to members with the role of Planner or higher',\n  ),\n  discussionThatNeedsResolution: __(\n    'Discuss a specific suggestion or question that needs to be resolved.',\n  ),\n  internalDiscussionThatNeedsResolution: __(\n    'Discuss a specific suggestion or question internally that needs to be resolved.',\n  ),\n  discussion: __('Discuss a specific suggestion or question.'),\n  internalDiscussion: __('Discuss a specific suggestion or question internally.'),\n  actionButtonWithNote: __('%{actionText} & %{openOrClose} %{noteable}'),\n  actionButton: {\n    withNote: {\n      reopen: __('%{actionText} & reopen %{noteable}'),\n      close: __('%{actionText} & close %{noteable}'),\n    },\n    withoutNote: {\n      reopen: __('Reopen %{noteable}'),\n      close: __('Close %{noteable}'),\n    },\n  },\n  submitButton: {\n    startThread: __('Start thread'),\n    startInternalThread: __('Start internal thread'),\n    comment: __('Comment'),\n    internalComment: __('Add internal note'),\n    commentHelp: __('Add a general comment to this %{noteableDisplayName}.'),\n    internalCommentHelp: __('Add a confidential internal note to this %{noteableDisplayName}.'),\n  },\n  addToReviewButton: {\n    saveThread: __('Add thread to review'),\n    saveComment: __('Add comment to review'),\n  },\n  addToReview: __('Add to review'),\n  startReview: __('Start review'),\n  addCommentNow: __('Add comment now'),\n  addThreadNow: __('Add thread now'),\n};\n\nexport const EDITED_TEXT = {\n  actionWithAuthor: __('%{actionText} %{actionDetail} %{timeago} by %{author}'),\n  actionWithoutAuthor: __('%{actionText} %{actionDetail}'),\n};\n\nexport const UPDATE_COMMENT_FORM = {\n  error: __('Comment could not be updated: %{reason}.'),\n  defaultError: __('Something went wrong while editing your comment. Please try again.'),\n};\n","// Constants used by table helpers\n\nconst FIELD_KEY_CELL_VARIANT = '_cellVariants';\nconst FIELD_KEY_ROW_VARIANT = '_rowVariant';\nconst FIELD_KEY_SHOW_DETAILS = '_showDetails';\n\n// Object of item keys that should be ignored for headers and\n// stringification and filter events\nconst IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce((result, key) => ({\n  ...result,\n  [key]: true\n}), {});\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst EVENT_FILTER = ['a', 'a *',\n// Include content inside links\n'button', 'button *',\n// Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');\n\nexport { EVENT_FILTER, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS, IGNORED_FIELD_KEYS };\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","import { extend } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots';\n\n// --- Props ---\n\nconst props = {};\n\n// --- Mixin ---\n\n// @vue/component\nconst colgroupMixin = extend({\n  methods: {\n    renderColgroup() {\n      const {\n        computedFields: fields\n      } = this;\n      const h = this.$createElement;\n      let $colgroup = h();\n      if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n        $colgroup = h('colgroup', {\n          key: 'colgroup'\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n          columns: fields.length,\n          fields\n        })]);\n      }\n      return $colgroup;\n    }\n  }\n});\n\nexport { colgroupMixin, props };\n","import { formatNumber, sprintf, __ } from '~/locale';\nimport { BYTES_IN_KIB, THOUSAND, MILLION } from './constants';\n\n/**\n * Utility function that calculates KiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        KiB\n */\nexport function bytesToKiB(number) {\n  return number / BYTES_IN_KIB;\n}\n\n/**\n * Utility function that calculates MiB of the given bytes.\n *\n * @param  {Number} number bytes\n * @return {Number}        MiB\n */\nexport function bytesToMiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Utility function that calculates GiB of the given bytes.\n * @param {Number} number\n * @returns {Number}\n */\nexport function bytesToGiB(number) {\n  return number / (BYTES_IN_KIB * BYTES_IN_KIB * BYTES_IN_KIB);\n}\n\n/**\n * Formats the bytes in number into a more understandable\n * representation. Returns an array with the first value being the human size\n * and the second value being the label (e.g., [1.5, 'KiB']).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string[]}\n */\nexport function numberToHumanSizeSplit({ size, digits = 2, locale } = {}) {\n  const abs = Math.abs(size);\n  const digitsOptions = { minimumFractionDigits: digits, maximumFractionDigits: digits };\n  const formatNumberWithLocaleAndDigits = (n) => formatNumber(n, digitsOptions, locale);\n\n  if (abs < BYTES_IN_KIB) {\n    return [size.toString(), __('B')];\n  }\n  if (abs < BYTES_IN_KIB ** 2) {\n    return [formatNumberWithLocaleAndDigits(bytesToKiB(size)), __('KiB')];\n  }\n  if (abs < BYTES_IN_KIB ** 3) {\n    return [formatNumberWithLocaleAndDigits(bytesToMiB(size)), __('MiB')];\n  }\n  return [formatNumberWithLocaleAndDigits(bytesToGiB(size)), __('GiB')];\n}\n\n/**\n * Port of rails number_to_human_size\n * Formats the bytes in number into a more understandable\n * representation (e.g., giving it 1536 yields 1.5 KiB).\n *\n * @param {number} size\n * @param {number} [digits=2] - The number of digits to appear after the decimal point\n * @param {string} locale\n * @returns {string}\n */\nexport function numberToHumanSize(size, digits = 2, locale) {\n  const [humanSize, label] = numberToHumanSizeSplit({ size, digits, locale });\n\n  switch (label) {\n    case __('B'):\n      return sprintf(__('%{size} B'), { size: humanSize });\n    case __('KiB'):\n      return sprintf(__('%{size} KiB'), { size: humanSize });\n    case __('MiB'):\n      return sprintf(__('%{size} MiB'), { size: humanSize });\n    case __('GiB'):\n      return sprintf(__('%{size} GiB'), { size: humanSize });\n    default:\n      return '';\n  }\n}\n\n/**\n * Converts a number to kilos or megas.\n *\n * For example:\n * - 123 becomes 123\n * - 123456 becomes 123.4k\n * - 123456789 becomes 123.4m\n *\n * @param number Number to format\n * @param digits The number of digits to appear after the decimal point\n * @param uppercase Whether to use uppercase suffix (K, M)\n * @return {string} Formatted number\n */\nexport function numberToMetricPrefix(number, uppercase = false) {\n  if (number < THOUSAND) {\n    return number.toString();\n  }\n  const digits = 1;\n  if (number < MILLION) {\n    return `${Number((number / THOUSAND).toFixed(digits))}${uppercase ? 'K' : 'k'}`;\n  }\n  return `${Number((number / MILLION).toFixed(digits))}${uppercase ? 'M' : 'm'}`;\n}\n/**\n * A simple method that returns the value of a + b\n * It seems unessesary, but when combined with a reducer it\n * adds up all the values in an array.\n *\n * e.g. `[1, 2, 3, 4, 5].reduce(sum) // => 15`\n *\n * @param {Float} a\n * @param {Float} b\n * @example\n * // return 15\n * [1, 2, 3, 4, 5].reduce(sum);\n *\n * // returns 6\n * Object.values([{a: 1, b: 2, c: 3].reduce(sum);\n * @returns {Float} The summed value\n */\nexport const sum = (a = 0, b = 0) => a + b;\n\n/**\n * Checks if the provided number is odd\n * @param {Int} number\n */\nexport const isOdd = (number = 0) => number % 2;\n\n/**\n * Computes the median for a given array.\n * @param {Array} arr An array of numbers\n * @returns {Number} The median of the given array\n */\nexport const median = (arr) => {\n  const middle = Math.floor(arr.length / 2);\n  const sorted = arr.sort((a, b) => a - b);\n  return arr.length % 2 !== 0 ? sorted[middle] : (sorted[middle - 1] + sorted[middle]) / 2;\n};\n\n/**\n * Computes the change from one value to the other as a percentage.\n * @param {Number} firstY\n * @param {Number} lastY\n * @returns {Number}\n */\nexport const changeInPercent = (firstY, lastY) => {\n  if (firstY === lastY) {\n    return 0;\n  }\n\n  return Math.round(((lastY - firstY) / Math.abs(firstY)) * 100);\n};\n\n/**\n * Computes and formats the change from one value to the other as a percentage.\n * Prepends the computed percentage with either \"+\" or \"-\" to indicate an in- or decrease and\n * returns a given string if the result is not finite (for example, if the first value is \"0\").\n * @param firstY\n * @param lastY\n * @param nonFiniteResult\n * @returns {String}\n */\nexport const formattedChangeInPercent = (firstY, lastY, { nonFiniteResult = '-' } = {}) => {\n  const change = changeInPercent(firstY, lastY);\n\n  if (!Number.isFinite(change)) {\n    return nonFiniteResult;\n  }\n\n  return `${change >= 0 ? '+' : ''}${change}%`;\n};\n\n/**\n * Checks whether a value is numerical in nature by converting it using parseInt\n *\n * Example outcomes:\n *   - isNumeric(100) = true\n *   - isNumeric('100') = true\n *   - isNumeric(1.0) = true\n *   - isNumeric('1.0') = true\n *   - isNumeric('abc100') = false\n *   - isNumeric('abc') = false\n *   - isNumeric(true) = false\n *   - isNumeric(undefined) = false\n *   - isNumeric(null) = false\n *\n * @param value\n * @returns {boolean}\n */\nexport const isNumeric = (value) => {\n  return !Number.isNaN(parseInt(value, 10));\n};\n\nconst numberRegex = /^[0-9]+$/;\n\n/**\n * Checks whether the value is a positive number or 0, or a string with equivalent value\n *\n * @param value\n * @return {boolean}\n */\nexport const isPositiveInteger = (value) => numberRegex.test(value);\n\n/**\n * Splits a number into an integer and decimal component\n * returns an object with the integer and decimal values extracted\n *\n * @param value\n * @return {Object}\n */\nexport const splitDecimalNumber = (value) => {\n  if (isNumeric(value)) {\n    const parts = String(value).split('.');\n    if (value === 0) return { integer: '0', decimal: '0' };\n\n    if (parts.length) {\n      return parts.length > 1\n        ? { integer: parts[0], decimal: parts[1] }\n        : { integer: parts[0], decimal: null };\n    }\n  }\n  return { integer: null, decimal: null };\n};\n\n/**\n * Calculates the number of digits after the decimal place\n *\n * @param num - any numeric value\n * @return number of digits after the decimal (if any)\n */\nexport const countFloatingPointDigits = (num = null) => {\n  if (!num || !isNumeric(num)) return 0;\n\n  const { decimal } = splitDecimalNumber(num);\n  return String(decimal).length;\n};\n","var baseToString = require('./_baseToString'),\n    castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    isObject = require('./isObject'),\n    isRegExp = require('./isRegExp'),\n    stringSize = require('./_stringSize'),\n    stringToArray = require('./_stringToArray'),\n    toInteger = require('./toInteger'),\n    toString = require('./toString');\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n    DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n  var length = DEFAULT_TRUNC_LENGTH,\n      omission = DEFAULT_TRUNC_OMISSION;\n\n  if (isObject(options)) {\n    var separator = 'separator' in options ? options.separator : separator;\n    length = 'length' in options ? toInteger(options.length) : length;\n    omission = 'omission' in options ? baseToString(options.omission) : omission;\n  }\n  string = toString(string);\n\n  var strLength = string.length;\n  if (hasUnicode(string)) {\n    var strSymbols = stringToArray(string);\n    strLength = strSymbols.length;\n  }\n  if (length >= strLength) {\n    return string;\n  }\n  var end = length - stringSize(omission);\n  if (end < 1) {\n    return omission;\n  }\n  var result = strSymbols\n    ? castSlice(strSymbols, 0, end).join('')\n    : string.slice(0, end);\n\n  if (separator === undefined) {\n    return result + omission;\n  }\n  if (strSymbols) {\n    end += (result.length - end);\n  }\n  if (isRegExp(separator)) {\n    if (string.slice(end).search(separator)) {\n      var match,\n          substring = result;\n\n      if (!separator.global) {\n        separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n      }\n      separator.lastIndex = 0;\n      while ((match = separator.exec(substring))) {\n        var newEnd = match.index;\n      }\n      result = result.slice(0, newEnd === undefined ? end : newEnd);\n    }\n  } else if (string.indexOf(baseToString(separator), end) != end) {\n    var index = result.lastIndexOf(separator);\n    if (index > -1) {\n      result = result.slice(0, index);\n    }\n  }\n  return result + omission;\n}\n\nmodule.exports = truncate;\n","import { marked } from 'marked';\nimport markedBidi from 'marked-bidi';\nimport { sanitize } from '~/lib/dompurify';\nimport { markdownConfig } from '~/lib/utils/text_utility';\nimport { HTTP_STATUS_UNPROCESSABLE_ENTITY } from '~/lib/utils/http_status';\nimport { sprintf } from '~/locale';\nimport { UPDATE_COMMENT_FORM, COMMENT_FORM } from './i18n';\n\n/**\n * Tracks snowplow event when User toggles timeline view\n * @param {Boolean} enabled that will be send as a property for the event\n */\nexport const trackToggleTimelineView = (enabled) => ({\n  category: 'Incident Management', // eslint-disable-line @gitlab/require-i18n-strings\n  action: 'toggle_incident_comments_into_timeline_view',\n  label: 'Status', // eslint-disable-line @gitlab/require-i18n-strings\n  property: enabled,\n});\n\nmarked.use(markedBidi());\n\nexport const renderMarkdown = (rawMarkdown) => {\n  return sanitize(marked(rawMarkdown), markdownConfig);\n};\n\nexport const createNoteErrorMessages = (data, status) => {\n  const errors = data?.errors;\n\n  if (status === HTTP_STATUS_UNPROCESSABLE_ENTITY) {\n    if (data.quick_actions_status?.error_messages?.length) {\n      return data.quick_actions_status.error_messages;\n    }\n\n    if (errors) {\n      return [sprintf(COMMENT_FORM.error, { reason: errors.toLowerCase() }, false)];\n    }\n  }\n\n  return [COMMENT_FORM.GENERIC_UNSUBMITTABLE_NETWORK];\n};\n\nexport const updateNoteErrorMessage = (e) => {\n  const errors = e?.response?.data?.errors;\n\n  if (errors) {\n    return sprintf(UPDATE_COMMENT_FORM.error, { reason: errors.toLowerCase() }, false);\n  }\n\n  return UPDATE_COMMENT_FORM.defaultError;\n};\n\nexport const isSlashCommand = (message) => {\n  const trimmedMessage = message\n    ?.split('\\n')\n    .filter((line) => line.trim() !== '')\n    .join('\\n');\n  return trimmedMessage?.startsWith('/') || false;\n};\n","import { extend } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Also sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n  // Supported values: 'lite', 'dark', or `null`\n  headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BThead = /*#__PURE__*/extend({\n  name: NAME_THEAD,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isThead() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    theadClasses() {\n      return [this.headVariant ? `thead-${this.headVariant}` : null];\n    },\n    theadAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('thead', {\n      class: this.theadClasses,\n      attrs: this.theadAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BThead, props };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\n\n// --- Helper methods ---\n\nconst getHeadSlotName = value => `head(${value || ''})`;\nconst getFootSlotName = value => `foot(${value || ''})`;\n\n// --- Props ---\n\nconst props = {\n  // Any Bootstrap theme variant (or custom)\n  headRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'light', 'dark' or `null` (or custom)\n  headVariant: makeProp(PROP_TYPE_STRING),\n  theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst theadMixin = extend({\n  props,\n  methods: {\n    fieldClasses(field) {\n      // Header field (<th>) classes\n      return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n    },\n    headClicked(event, field, isFoot) {\n      if (this.stopIfBusy && this.stopIfBusy(event)) {\n        // If table is busy (via provider) then don't propagate\n        return;\n      } else if (filterEvent(event)) {\n        // Clicked on a non-disabled control so ignore\n        return;\n      } else if (textSelectionActive(this.$el)) {\n        // User is selecting text, so ignore\n        /* istanbul ignore next: JSDOM doesn't support getSelection() */\n        return;\n      }\n      stopEvent(event);\n      this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n    },\n    renderThead() {\n      let isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      const {\n        computedFields: fields,\n        isSortable,\n        isSelectable,\n        headVariant,\n        footVariant,\n        headRowVariant,\n        footRowVariant\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n\n      // In always stacked mode, we don't bother rendering the head/foot\n      // Or if no field headings (empty table)\n      if (this.isStackedAlways || fields.length === 0) {\n        return h();\n      }\n      const hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED);\n\n      // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n      const selectAllRows = isSelectable ? this.selectAllRows : noop;\n      const clearSelected = isSelectable ? this.clearSelected : noop;\n\n      // Helper function to generate a field <th> cell\n      const makeCell = (field, colIndex) => {\n        const {\n          label,\n          labelHtml,\n          variant,\n          stickyColumn,\n          key\n        } = field;\n        let ariaLabel = null;\n        if (!field.label.trim() && !field.headerTitle) {\n          // In case field's label and title are empty/blank\n          // We need to add a hint about what the column is about for non-sighted users\n          /* istanbul ignore next */\n          ariaLabel = startCase(field.key);\n        }\n        const on = {};\n        if (hasHeadClickListener) {\n          on.click = event => {\n            this.headClicked(event, field, isFoot);\n          };\n          on.keydown = event => {\n            const keyCode = event.keyCode;\n            if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n              this.headClicked(event, field, isFoot);\n            }\n          };\n        }\n        const sortAttrs = isSortable ? this.sortTheadThAttrs(key, field, isFoot) : {};\n        const sortClass = isSortable ? this.sortTheadThClasses(key, field, isFoot) : null;\n        const sortLabel = isSortable ? this.sortTheadThLabel(key, field, isFoot) : null;\n        const data = {\n          class: [{\n            // We need to make the header cell relative when we have\n            // a `.gl-sr-only` sort label to work around overflow issues\n            'gl-relative': sortLabel\n          }, this.fieldClasses(field), sortClass],\n          props: {\n            variant,\n            stickyColumn\n          },\n          style: field.thStyle || {},\n          attrs: {\n            // We only add a `tabindex` of `0` if there is a head-clicked listener\n            // and the current field is sortable\n            tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n            abbr: field.headerAbbr || null,\n            title: field.headerTitle || null,\n            'aria-colindex': colIndex + 1,\n            'aria-label': ariaLabel,\n            ...this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {}),\n            ...sortAttrs\n          },\n          on,\n          key\n        };\n\n        // Handle edge case where in-document templates are used with new\n        // `v-slot:name` syntax where the browser lower-cases the v-slot's\n        // name (attributes become lower cased when parsed by the browser)\n        // We have replaced the square bracket syntax with round brackets\n        // to prevent confusion with dynamic slot names\n        let slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()];\n        // Footer will fallback to header slot names\n        if (isFoot) {\n          slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName(), ...slotNames];\n        }\n        const scope = {\n          label,\n          column: key,\n          field,\n          isFoot,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        const $content = this.normalizeSlot(slotNames, scope) || h('div', {\n          domProps: htmlOrText(labelHtml, label)\n        });\n        const $srLabel = sortLabel ? h('span', {\n          staticClass: 'gl-sr-only'\n        }, ` (${sortLabel})`) : null;\n\n        // Return the header cell\n        return h(BTh, data, [$content, $srLabel].filter(identity));\n      };\n\n      // Generate the array of <th> cells\n      const $cells = fields.map(makeCell).filter(identity);\n\n      // Generate the row(s)\n      const $trs = [];\n      if (isFoot) {\n        $trs.push(h(BTr, {\n          class: this.tfootTrClass,\n          props: {\n            variant: isUndefinedOrNull(footRowVariant) ? headRowVariant : /* istanbul ignore next */footRowVariant\n          }\n        }, $cells));\n      } else {\n        const scope = {\n          columns: fields.length,\n          fields,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n        $trs.push(h(BTr, {\n          class: this.theadTrClass,\n          props: {\n            variant: headRowVariant\n          }\n        }, $cells));\n      }\n      return h(isFoot ? BTfoot : BThead, {\n        class: (isFoot ? this.tfootClass : this.theadClass) || null,\n        props: isFoot ? {\n          footVariant: footVariant || headVariant || null\n        } : {\n          headVariant: headVariant || null\n        },\n        key: isFoot ? 'bv-tfoot' : 'bv-thead'\n      }, $trs);\n    }\n  }\n});\n\nexport { props, theadMixin };\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","export const props = {\n  items: {\n    type: Array,\n    required: true,\n  },\n\n  keyField: {\n    type: String,\n    default: 'id',\n  },\n\n  direction: {\n    type: String,\n    default: 'vertical',\n    validator: (value) => ['vertical', 'horizontal'].includes(value),\n  },\n}\n\nexport function simpleArray () {\n  return this.items.length && typeof this.items[0] !== 'object'\n}\n","import eventHubFactory from '~/helpers/event_hub_factory';\n\nexport default eventHubFactory();\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.file-row-stats {\\n  font-size: 12px;\\n}\\n\", \"\"]);\n\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (root, factory) {\n  var namespace = 'VirtualList';\n  /* istanbul ignore next */\n\n  if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object') {\n    module.exports = factory(namespace, require('vue'));\n  } else if (typeof define === 'function' && define.amd) {\n    define(['vue'], factory.bind(root, namespace));\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    exports[namespace] = factory(namespace, require('vue'));\n  } else {\n    root[namespace] = factory(namespace, root.Vue);\n  }\n})(this, function (namespace, Vue) {\n  /* istanbul ignore next */\n  if (_typeof(Vue) === 'object' && typeof Vue[\"default\"] === 'function') {\n    Vue = Vue[\"default\"];\n  }\n  /* istanbul ignore next */\n\n\n  var _debounce = function _debounce(func, wait, immediate) {\n    var timeout;\n    return function () {\n      var context = this;\n      var args = arguments;\n\n      var later = function later() {\n        timeout = null;\n\n        if (!immediate) {\n          func.apply(context, args);\n        }\n      };\n\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n\n      if (callNow) {\n        func.apply(context, args);\n      }\n    };\n  };\n\n  return Vue.component(namespace, {\n    props: {\n      size: {\n        type: Number,\n        required: true\n      },\n      remain: {\n        type: Number,\n        required: true\n      },\n      rtag: {\n        type: String,\n        \"default\": 'div'\n      },\n      wtag: {\n        type: String,\n        \"default\": 'div'\n      },\n      wclass: {\n        type: String,\n        \"default\": ''\n      },\n      wstyle: {\n        type: Object,\n        \"default\": function _default() {\n          return {};\n        }\n      },\n      pagemode: {\n        type: Boolean,\n        \"default\": false\n      },\n      scrollelement: {\n        type: typeof window === 'undefined' ? Object : HTMLElement,\n        \"default\": null\n      },\n      start: {\n        type: Number,\n        \"default\": 0\n      },\n      offset: {\n        type: Number,\n        \"default\": 0\n      },\n      variable: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      bench: {\n        type: Number,\n        \"default\": 0 // also equal to remain\n\n      },\n      debounce: {\n        type: Number,\n        \"default\": 0\n      },\n      totop: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      tobottom: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      onscroll: {\n        type: [Function, Boolean],\n        // Boolean disables default behavior\n        \"default\": false\n      },\n      istable: {\n        type: Boolean,\n        \"default\": false\n      },\n      item: {\n        type: [Function, Object],\n        \"default\": null\n      },\n      itemcount: {\n        type: Number,\n        \"default\": 0\n      },\n      itemprops: {\n        type: Function,\n\n        /* istanbul ignore next */\n        \"default\": function _default() {}\n      }\n    },\n    // use changeProp to identify the prop change.\n    watch: {\n      size: function size() {\n        this.changeProp = 'size';\n      },\n      remain: function remain() {\n        this.changeProp = 'remain';\n      },\n      bench: function bench() {\n        this.changeProp = 'bench';\n        this.itemModeForceRender();\n      },\n      start: function start() {\n        this.changeProp = 'start';\n        this.itemModeForceRender();\n      },\n      offset: function offset() {\n        this.changeProp = 'offset';\n        this.itemModeForceRender();\n      },\n      itemcount: function itemcount() {\n        this.changeProp = 'itemcount';\n        this.itemModeForceRender();\n      },\n      scrollelement: function scrollelement(newScrollelement, oldScrollelement) {\n        if (this.pagemode) {\n          return;\n        }\n\n        if (oldScrollelement) {\n          this.removeScrollListener(oldScrollelement);\n        }\n\n        if (newScrollelement) {\n          this.addScrollListener(newScrollelement);\n        }\n      }\n    },\n    created: function created() {\n      var start = this.start >= this.remain ? this.start : 0;\n      var keeps = this.remain + (this.bench || this.remain);\n      var delta = Object.create(null);\n      delta.direction = ''; // current scroll direction, D: down, U: up.\n\n      delta.scrollTop = 0; // current scroll top, use to direction.\n\n      delta.start = start; // start index.\n\n      delta.end = start + keeps - 1; // end index.\n\n      delta.keeps = keeps; // nums keeping in real dom.\n\n      delta.total = 0; // all items count, update in filter.\n\n      delta.offsetAll = 0; // cache all the scrollable offset.\n\n      delta.paddingTop = 0; // container wrapper real padding-top.\n\n      delta.paddingBottom = 0; // container wrapper real padding-bottom.\n\n      delta.varCache = {}; // object to cache variable index height and scroll offset.\n\n      delta.varAverSize = 0; // average/estimate item height before variable be calculated.\n\n      delta.varLastCalcIndex = 0; // last calculated variable height/offset index, always increase.\n\n      this.delta = delta;\n    },\n    mounted: function mounted() {\n      if (this.pagemode) {\n        this.addScrollListener(window);\n      } else if (this.scrollelement) {\n        this.addScrollListener(this.scrollelement);\n      }\n\n      if (this.start) {\n        var start = this.getZone(this.start).start;\n        this.setScrollTop(this.variable ? this.getVarOffset(start) : start * this.size);\n      } else if (this.offset) {\n        this.setScrollTop(this.offset);\n      }\n    },\n    beforeDestroy: function beforeDestroy() {\n      if (this.pagemode) {\n        this.removeScrollListener(window);\n      } else if (this.scrollelement) {\n        this.removeScrollListener(this.scrollelement);\n      }\n    },\n    // check if delta should update when props change.\n    beforeUpdate: function beforeUpdate() {\n      var delta = this.delta;\n      delta.keeps = this.remain + (this.bench || this.remain);\n      var calcstart = this.changeProp === 'start' ? this.start : delta.start;\n      var zone = this.getZone(calcstart); // if start, size or offset change, update scroll position.\n\n      if (this.changeProp && ['start', 'size', 'offset'].includes(this.changeProp)) {\n        var scrollTop = this.changeProp === 'offset' ? this.offset : this.variable ? this.getVarOffset(zone.isLast ? delta.total : zone.start) : zone.isLast && delta.total - calcstart <= this.remain ? delta.total * this.size : calcstart * this.size;\n        this.$nextTick(this.setScrollTop.bind(this, scrollTop));\n      } // if points out difference, force update once again.\n\n\n      if (this.changeProp || delta.end !== zone.end || calcstart !== zone.start) {\n        this.changeProp = '';\n        delta.end = zone.end;\n        delta.start = zone.start;\n        this.forceRender();\n      }\n    },\n    methods: {\n      // add pagemode/scrollelement scroll event listener\n      addScrollListener: function addScrollListener(element) {\n        this.scrollHandler = this.debounce ? _debounce(this.onScroll.bind(this), this.debounce) : this.onScroll;\n        element.addEventListener('scroll', this.scrollHandler, false);\n      },\n      // remove pagemode/scrollelement scroll event listener\n      removeScrollListener: function removeScrollListener(element) {\n        element.removeEventListener('scroll', this.scrollHandler, false);\n      },\n      onScroll: function onScroll(event) {\n        var delta = this.delta;\n        var vsl = this.$refs.vsl;\n        var offset;\n\n        if (this.pagemode) {\n          var elemRect = this.$el.getBoundingClientRect();\n          offset = -elemRect.top;\n        } else if (this.scrollelement) {\n          var scrollelementRect = this.scrollelement.getBoundingClientRect();\n\n          var _elemRect = this.$el.getBoundingClientRect();\n\n          offset = scrollelementRect.top - _elemRect.top;\n        } else {\n          offset = vsl && (vsl.$el || vsl).scrollTop || 0;\n        }\n\n        delta.direction = offset > delta.scrollTop ? 'D' : 'U';\n        delta.scrollTop = offset;\n\n        if (delta.total > delta.keeps) {\n          this.updateZone(offset);\n        } else {\n          delta.end = delta.total - 1;\n        }\n\n        var offsetAll = delta.offsetAll;\n\n        if (this.onscroll) {\n          var param = Object.create(null);\n          param.offset = offset;\n          param.offsetAll = offsetAll;\n          param.start = delta.start;\n          param.end = delta.end;\n          this.onscroll(event, param);\n        }\n\n        if (!offset && delta.total) {\n          this.fireEvent('totop');\n        }\n\n        if (offset >= offsetAll) {\n          this.fireEvent('tobottom');\n        }\n      },\n      // update render zone by scroll offset.\n      updateZone: function updateZone(offset) {\n        var delta = this.delta;\n        var overs = this.variable ? this.getVarOvers(offset) : Math.floor(offset / this.size); // if scroll up, we'd better decrease it's numbers.\n\n        if (delta.direction === 'U') {\n          overs = overs - this.remain + 1;\n        }\n\n        var zone = this.getZone(overs);\n        var bench = this.bench || this.remain; // for better performance, if scroll passes items within the bench, do not update.\n        // and if it's close to the last item, render next zone immediately.\n\n        var shouldRenderNextZone = Math.abs(overs - delta.start - bench) === 1;\n\n        if (!shouldRenderNextZone && overs - delta.start <= bench && !zone.isLast && overs > delta.start) {\n          return;\n        } // make sure forceRender calls as less as possible.\n\n\n        if (shouldRenderNextZone || zone.start !== delta.start || zone.end !== delta.end) {\n          delta.end = zone.end;\n          delta.start = zone.start;\n          this.forceRender();\n        }\n      },\n      // return the right zone info based on `start/index`.\n      getZone: function getZone(index) {\n        var start, end;\n        var delta = this.delta;\n        index = parseInt(index, 10);\n        index = Math.max(0, index);\n        var lastStart = delta.total - delta.keeps;\n        var isLast = index <= delta.total && index >= lastStart || index > delta.total;\n\n        if (isLast) {\n          start = Math.max(0, lastStart);\n        } else {\n          start = index;\n        }\n\n        end = start + delta.keeps - 1;\n\n        if (delta.total && end > delta.total) {\n          end = delta.total - 1;\n        }\n\n        return {\n          end: end,\n          start: start,\n          isLast: isLast\n        };\n      },\n      // public method, force render ui list if needed.\n      // call this before the next rerender to get better performance.\n      forceRender: function forceRender() {\n        var _this = this;\n\n        window.requestAnimationFrame(function () {\n          _this.$forceUpdate();\n        });\n      },\n      // force render ui if using item-mode.\n      itemModeForceRender: function itemModeForceRender() {\n        if (this.item) {\n          this.forceRender();\n        }\n      },\n      // return the scroll of passed items count in variable.\n      getVarOvers: function getVarOvers(offset) {\n        var low = 0;\n        var middle = 0;\n        var middleOffset = 0;\n        var delta = this.delta;\n        var high = delta.total;\n\n        while (low <= high) {\n          middle = low + Math.floor((high - low) / 2);\n          middleOffset = this.getVarOffset(middle); // calculate the average variable height at first binary search.\n\n          if (!delta.varAverSize) {\n            delta.varAverSize = Math.floor(middleOffset / middle);\n          }\n\n          if (middleOffset === offset) {\n            return middle;\n          } else if (middleOffset < offset) {\n            low = middle + 1;\n          } else if (middleOffset > offset) {\n            high = middle - 1;\n          }\n        }\n\n        return low > 0 ? --low : 0;\n      },\n      // return a variable scroll offset from given index.\n      getVarOffset: function getVarOffset(index, nocache) {\n        var delta = this.delta;\n        var cache = delta.varCache[index];\n\n        if (!nocache && cache) {\n          return cache.offset;\n        }\n\n        var offset = 0;\n\n        for (var i = 0; i < index; i++) {\n          var size = this.getVarSize(i, nocache);\n          delta.varCache[i] = {\n            size: size,\n            offset: offset\n          };\n          offset += size;\n        }\n\n        delta.varLastCalcIndex = Math.max(delta.varLastCalcIndex, index - 1);\n        delta.varLastCalcIndex = Math.min(delta.varLastCalcIndex, delta.total - 1);\n        return offset;\n      },\n      // return a variable size (height) from given index.\n      getVarSize: function getVarSize(index, nocache) {\n        var cache = this.delta.varCache[index];\n\n        if (!nocache && cache) {\n          return cache.size;\n        }\n\n        if (typeof this.variable === 'function') {\n          return this.variable(index) || 0;\n        } else {\n          // when using item, it can only get current components height,\n          // need to be enhanced, or consider using variable-function instead\n          var slot = this.item ? this.$children[index] ? this.$children[index].$vnode : null : this.$slots[\"default\"][index];\n          var style = slot && slot.data && slot.data.style;\n\n          if (style && style.height) {\n            var shm = style.height.match(/^(.*)px$/);\n            return shm && +shm[1] || 0;\n          }\n        }\n\n        return 0;\n      },\n      // return the variable paddingTop based on current zone.\n      // @todo: if set a large `start` before variable was calculated,\n      // here will also case too much offset calculate when list is very large,\n      // consider use estimate paddingTop in this case just like `getVarPaddingBottom`.\n      getVarPaddingTop: function getVarPaddingTop() {\n        return this.getVarOffset(this.delta.start);\n      },\n      // return the variable paddingBottom based on the current zone.\n      getVarPaddingBottom: function getVarPaddingBottom() {\n        var delta = this.delta;\n        var last = delta.total - 1;\n\n        if (delta.total - delta.end <= delta.keeps || delta.varLastCalcIndex === last) {\n          return this.getVarOffset(last) - this.getVarOffset(delta.end);\n        } else {\n          // if unreached last zone or uncalculated real behind offset\n          // return the estimate paddingBottom and avoid too much calculations.\n          return (delta.total - delta.end) * (delta.varAverSize || this.size);\n        }\n      },\n      // return the variable all heights use to judge reach bottom.\n      getVarAllHeight: function getVarAllHeight() {\n        var delta = this.delta;\n\n        if (delta.total - delta.end <= delta.keeps || delta.varLastCalcIndex === delta.total - 1) {\n          return this.getVarOffset(delta.total);\n        } else {\n          return this.getVarOffset(delta.start) + (delta.total - delta.end) * (delta.varAverSize || this.size);\n        }\n      },\n      // public method, allow the parent update variable by index.\n      updateVariable: function updateVariable(index) {\n        // clear/update all the offsets and heights ahead of index.\n        this.getVarOffset(index, true);\n      },\n      // trigger a props event on parent.\n      fireEvent: function fireEvent(event) {\n        if (this[event]) {\n          this[event]();\n        }\n      },\n      // set manual scroll top.\n      setScrollTop: function setScrollTop(scrollTop) {\n        if (this.pagemode) {\n          window.scrollTo(0, scrollTop);\n        } else if (this.scrollelement) {\n          this.scrollelement.scrollTo(0, scrollTop);\n        } else {\n          var vsl = this.$refs.vsl;\n\n          if (vsl) {\n            (vsl.$el || vsl).scrollTop = scrollTop;\n          }\n        }\n      },\n      // filter the shown items based on `start` and `end`.\n      filter: function filter(h) {\n        var delta = this.delta;\n        var slots = this.$slots[\"default\"] || []; // item-mode should be decided from items prop.\n\n        if (this.item || this.$scopedSlots.item) {\n          delta.total = this.itemcount;\n\n          if (delta.keeps > delta.total) {\n            delta.end = delta.total - 1;\n          }\n        } else {\n          if (!slots.length) {\n            delta.start = 0;\n          }\n\n          delta.total = slots.length;\n        }\n\n        var paddingTop, paddingBottom, allHeight;\n        var hasPadding = delta.total > delta.keeps;\n\n        if (this.variable) {\n          allHeight = this.getVarAllHeight();\n          paddingTop = hasPadding ? this.getVarPaddingTop() : 0;\n          paddingBottom = hasPadding ? this.getVarPaddingBottom() : 0;\n        } else {\n          allHeight = this.size * delta.total;\n          paddingTop = this.size * (hasPadding ? delta.start : 0);\n          paddingBottom = this.size * (hasPadding ? delta.total - delta.keeps : 0) - paddingTop;\n        }\n\n        if (paddingBottom < this.size) {\n          paddingBottom = 0;\n        }\n\n        delta.paddingTop = paddingTop;\n        delta.paddingBottom = paddingBottom;\n        delta.offsetAll = allHeight - this.size * this.remain;\n        var renders = [];\n\n        for (var i = delta.start; i < delta.total && i <= Math.ceil(delta.end); i++) {\n          var slot = null;\n\n          if (this.$scopedSlots.item) {\n            slot = this.$scopedSlots.item(i);\n          } else if (this.item) {\n            slot = h(this.item, this.itemprops(i));\n          } else {\n            slot = slots[i];\n          }\n\n          renders.push(slot);\n        }\n\n        return renders;\n      }\n    },\n    render: function render(h) {\n      var dbc = this.debounce;\n      var list = this.filter(h);\n      var _this$delta = this.delta,\n          paddingTop = _this$delta.paddingTop,\n          paddingBottom = _this$delta.paddingBottom;\n      var istable = this.istable;\n      var wtag = istable ? 'div' : this.wtag;\n      var rtag = istable ? 'div' : this.rtag;\n\n      if (istable) {\n        list = [h('table', [h('tbody', list)])];\n      }\n\n      var renderList = h(wtag, {\n        style: Object.assign({\n          display: 'block',\n          'padding-top': paddingTop + 'px',\n          'padding-bottom': paddingBottom + 'px'\n        }, this.wstyle),\n        \"class\": this.wclass,\n        attrs: {\n          role: 'group'\n        }\n      }, list); // page mode just render list, no wrapper.\n\n      if (this.pagemode || this.scrollelement) {\n        return renderList;\n      }\n\n      return h(rtag, {\n        ref: 'vsl',\n        style: {\n          display: 'block',\n          'overflow-y': this.size >= this.remain ? 'auto' : 'initial',\n          height: this.size * this.remain + 'px'\n        },\n        on: {\n          '&scroll': dbc ? _debounce(this.onScroll.bind(this), dbc) : this.onScroll\n        }\n      }, [renderList]);\n    }\n  });\n});","import ClipboardJS from 'clipboard';\nimport { DEBOUNCE_DROPDOWN_DELAY } from '~/sidebar/components/labels/labels_select_widget/constants';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { s__ } from '~/locale';\nimport Sidebar from '~/right_sidebar';\nimport {\n  ISSUE_MR_CHANGE_ASSIGNEE,\n  ISSUE_MR_CHANGE_MILESTONE,\n  ISSUABLE_CHANGE_LABEL,\n  ISSUABLE_EDIT_DESCRIPTION,\n  MR_COPY_SOURCE_BRANCH_NAME,\n  ISSUABLE_COPY_REF,\n} from './keybindings';\n\nexport default class ShortcutsIssuable {\n  constructor(shortcuts) {\n    this.branchInMemoryButton = document.createElement('button');\n    this.branchClipboardInstance = new ClipboardJS(this.branchInMemoryButton);\n    this.branchClipboardInstance.on('success', () => {\n      toast(s__('GlobalShortcuts|Copied source branch name to clipboard.'));\n    });\n    this.branchClipboardInstance.on('error', () => {\n      toast(s__('GlobalShortcuts|Unable to copy the source branch name at this time.'));\n    });\n\n    this.refInMemoryButton = document.createElement('button');\n    this.refClipboardInstance = new ClipboardJS(this.refInMemoryButton);\n    this.refClipboardInstance.on('success', () => {\n      toast(s__('GlobalShortcuts|Copied reference to clipboard.'));\n    });\n    this.refClipboardInstance.on('error', () => {\n      toast(s__('GlobalShortcuts|Unable to copy the reference at this time.'));\n    });\n\n    shortcuts.addAll([\n      [ISSUE_MR_CHANGE_ASSIGNEE, () => ShortcutsIssuable.openSidebarDropdown('assignee')],\n      [ISSUE_MR_CHANGE_MILESTONE, () => ShortcutsIssuable.openSidebarDropdown('milestone')],\n      [ISSUABLE_CHANGE_LABEL, () => ShortcutsIssuable.openSidebarDropdown('labels')],\n      [ISSUABLE_EDIT_DESCRIPTION, ShortcutsIssuable.editIssue],\n      [MR_COPY_SOURCE_BRANCH_NAME, () => this.copyBranchName()],\n      [ISSUABLE_COPY_REF, () => this.copyIssuableRef()],\n    ]);\n  }\n\n  static editIssue() {\n    // Need to click the element as on issues, editing is inline\n    // on merge request, editing is on a different page\n    document.querySelector('.js-issuable-edit').click();\n\n    return false;\n  }\n\n  static openSidebarDropdown(name) {\n    Sidebar.instance.openDropdown(name);\n    // Wait for the sidebar to trigger('click') open\n    // so it doesn't cause our dropdown to close preemptively\n    setTimeout(() => {\n      const editBtn =\n        document.querySelector(`.block.${name} .shortcut-sidebar-dropdown-toggle`) ||\n        document.querySelector(`.block.${name} .edit-link`);\n      editBtn.click();\n    }, DEBOUNCE_DROPDOWN_DELAY);\n    return false;\n  }\n\n  async copyBranchName() {\n    const button = document.querySelector('.js-source-branch-copy');\n    const branchName = button?.dataset.clipboardText;\n\n    if (branchName) {\n      this.branchInMemoryButton.dataset.clipboardText = branchName;\n\n      this.branchInMemoryButton.dispatchEvent(new CustomEvent('click'));\n    }\n  }\n\n  async copyIssuableRef() {\n    const refButton = document.querySelector('.js-copy-reference');\n    const copiedRef = refButton?.dataset.clipboardText;\n\n    if (copiedRef) {\n      this.refInMemoryButton.dataset.clipboardText = copiedRef;\n\n      this.refInMemoryButton.dispatchEvent(new CustomEvent('click'));\n    }\n  }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-header-info\"},[(_vm.hasAuthor)?[(_vm.emailParticipant)?_c('span',{staticClass:\"note-header-author-name gl-font-bold\",attrs:{\"data-testid\":\"author-name\"},domProps:{\"textContent\":_vm._s(_vm.authorName)}}):_c('a',{ref:\"authorNameLink\",class:_vm.authorLinkClasses,attrs:{\"href\":_vm.authorHref,\"data-user-id\":_vm.authorId,\"data-username\":_vm.author.username}},[_c('span',{staticClass:\"note-header-author-name gl-font-bold\",attrs:{\"data-testid\":\"author-name\"},domProps:{\"textContent\":_vm._s(_vm.authorName)}})]),_vm._v(\" \"),(!_vm.isSystemNote && !_vm.emailParticipant)?_c('span',{staticClass:\"text-nowrap author-username gl-truncate\"},[_c('a',{ref:\"authorUsernameLink\",staticClass:\"author-username-link\",attrs:{\"href\":_vm.authorHref},on:{\"mouseenter\":_vm.handleUsernameMouseEnter,\"mouseleave\":_vm.handleUsernameMouseLeave}},[_c('span',{staticClass:\"note-headline-light gl-hidden md:gl-inline\"},[_vm._v(\"@\"+_vm._s(_vm.author.username))])]),_vm._v(\" \"),_vm._t(\"note-header-info\")],2):_vm._e(),_vm._v(\" \"),(_vm.emailParticipant)?_c('span',{staticClass:\"note-headline-light\"},[_vm._v(_vm._s(_vm.__('(external participant)')))]):_vm._e()]:_c('span',[_vm._v(_vm._s(_vm.__('A deleted user')))]),_vm._v(\" \"),_c('span',{staticClass:\"note-headline-light note-headline-meta\"},[_c('span',{staticClass:\"system-note-message\",attrs:{\"data-testid\":\"system-note-content\"}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.createdAt)?[_c('span',{ref:\"actionText\",staticClass:\"system-note-separator\"},[(_vm.actionText)?[_vm._v(_vm._s(_vm.actionText))]:_vm._e()],2),_vm._v(\" \"),(_vm.noteTimestampLink)?_c('a',{ref:\"noteTimestampLink\",staticClass:\"note-timestamp system-note-separator\",attrs:{\"href\":_vm.noteTimestampLink},on:{\"click\":_vm.updateTargetNoteHash}},[_c('time-ago-tooltip',{attrs:{\"time\":_vm.createdAt,\"tooltip-placement\":\"bottom\"}})],1):_c('time-ago-tooltip',{ref:\"noteTimestamp\",attrs:{\"time\":_vm.createdAt,\"tooltip-placement\":\"bottom\"}})]:_vm._e(),_vm._v(\" \"),(_vm.isImported)?[(_vm.isSystemNote)?_c('span',[_vm._v(\"·\")]):_vm._e(),_vm._v(\" \"),_c('imported-badge',{attrs:{\"text-only\":_vm.isSystemNote,\"importable-type\":_vm.importableType}})]:_vm._e(),_vm._v(\" \"),(_vm.isInternalNote)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip:tooltipcontainer.bottom\",arg:\"tooltipcontainer\",modifiers:{\"bottom\":true}}],staticClass:\"gl-ml-2\",attrs:{\"data-testid\":\"internal-note-indicator\",\"variant\":\"warning\",\"title\":_vm.internalNoteTooltip}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Internal note'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"extra-controls\"),_vm._v(\" \"),(_vm.showSpinner)?_c('gl-loading-icon',{ref:\"spinner\",staticClass:\"editing-spinner\",attrs:{\"size\":\"sm\",\"label\":_vm.__('Comment is being updated')}}):_vm._e()],2)],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!./note_header.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!./note_header.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport { isGid, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPE_ACTIVITY, TYPE_COMMENT } from '~/import/constants';\nimport { s__ } from '~/locale';\nimport ImportedBadge from '~/vue_shared/components/imported_badge.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\n\nexport default {\n  components: {\n    ImportedBadge,\n    TimeAgoTooltip,\n    GlBadge,\n    GlLoadingIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    author: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    createdAt: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    actionText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    noteId: {\n      type: [String, Number],\n      required: false,\n      default: null,\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showSpinner: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    isInternalNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isImported: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isSystemNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    noteUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    emailParticipant: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      isUsernameLinkHovered: false,\n    };\n  },\n  computed: {\n    authorId() {\n      return getIdFromGraphQLId(this.author.id);\n    },\n    authorHref() {\n      return this.author.path || this.author.webUrl;\n    },\n    noteTimestampLink() {\n      if (this.noteUrl) return this.noteUrl;\n\n      if (this.noteId) {\n        let { noteId } = this;\n\n        if (isGid(noteId)) noteId = getIdFromGraphQLId(noteId);\n\n        return `#note_${noteId}`;\n      }\n\n      return undefined;\n    },\n    hasAuthor() {\n      return this.author && Object.keys(this.author).length;\n    },\n    isServiceDeskEmailParticipant() {\n      return (\n        !this.isInternalNote && this.author.username === 'support-bot' && this.emailParticipant\n      );\n    },\n    authorLinkClasses() {\n      return {\n        hover: this.isUsernameLinkHovered,\n        'text-underline': this.isUsernameLinkHovered,\n        'author-name-link': true,\n        'js-user-link': true,\n        'gl-overflow-hidden': true,\n        'gl-break-words': true,\n      };\n    },\n    authorName() {\n      return this.isServiceDeskEmailParticipant ? this.emailParticipant : this.author.name;\n    },\n    internalNoteTooltip() {\n      return s__('Notes|This internal note will always remain confidential');\n    },\n    importableType() {\n      return this.isSystemNote ? TYPE_ACTIVITY : TYPE_COMMENT;\n    },\n  },\n  methods: {\n    ...mapActions(['setTargetNoteHash']),\n    updateTargetNoteHash() {\n      if (this.$store) {\n        this.setTargetNoteHash(this.noteTimestampLink);\n      }\n    },\n    handleUsernameMouseEnter() {\n      this.$refs.authorNameLink.dispatchEvent(new Event('mouseenter'));\n      this.isUsernameLinkHovered = true;\n    },\n    handleUsernameMouseLeave() {\n      this.$refs.authorNameLink.dispatchEvent(new Event('mouseleave'));\n      this.isUsernameLinkHovered = false;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-header-info\">\n    <template v-if=\"hasAuthor\">\n      <span\n        v-if=\"emailParticipant\"\n        class=\"note-header-author-name gl-font-bold\"\n        data-testid=\"author-name\"\n        v-text=\"authorName\"\n      ></span>\n      <a\n        v-else\n        ref=\"authorNameLink\"\n        :href=\"authorHref\"\n        :class=\"authorLinkClasses\"\n        :data-user-id=\"authorId\"\n        :data-username=\"author.username\"\n      >\n        <span\n          class=\"note-header-author-name gl-font-bold\"\n          data-testid=\"author-name\"\n          v-text=\"authorName\"\n        ></span>\n      </a>\n      <span\n        v-if=\"!isSystemNote && !emailParticipant\"\n        class=\"text-nowrap author-username gl-truncate\"\n      >\n        <a\n          ref=\"authorUsernameLink\"\n          class=\"author-username-link\"\n          :href=\"authorHref\"\n          @mouseenter=\"handleUsernameMouseEnter\"\n          @mouseleave=\"handleUsernameMouseLeave\"\n          ><span class=\"note-headline-light gl-hidden md:gl-inline\">@{{ author.username }}</span>\n        </a>\n        <slot name=\"note-header-info\"></slot>\n      </span>\n      <span v-if=\"emailParticipant\" class=\"note-headline-light\">{{\n        __('(external participant)')\n      }}</span>\n    </template>\n    <span v-else>{{ __('A deleted user') }}</span>\n    <span class=\"note-headline-light note-headline-meta\">\n      <span class=\"system-note-message\" data-testid=\"system-note-content\">\n        <slot></slot>\n      </span>\n      <template v-if=\"createdAt\">\n        <span ref=\"actionText\" class=\"system-note-separator\">\n          <template v-if=\"actionText\">{{ actionText }}</template>\n        </span>\n        <a\n          v-if=\"noteTimestampLink\"\n          ref=\"noteTimestampLink\"\n          :href=\"noteTimestampLink\"\n          class=\"note-timestamp system-note-separator\"\n          @click=\"updateTargetNoteHash\"\n        >\n          <time-ago-tooltip :time=\"createdAt\" tooltip-placement=\"bottom\" />\n        </a>\n        <time-ago-tooltip v-else ref=\"noteTimestamp\" :time=\"createdAt\" tooltip-placement=\"bottom\" />\n      </template>\n\n      <template v-if=\"isImported\">\n        <span v-if=\"isSystemNote\">&middot;</span>\n        <imported-badge :text-only=\"isSystemNote\" :importable-type=\"importableType\" />\n      </template>\n\n      <gl-badge\n        v-if=\"isInternalNote\"\n        v-gl-tooltip:tooltipcontainer.bottom\n        data-testid=\"internal-note-indicator\"\n        variant=\"warning\"\n        class=\"gl-ml-2\"\n        :title=\"internalNoteTooltip\"\n      >\n        {{ __('Internal note') }}\n      </gl-badge>\n      <slot name=\"extra-controls\"></slot>\n      <gl-loading-icon\n        v-if=\"showSpinner\"\n        ref=\"spinner\"\n        size=\"sm\"\n        class=\"editing-spinner\"\n        :label=\"__('Comment is being updated')\"\n      />\n    </span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_header.vue?vue&type=template&id=d4c29394\"\nimport script from \"./note_header.vue?vue&type=script&lang=js\"\nexport * from \"./note_header.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 languageLoader from '~/content_editor/services/highlight_js_language_loader';\n// Language map from Rouge::Lexer to highlight.js\n// Rouge::Lexer - We use it on the BE to determine the language of a source file (https://github.com/rouge-ruby/rouge/blob/master/docs/Languages.md).\n// Highlight.js - We use it on the FE to highlight the syntax of a source file (https://github.com/highlightjs/highlight.js/tree/main/src/languages).\nexport const ROUGE_TO_HLJS_LANGUAGE_MAP = {\n  ...Object.fromEntries(Object.keys(languageLoader).map((lang) => [lang, lang])),\n  // Override with special mappings\n  bsl: '1c',\n  pascal: 'delphi',\n  jinja: 'django',\n  docker: 'dockerfile',\n  batchfile: 'dos',\n  html: 'xml',\n  hylang: 'hy',\n  tex: 'latex',\n  common_lisp: 'lisp',\n  hlsl: 'lsl',\n  make: 'makefile',\n  objective_c: 'objectivec',\n  python3: 'python',\n  shell: 'sh',\n  vb: 'vbnet',\n  viml: 'vim',\n};\n\nexport const EVENT_ACTION = 'view_source';\n\nexport const EVENT_LABEL_VIEWER = 'source_viewer';\n\nexport const EVENT_LABEL_FALLBACK = 'legacy_fallback';\n\nexport const LINES_PER_CHUNK = 70;\n\nexport const NEWLINE = '\\n';\n\nexport const BIDI_CHARS = [\n  '\\u202A', // Left-to-Right Embedding (Try treating following text as left-to-right)\n  '\\u202B', // Right-to-Left Embedding (Try treating following text as right-to-left)\n  '\\u202D', // Left-to-Right Override (Force treating following text as left-to-right)\n  '\\u202E', // Right-to-Left Override (Force treating following text as right-to-left)\n  '\\u2066', // Left-to-Right Isolate (Force treating following text as left-to-right without affecting adjacent text)\n  '\\u2067', // Right-to-Left Isolate (Force treating following text as right-to-left without affecting adjacent text)\n  '\\u2068', // First Strong Isolate (Force treating following text in direction indicated by the next character)\n  '\\u202C', // Pop Directional Formatting (Terminate nearest LRE, RLE, LRO, or RLO)\n  '\\u2069', // Pop Directional Isolate (Terminate nearest LRI or RLI)\n  '\\u061C', // Arabic Letter Mark (Right-to-left zero-width Arabic character)\n  '\\u200F', // Right-to-Left Mark (Right-to-left zero-width character non-Arabic character)\n  '\\u200E', // Left-to-Right Mark (Left-to-right zero-width character)\n];\n\nexport const BIDI_CHARS_CLASS_LIST = 'unicode-bidi has-tooltip';\n\nexport const BIDI_CHAR_TOOLTIP = 'Potentially unwanted character detected: Unicode BiDi Control';\n\n/**\n * We fallback to highlighting these languages with Rouge, see the following issues for more detail:\n * Python: https://gitlab.com/gitlab-org/gitlab/-/issues/384375#note_1212752013\n * HAML: https://github.com/highlightjs/highlight.js/issues/3783\n * */\nexport const LEGACY_FALLBACKS = ['python', 'haml'];\n\nexport const CODEOWNERS_FILE_NAME = 'CODEOWNERS';\n\nexport const CODEOWNERS_LANGUAGE = 'codeowners';\n\nexport const SVELTE_LANGUAGE = 'svelte';\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    arrayMap = require('./_arrayMap'),\n    baseUnary = require('./_baseUnary'),\n    cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee == null ? value : iteratee(value);\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseDifference;\n","import $ from 'jquery';\n\nconst defaults = {\n  // Buttons that will show the `suggestionSections`\n  // has `data-fork-path`, and `data-action`\n  openButtons: [],\n  // Update the href(from `openButton` -> `data-fork-path`)\n  // whenever a `openButton` is clicked\n  forkButtons: [],\n  // Buttons to hide the `suggestionSections`\n  cancelButtons: [],\n  // Section to show/hide\n  suggestionSections: [],\n  // Pieces of text that need updating depending on the action, `edit`, `replace`, `delete`\n  actionTextPieces: [],\n};\n\nclass BlobForkSuggestion {\n  constructor(options) {\n    this.elementMap = { ...defaults, ...options };\n    this.onOpenButtonClick = this.onOpenButtonClick.bind(this);\n    this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n  }\n\n  init() {\n    this.bindEvents();\n\n    return this;\n  }\n\n  bindEvents() {\n    $(this.elementMap.openButtons).on('click', this.onOpenButtonClick);\n    $(this.elementMap.cancelButtons).on('click', this.onCancelButtonClick);\n  }\n\n  showSuggestionSection(forkPath, action = 'edit') {\n    $(this.elementMap.suggestionSections).removeClass('hidden');\n    $(this.elementMap.forkButtons).attr('href', forkPath);\n    $(this.elementMap.actionTextPieces).text(action);\n  }\n\n  hideSuggestionSection() {\n    $(this.elementMap.suggestionSections).addClass('hidden');\n  }\n\n  onOpenButtonClick(e) {\n    const forkPath = $(e.currentTarget).attr('data-fork-path');\n    const action = $(e.currentTarget).attr('data-action');\n    this.showSuggestionSection(forkPath, action);\n  }\n\n  onCancelButtonClick() {\n    this.hideSuggestionSection();\n  }\n\n  destroy() {\n    $(this.elementMap.openButtons).off('click', this.onOpenButtonClick);\n    $(this.elementMap.cancelButtons).off('click', this.onCancelButtonClick);\n  }\n}\n\nexport default BlobForkSuggestion;\n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in <b-table> if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nconst stableSort = (array, compareFn) => {\n  // Using `.bind(compareFn)` on the wrapped anonymous function improves\n  // performance by avoiding the function call setup. We don't use an arrow\n  // function here as it binds `this` to the `stableSort` context rather than\n  // the `compareFn` context, which wouldn't give us the performance increase.\n  return array.map((a, index) => [index, a]).sort(function (a, b) {\n    return this(a[1], b[1]) || a[0] - b[0];\n  }.bind(compareFn)).map(e => e[1]);\n};\n\nexport { stableSort };\n","function loadScript(path) {\n  const script = document.createElement('script');\n  script.type = 'application/javascript';\n  script.src = path;\n  script.defer = true;\n  document.head.appendChild(script);\n}\n\n/**\n * Loads the Sourcegraph integration for support for Sourcegraph extensions and\n * code intelligence.\n */\nexport default function initSourcegraph() {\n  const { url } = gon.sourcegraph || {};\n\n  if (!url) {\n    return;\n  }\n\n  const assetsUrl = new URL(process.env.SOURCEGRAPH_PUBLIC_PATH, window.location.href);\n  const scriptPath = new URL('scripts/integration.bundle.js', assetsUrl).href;\n\n  window.SOURCEGRAPH_ASSETS_URL = assetsUrl.href;\n  window.SOURCEGRAPH_URL = url;\n  window.SOURCEGRAPH_INTEGRATION = 'gitlab-integration';\n\n  loadScript(scriptPath);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"comment-warning-wrapper\"},[(_vm.withAlertContainer)?_c('div',{staticClass:\"error-alert\",attrs:{\"data-testid\":\"comment-field-alert-container\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasWarningAbove)?_c('noteable-warning',{staticClass:\"-gl-mb-3 gl-rounded-lg gl-rounded-b-none gl-pb-5 gl-pt-4\",attrs:{\"is-locked\":_vm.isLocked,\"is-confidential\":_vm.isConfidential,\"noteable-type\":_vm.noteableType,\"locked-noteable-docs-path\":_vm.noteableData.locked_discussion_docs_path,\"confidential-noteable-docs-path\":_vm.noteableData.confidential_issues_docs_path}}):_vm._e(),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),(_vm.hasWarningBelow)?_c('div',{staticClass:\"-gl-mt-3 gl-rounded-lg gl-rounded-t-none gl-bg-orange-50 gl-pb-1 gl-pt-4 gl-text-orange-600\"},[(_vm.showConfidentialAttachmentWarning)?_c('div',{staticClass:\"gl-border-b gl-border-b-white gl-px-4 gl-py-2 last:gl-border-none\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.confidentialAttachmentWarning)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showAttachmentWarning)?_c('div',{staticClass:\"gl-border-b gl-border-b-white gl-px-4 gl-py-2 last:gl-border-none\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.attachmentWarning)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showEmailParticipantsWarning)?_c('email-participants-warning',{staticClass:\"gl-px-4 gl-py-2\",attrs:{\"emails\":_vm.emailParticipants}}):_vm._e()],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlLink, GlIcon, GlSprintf } from '@gitlab/ui';\nimport { __, sprintf } from '~/locale';\n\nconst noteableTypeText = {\n  Issue: __('issue'),\n  Epic: __('epic'),\n  MergeRequest: __('merge request'),\n  Task: __('task'),\n  KeyResult: __('key result'),\n  Objective: __('objective'),\n};\n\nexport default {\n  components: {\n    GlIcon,\n    GlLink,\n    GlSprintf,\n  },\n  props: {\n    isLocked: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    isConfidential: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      // eslint-disable-next-line @gitlab/require-i18n-strings\n      default: 'Issue',\n    },\n    lockedNoteableDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    confidentialNoteableDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    warningIcon() {\n      if (this.isConfidential) return 'eye-slash';\n      if (this.isLocked) return 'lock';\n\n      return '';\n    },\n    isLockedAndConfidential() {\n      return this.isConfidential && this.isLocked;\n    },\n    noteableTypeText() {\n      return noteableTypeText[this.noteableType];\n    },\n    confidentialContextText() {\n      return sprintf(__('This is a confidential %{noteableTypeText}.'), {\n        noteableTypeText: this.noteableTypeText,\n      });\n    },\n    lockedContextText() {\n      return sprintf(__('The discussion in this %{noteableTypeText} is locked.'), {\n        noteableTypeText: this.noteableTypeText,\n      });\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"issuable-note-warning\" data-testid=\"issuable-note-warning\">\n    <gl-icon\n      v-if=\"!isLockedAndConfidential\"\n      :name=\"warningIcon\"\n      :size=\"16\"\n      class=\"icon gl-inline-block\"\n    />\n\n    <span v-if=\"isLockedAndConfidential\" ref=\"lockedAndConfidential\">\n      <span>\n        <gl-sprintf\n          :message=\"\n            __(\n              'This %{noteableTypeText} is %{confidentialLinkStart}confidential%{confidentialLinkEnd} and its %{lockedLinkStart}discussion is locked%{lockedLinkEnd}.',\n            )\n          \"\n        >\n          <template #noteableTypeText>{{ noteableTypeText }}</template>\n          <template #confidentialLink=\"{ content }\">\n            <gl-link :href=\"confidentialNoteableDocsPath\" target=\"_blank\">{{ content }}</gl-link>\n          </template>\n          <template #lockedLink=\"{ content }\">\n            <gl-link :href=\"lockedNoteableDocsPath\" target=\"_blank\">{{ content }}</gl-link>\n          </template>\n        </gl-sprintf>\n      </span>\n      {{\n        __(\"People without permission will never get a notification and won't be able to comment.\")\n      }}\n    </span>\n\n    <span v-else-if=\"isConfidential\" ref=\"confidential\">\n      {{ confidentialContextText }}\n      {{ __('People without permission will never get a notification.') }}\n      <gl-link :href=\"confidentialNoteableDocsPath\" target=\"_blank\">{{\n        __('Learn more.')\n      }}</gl-link>\n    </span>\n\n    <span v-else-if=\"isLocked\" ref=\"locked\">\n      {{ lockedContextText }}\n      {{ __('Only project members can comment.') }}\n      <gl-link :href=\"lockedNoteableDocsPath\" target=\"_blank\">{{ __('Learn more.') }}</gl-link>\n    </span>\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!./noteable_warning.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!./noteable_warning.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./noteable_warning.vue?vue&type=template&id=704c80a5\"\nimport script from \"./noteable_warning.vue?vue&type=script&lang=js\"\nexport * from \"./noteable_warning.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:\"issuable-note-warning\",attrs:{\"data-testid\":\"issuable-note-warning\"}},[(!_vm.isLockedAndConfidential)?_c('gl-icon',{staticClass:\"icon gl-inline-block\",attrs:{\"name\":_vm.warningIcon,\"size\":16}}):_vm._e(),_vm._v(\" \"),(_vm.isLockedAndConfidential)?_c('span',{ref:\"lockedAndConfidential\"},[_c('span',[_c('gl-sprintf',{attrs:{\"message\":_vm.__(\n            'This %{noteableTypeText} is %{confidentialLinkStart}confidential%{confidentialLinkEnd} and its %{lockedLinkStart}discussion is locked%{lockedLinkEnd}.',\n          )},scopedSlots:_vm._u([{key:\"noteableTypeText\",fn:function(){return [_vm._v(_vm._s(_vm.noteableTypeText))]},proxy:true},{key:\"confidentialLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.confidentialNoteableDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}},{key:\"lockedLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.lockedNoteableDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}],null,false,21387600)})],1),_vm._v(\"\\n    \"+_vm._s(_vm.__(\"People without permission will never get a notification and won't be able to comment.\"))+\"\\n  \")]):(_vm.isConfidential)?_c('span',{ref:\"confidential\"},[_vm._v(\"\\n    \"+_vm._s(_vm.confidentialContextText)+\"\\n    \"+_vm._s(_vm.__('People without permission will never get a notification.'))+\"\\n    \"),_c('gl-link',{attrs:{\"href\":_vm.confidentialNoteableDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.__('Learn more.')))])],1):(_vm.isLocked)?_c('span',{ref:\"locked\"},[_vm._v(\"\\n    \"+_vm._s(_vm.lockedContextText)+\"\\n    \"+_vm._s(_vm.__('Only project members can comment.'))+\"\\n    \"),_c('gl-link',{attrs:{\"href\":_vm.lockedNoteableDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.__('Learn more.')))])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email_participants_warning.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!./email_participants_warning.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlButton } from '@gitlab/ui';\nimport { toNounSeriesText } from '~/lib/utils/grammar';\nimport { s__, sprintf } from '~/locale';\n\nexport default {\n  components: {\n    GlSprintf,\n    GlButton,\n  },\n  props: {\n    emails: {\n      type: Array,\n      required: true,\n    },\n    numberOfLessParticipants: {\n      type: Number,\n      required: false,\n      default: 3,\n    },\n  },\n  data() {\n    return {\n      isShowingMoreParticipants: false,\n    };\n  },\n  computed: {\n    title() {\n      return this.moreParticipantsAvailable\n        ? toNounSeriesText(this.lessParticipants, { onlyCommas: true })\n        : toNounSeriesText(this.emails);\n    },\n    lessParticipants() {\n      return this.emails.slice(0, this.numberOfLessParticipants);\n    },\n    moreLabel() {\n      return sprintf(s__('EmailParticipantsWarning|and %{moreCount} more'), {\n        moreCount: this.emails.length - this.numberOfLessParticipants,\n      });\n    },\n    moreParticipantsAvailable() {\n      return !this.isShowingMoreParticipants && this.emails.length > this.numberOfLessParticipants;\n    },\n    message() {\n      return this.moreParticipantsAvailable\n        ? s__('EmailParticipantsWarning|%{emails}, %{andMore} will be notified of your comment.')\n        : s__('EmailParticipantsWarning|%{emails} will be notified of your comment.');\n    },\n  },\n  methods: {\n    showMoreParticipants() {\n      this.isShowingMoreParticipants = true;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <gl-sprintf :message=\"message\">\n      <template #andMore>\n        <gl-button variant=\"link\" class=\"gl-align-baseline\" @click=\"showMoreParticipants\">\n          {{ moreLabel }}\n        </gl-button>\n      </template>\n      <template #emails>\n        <span>{{ title }}</span>\n      </template>\n    </gl-sprintf>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./email_participants_warning.vue?vue&type=template&id=0e120929\"\nimport script from \"./email_participants_warning.vue?vue&type=script&lang=js\"\nexport * from \"./email_participants_warning.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('gl-sprintf',{attrs:{\"message\":_vm.message},scopedSlots:_vm._u([{key:\"andMore\",fn:function(){return [_c('gl-button',{staticClass:\"gl-align-baseline\",attrs:{\"variant\":\"link\"},on:{\"click\":_vm.showMoreParticipants}},[_vm._v(\"\\n        \"+_vm._s(_vm.moreLabel)+\"\\n      \")])]},proxy:true},{key:\"emails\",fn:function(){return [_c('span',[_vm._v(_vm._s(_vm.title))])]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { s__ } from '~/locale';\nimport NoteableWarning from '~/vue_shared/components/notes/noteable_warning.vue';\nimport EmailParticipantsWarning from './email_participants_warning.vue';\n\nconst ATTACHMENT_REGEXP = /!?\\[.*?\\]\\(\\/uploads\\/[0-9a-f]{32}\\/.*?\\)/;\nconst DEFAULT_NOTEABLE_TYPE = 'Issue';\n\nexport default {\n  i18n: {\n    attachmentWarning: s__(\n      'Notes|Attachments are sent by email. Attachments over 10 MB are sent as links to your GitLab instance, and only accessible to project members.',\n    ),\n    confidentialAttachmentWarning: s__(\n      'Notes|Uploaded files will be accessible to anyone with the file URL. Use caution when sharing file URLs.',\n    ),\n  },\n  components: {\n    EmailParticipantsWarning,\n    NoteableWarning,\n  },\n  props: {\n    isInternalNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    note: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    noteableData: {\n      type: Object,\n      required: true,\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: DEFAULT_NOTEABLE_TYPE,\n    },\n    withAlertContainer: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    containsLink() {\n      return ATTACHMENT_REGEXP.test(this.note);\n    },\n    isLocked() {\n      return Boolean(this.noteableData.discussion_locked);\n    },\n    isConfidential() {\n      return Boolean(this.noteableData.confidential);\n    },\n    hasWarningAbove() {\n      return this.isConfidential || this.isLocked;\n    },\n    hasWarningBelow() {\n      return (\n        this.showConfidentialAttachmentWarning ||\n        this.showAttachmentWarning ||\n        this.showEmailParticipantsWarning\n      );\n    },\n    emailParticipants() {\n      return this.noteableData.issue_email_participants?.map(({ email }) => email) || [];\n    },\n    showEmailParticipantsWarning() {\n      return this.emailParticipants.length && !this.isInternalNote;\n    },\n    showAttachmentWarning() {\n      return this.showEmailParticipantsWarning && this.containsLink;\n    },\n    showConfidentialAttachmentWarning() {\n      return (this.isConfidential || this.isInternalNote) && this.containsLink;\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"comment-warning-wrapper\">\n    <div\n      v-if=\"withAlertContainer\"\n      class=\"error-alert\"\n      data-testid=\"comment-field-alert-container\"\n    ></div>\n    <noteable-warning\n      v-if=\"hasWarningAbove\"\n      class=\"-gl-mb-3 gl-rounded-lg gl-rounded-b-none gl-pb-5 gl-pt-4\"\n      :is-locked=\"isLocked\"\n      :is-confidential=\"isConfidential\"\n      :noteable-type=\"noteableType\"\n      :locked-noteable-docs-path=\"noteableData.locked_discussion_docs_path\"\n      :confidential-noteable-docs-path=\"noteableData.confidential_issues_docs_path\"\n    />\n    <slot></slot>\n    <div\n      v-if=\"hasWarningBelow\"\n      class=\"-gl-mt-3 gl-rounded-lg gl-rounded-t-none gl-bg-orange-50 gl-pb-1 gl-pt-4 gl-text-orange-600\"\n    >\n      <div\n        v-if=\"showConfidentialAttachmentWarning\"\n        class=\"gl-border-b gl-border-b-white gl-px-4 gl-py-2 last:gl-border-none\"\n      >\n        {{ $options.i18n.confidentialAttachmentWarning }}\n      </div>\n      <div\n        v-if=\"showAttachmentWarning\"\n        class=\"gl-border-b gl-border-b-white gl-px-4 gl-py-2 last:gl-border-none\"\n      >\n        {{ $options.i18n.attachmentWarning }}\n      </div>\n      <email-participants-warning\n        v-if=\"showEmailParticipantsWarning\"\n        class=\"gl-px-4 gl-py-2\"\n        :emails=\"emailParticipants\"\n      />\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!./comment_field_layout.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!./comment_field_layout.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./comment_field_layout.vue?vue&type=template&id=6cb782b2\"\nimport script from \"./comment_field_layout.vue?vue&type=script&lang=js\"\nexport * from \"./comment_field_layout.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-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-shrink-0\",attrs:{\"title\":_vm.confidentialTooltip,\"variant\":\"warning\"}},[_c('gl-icon',{attrs:{\"name\":\"eye-slash\",\"size\":16}}),_vm._v(\" \"),_c('span',{class:_vm.confidentialTextClass,attrs:{\"data-testid\":\"confidential-badge-text\"}},[_vm._v(_vm._s(_vm.__('Confidential')))])],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!./confidentiality_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confidentiality_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport { confidentialityInfoText } from '../constants';\n\nexport default {\n  components: {\n    GlBadge,\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    workspaceType: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n    },\n    hideTextInSmallScreens: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    confidentialTooltip() {\n      return confidentialityInfoText(this.workspaceType, this.issuableType);\n    },\n    confidentialTextClass() {\n      return {\n        'gl-sr-only sm:gl-not-sr-only': this.hideTextInSmallScreens,\n        '!gl-ml-2': true,\n      };\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-badge v-gl-tooltip :title=\"confidentialTooltip\" variant=\"warning\" class=\"gl-shrink-0\">\n    <gl-icon name=\"eye-slash\" :size=\"16\" />\n    <span data-testid=\"confidential-badge-text\" :class=\"confidentialTextClass\">{{\n      __('Confidential')\n    }}</span>\n  </gl-badge>\n</template>\n","import { render, staticRenderFns } from \"./confidentiality_badge.vue?vue&type=template&id=632da588\"\nimport script from \"./confidentiality_badge.vue?vue&type=script&lang=js\"\nexport * from \"./confidentiality_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueHealthStatus\"},\"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\":\"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\":\"issue\"},\"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\":\"healthStatus\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":192}};\n    doc.loc.source = {\"body\":\"query issueHealthStatus($fullPath: ID!, $iid: String) {\\n  workspace: project(fullPath: $fullPath) {\\n    id\\n    issuable: issue(iid: $iid) {\\n      id\\n      healthStatus\\n      state\\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[\"issueHealthStatus\"] = oneQuery(doc, \"issueHealthStatus\");\n        \n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n  const result = [];\n\n  queue = [].concat(queue);\n  stash = [].concat(stash);\n\n  if (!stash.length) return queue;\n  if (!queue.length) {\n    return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n  }\n\n  for (const item of queue) {\n    if (Array.isArray(item)) {\n      for (const value of item) {\n        result.push(append(value, stash, enclose));\n      }\n    } else {\n      for (let ele of stash) {\n        if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n        result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n      }\n    }\n  }\n  return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n  const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n  const walk = (node, parent = {}) => {\n    node.queue = [];\n\n    let p = parent;\n    let q = parent.queue;\n\n    while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n      p = p.parent;\n      q = p.queue;\n    }\n\n    if (node.invalid || node.dollar) {\n      q.push(append(q.pop(), stringify(node, options)));\n      return;\n    }\n\n    if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n      q.push(append(q.pop(), ['{}']));\n      return;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n\n      if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n        throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n      }\n\n      let range = fill(...args, options);\n      if (range.length === 0) {\n        range = stringify(node, options);\n      }\n\n      q.push(append(q.pop(), range));\n      node.nodes = [];\n      return;\n    }\n\n    const enclose = utils.encloseBrace(node);\n    let queue = node.queue;\n    let block = node;\n\n    while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n      block = block.parent;\n      queue = block.queue;\n    }\n\n    for (let i = 0; i < node.nodes.length; i++) {\n      const child = node.nodes[i];\n\n      if (child.type === 'comma' && node.type === 'brace') {\n        if (i === 1) queue.push('');\n        queue.push('');\n        continue;\n      }\n\n      if (child.type === 'close') {\n        q.push(append(q.pop(), queue, enclose));\n        continue;\n      }\n\n      if (child.value && child.type !== 'open') {\n        queue.push(append(queue.pop(), child.value));\n        continue;\n      }\n\n      if (child.nodes) {\n        walk(child, node);\n      }\n    }\n\n    return queue;\n  };\n\n  return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","exports = module.exports = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.tree-list-blobs .file-row-name {\\n  margin-left: 12px;\\n}\\n\", \"\"]);\n\n","// base dropdown events\nconst GL_DROPDOWN_SHOWN = 'shown';\nconst GL_DROPDOWN_HIDDEN = 'hidden';\nconst GL_DROPDOWN_BEFORE_CLOSE = 'beforeClose';\nconst GL_DROPDOWN_FOCUS_CONTENT = 'focusContent';\n\n// KEY Codes\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_UP = 'ArrowUp';\nconst END = 'End';\nconst ENTER = 'Enter';\nconst HOME = 'Home';\nconst SPACE = 'Space';\n\n// Positioning strategies\n// https://floating-ui.com/docs/computePosition#strategy\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\nconst GL_DROPDOWN_CONTENTS_CLASS = 'gl-new-dropdown-contents';\n\nexport { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };\n","var baseDifference = require('./_baseDifference'),\n    baseFlatten = require('./_baseFlatten'),\n    baseRest = require('./_baseRest'),\n    isArrayLikeObject = require('./isArrayLikeObject'),\n    last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\nvar differenceWith = baseRest(function(array, values) {\n  var comparator = last(values);\n  if (isArrayLikeObject(comparator)) {\n    comparator = undefined;\n  }\n  return isArrayLikeObject(array)\n    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n    : [];\n});\n\nmodule.exports = differenceWith;\n","'use strict';\n\nmodule.exports = {\n  MAX_LENGTH: 10000,\n\n  // Digits\n  CHAR_0: '0', /* 0 */\n  CHAR_9: '9', /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 'A', /* A */\n  CHAR_LOWERCASE_A: 'a', /* a */\n  CHAR_UPPERCASE_Z: 'Z', /* Z */\n  CHAR_LOWERCASE_Z: 'z', /* z */\n\n  CHAR_LEFT_PARENTHESES: '(', /* ( */\n  CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n  CHAR_ASTERISK: '*', /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: '&', /* & */\n  CHAR_AT: '@', /* @ */\n  CHAR_BACKSLASH: '\\\\', /* \\ */\n  CHAR_BACKTICK: '`', /* ` */\n  CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n  CHAR_COLON: ':', /* : */\n  CHAR_COMMA: ',', /* , */\n  CHAR_DOLLAR: '$', /* . */\n  CHAR_DOT: '.', /* . */\n  CHAR_DOUBLE_QUOTE: '\"', /* \" */\n  CHAR_EQUAL: '=', /* = */\n  CHAR_EXCLAMATION_MARK: '!', /* ! */\n  CHAR_FORM_FEED: '\\f', /* \\f */\n  CHAR_FORWARD_SLASH: '/', /* / */\n  CHAR_HASH: '#', /* # */\n  CHAR_HYPHEN_MINUS: '-', /* - */\n  CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n  CHAR_LEFT_CURLY_BRACE: '{', /* { */\n  CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n  CHAR_LINE_FEED: '\\n', /* \\n */\n  CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n  CHAR_PERCENT: '%', /* % */\n  CHAR_PLUS: '+', /* + */\n  CHAR_QUESTION_MARK: '?', /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n  CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n  CHAR_SEMICOLON: ';', /* ; */\n  CHAR_SINGLE_QUOTE: '\\'', /* ' */\n  CHAR_SPACE: ' ', /*   */\n  CHAR_TAB: '\\t', /* \\t */\n  CHAR_UNDERSCORE: '_', /* _ */\n  CHAR_VERTICAL_LINE: '|', /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-drawer',{attrs:{\"header-height\":_vm.getDrawerHeaderHeight,\"z-index\":300,\"open\":_vm.showDrawer && _vm.mounted},on:{\"close\":_vm.closeDrawer},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('h2',{staticClass:\"gl-mb-0 gl-mt-0 gl-text-size-h2 gl-leading-24\",attrs:{\"data-testid\":\"category-drawer-title\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.title)+\"\\n    \")])]},proxy:true},{key:\"default\",fn:function(){return [_c('gl-form',{staticClass:\"gl-text-left\",attrs:{\"action\":_vm.reportAbusePath,\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"authenticity_token\"},domProps:{\"value\":_vm.$options.csrf.token}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"user_id\",\"data-testid\":\"input-user-id\"},domProps:{\"value\":_vm.reportedUserId}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"abuse_report[reported_from_url]\",\"data-testid\":\"input-referer\"},domProps:{\"value\":_vm.reportedFromUrl}}),_vm._v(\" \"),_c('gl-form-group',{attrs:{\"label\":_vm.$options.i18n.label,\"label-class\":\"gl-text-default\"}},[_c('gl-form-radio-group',{attrs:{\"options\":_vm.$options.CATEGORY_OPTIONS,\"name\":\"abuse_report[category]\",\"required\":\"\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1),_vm._v(\" \"),_c('gl-button',{attrs:{\"type\":\"submit\",\"variant\":\"confirm\",\"data-testid\":\"submit-form-button\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.next)+\"\\n      \")])],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./abuse_category_selector.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./abuse_category_selector.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlDrawer, GlForm, GlFormGroup, GlFormRadioGroup } from '@gitlab/ui';\nimport { getContentWrapperHeight } from '~/lib/utils/dom_utils';\nimport { s__, __ } from '~/locale';\nimport csrf from '~/lib/utils/csrf';\nimport { CATEGORY_OPTIONS } from '~/abuse_reports/components/constants';\n\nexport default {\n  name: 'AbuseCategorySelector',\n  csrf,\n  components: {\n    GlButton,\n    GlDrawer,\n    GlForm,\n    GlFormGroup,\n    GlFormRadioGroup,\n  },\n  inject: {\n    reportAbusePath: {\n      default: '',\n    },\n  },\n  props: {\n    reportedUserId: {\n      type: Number,\n      required: true,\n    },\n    reportedFromUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showDrawer: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  i18n: {\n    title: __('Report abuse to administrator'),\n    close: __('Close'),\n    label: s__('ReportAbuse|Why are you reporting this user?'),\n    next: __('Next'),\n  },\n  CATEGORY_OPTIONS,\n  data() {\n    return {\n      selected: '',\n      mounted: false,\n    };\n  },\n  computed: {\n    getDrawerHeaderHeight() {\n      // avoid calculating this in advance because it causes layout thrashing\n      // https://gitlab.com/gitlab-org/gitlab/-/issues/331172#note_1269378396\n      if (!this.showDrawer) return '0';\n      return getContentWrapperHeight();\n    },\n  },\n  mounted() {\n    // this is required for the component to properly animate\n    // when it is shown with v-if\n    this.mounted = true;\n  },\n  methods: {\n    closeDrawer() {\n      this.$emit('close-drawer');\n    },\n  },\n};\n</script>\n<template>\n  <gl-drawer\n    :header-height=\"getDrawerHeaderHeight\"\n    :z-index=\"300\"\n    :open=\"showDrawer && mounted\"\n    @close=\"closeDrawer\"\n  >\n    <template #title>\n      <h2 class=\"gl-mb-0 gl-mt-0 gl-text-size-h2 gl-leading-24\" data-testid=\"category-drawer-title\">\n        {{ $options.i18n.title }}\n      </h2>\n    </template>\n    <template #default>\n      <gl-form :action=\"reportAbusePath\" method=\"post\" class=\"gl-text-left\">\n        <input :value=\"$options.csrf.token\" type=\"hidden\" name=\"authenticity_token\" />\n\n        <input type=\"hidden\" name=\"user_id\" :value=\"reportedUserId\" data-testid=\"input-user-id\" />\n        <input\n          type=\"hidden\"\n          name=\"abuse_report[reported_from_url]\"\n          :value=\"reportedFromUrl\"\n          data-testid=\"input-referer\"\n        />\n\n        <gl-form-group :label=\"$options.i18n.label\" label-class=\"gl-text-default\">\n          <gl-form-radio-group\n            v-model=\"selected\"\n            :options=\"$options.CATEGORY_OPTIONS\"\n            name=\"abuse_report[category]\"\n            required\n          />\n        </gl-form-group>\n\n        <gl-button type=\"submit\" variant=\"confirm\" data-testid=\"submit-form-button\">\n          {{ $options.i18n.next }}\n        </gl-button>\n      </gl-form>\n    </template>\n  </gl-drawer>\n</template>\n","import { render, staticRenderFns } from \"./abuse_category_selector.vue?vue&type=template&id=4bfeb9fb\"\nimport script from \"./abuse_category_selector.vue?vue&type=script&lang=js\"\nexport * from \"./abuse_category_selector.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"gl-flex gl-items-center gl-justify-center gl-text-sm\",class:{\n    'comment-indicator gl-border-0 gl-bg-transparent': _vm.isNewNote,\n    'js-image-badge design-note-pin': !_vm.isNewNote,\n    resolved: _vm.isResolved,\n    inactive: _vm.isInactive,\n    draft: _vm.isDraft,\n    'on-image': _vm.isOnImage,\n    'gl-absolute': _vm.position,\n    small: _vm.size === 'sm',\n  },style:(_vm.position),attrs:{\"aria-label\":_vm.pinLabel,\"type\":\"button\"},on:{\"mousedown\":function($event){return _vm.$emit('mousedown', $event)},\"mouseup\":function($event){return _vm.$emit('mouseup', $event)},\"click\":function($event){return _vm.$emit('click', $event)}}},[(_vm.isNewNote)?_c('gl-icon',{staticClass:\"gl-rounded-full gl-border-2 gl-border-solid gl-border-white gl-bg-white\",attrs:{\"name\":\"image-comment-dark\",\"size\":24}}):[_vm._v(\"\\n    \"+_vm._s(_vm.label)+\"\\n  \")]],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!./design_note_pin.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!./design_note_pin.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n  name: 'DesignNotePin',\n  components: {\n    GlIcon,\n  },\n  props: {\n    position: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    label: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n    isResolved: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isInactive: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isOnImage: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isDraft: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    size: {\n      type: String,\n      required: false,\n      default: 'md',\n      validator: (value) => ['sm', 'md'].includes(value),\n    },\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    isNewNote() {\n      return this.label === null;\n    },\n    pinLabel() {\n      if (this.ariaLabel) {\n        return this.ariaLabel;\n      }\n\n      return this.isNewNote\n        ? __('Comment form position')\n        : sprintf(__(\"Comment '%{label}' position\"), { label: this.label });\n    },\n  },\n};\n</script>\n\n<template>\n  <button\n    :style=\"position\"\n    :aria-label=\"pinLabel\"\n    :class=\"{\n      'comment-indicator gl-border-0 gl-bg-transparent': isNewNote,\n      'js-image-badge design-note-pin': !isNewNote,\n      resolved: isResolved,\n      inactive: isInactive,\n      draft: isDraft,\n      'on-image': isOnImage,\n      'gl-absolute': position,\n      small: size === 'sm',\n    }\"\n    class=\"gl-flex gl-items-center gl-justify-center gl-text-sm\"\n    type=\"button\"\n    @mousedown=\"$emit('mousedown', $event)\"\n    @mouseup=\"$emit('mouseup', $event)\"\n    @click=\"$emit('click', $event)\"\n  >\n    <gl-icon\n      v-if=\"isNewNote\"\n      name=\"image-comment-dark\"\n      :size=\"24\"\n      class=\"gl-rounded-full gl-border-2 gl-border-solid gl-border-white gl-bg-white\"\n    />\n    <template v-else>\n      {{ label }}\n    </template>\n  </button>\n</template>\n","import { render, staticRenderFns } from \"./design_note_pin.vue?vue&type=template&id=4941d232\"\nimport script from \"./design_note_pin.vue?vue&type=script&lang=js\"\nexport * from \"./design_note_pin.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    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"projectIssueUpdateParent\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WorkItemUpdateInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuableSetAttribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"workItemUpdate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"workItem\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"widgets\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WorkItemWidgetHierarchy\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"parent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":342}};\n    doc.loc.source = {\"body\":\"mutation projectIssueUpdateParent($input: WorkItemUpdateInput!) {\\n  issuableSetAttribute: workItemUpdate(input: $input) {\\n    workItem {\\n      id\\n      widgets {\\n        ... on WorkItemWidgetHierarchy {\\n          type\\n          parent {\\n            id\\n            title\\n            webUrl\\n          }\\n        }\\n      }\\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[\"projectIssueUpdateParent\"] = oneQuery(doc, \"projectIssueUpdateParent\");\n        \n","var baseFindIndex = require('./_baseFindIndex'),\n    baseIteratee = require('./_baseIteratee'),\n    toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = length - 1;\n  if (fromIndex !== undefined) {\n    index = toInteger(fromIndex);\n    index = fromIndex < 0\n      ? nativeMax(length + index, 0)\n      : nativeMin(index, length - 1);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nmodule.exports = findLastIndex;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"gl-contents\"},[_c('status-badge',{staticClass:\"gl-mr-2 gl-self-center\",attrs:{\"issuable-type\":_vm.$options.TYPE_MERGE_REQUEST,\"state\":_vm.state}}),_vm._v(\" \"),(_vm.isConfidential)?_c('confidentiality-badge',{staticClass:\"gl-mr-2 gl-self-center\",attrs:{\"issuable-type\":_vm.$options.TYPE_ISSUE,\"workspace-type\":_vm.$options.WORKSPACE_PROJECT}}):_vm._e(),_vm._v(\" \"),(_vm.isLocked)?_c('locked-badge',{staticClass:\"gl-mr-2 gl-self-center\",attrs:{\"issuable-type\":_vm.$options.TYPE_MERGE_REQUEST}}):_vm._e(),_vm._v(\" \"),(_vm.hidden)?_c('hidden-badge',{staticClass:\"gl-mr-2 gl-self-center\",attrs:{\"issuable-type\":_vm.$options.TYPE_MERGE_REQUEST}}):_vm._e(),_vm._v(\" \"),(_vm.isImported)?_c('imported-badge',{staticClass:\"gl-mr-2 gl-self-center\",attrs:{\"importable-type\":_vm.$options.TYPE_MERGE_REQUEST}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport HiddenBadge from '~/issuable/components/hidden_badge.vue';\nimport LockedBadge from '~/issuable/components/locked_badge.vue';\nimport StatusBadge from '~/issuable/components/status_badge.vue';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST, WORKSPACE_PROJECT } from '~/issues/constants';\nimport { fetchPolicies } from '~/lib/graphql';\nimport ConfidentialityBadge from '~/vue_shared/components/confidentiality_badge.vue';\nimport ImportedBadge from '~/vue_shared/components/imported_badge.vue';\n\nexport const badgeState = Vue.observable({\n  state: '',\n  updateStatus: null,\n});\n\nexport default {\n  TYPE_ISSUE,\n  TYPE_MERGE_REQUEST,\n  WORKSPACE_PROJECT,\n  components: {\n    ConfidentialityBadge,\n    LockedBadge,\n    HiddenBadge,\n    ImportedBadge,\n    StatusBadge,\n  },\n  inject: {\n    query: { default: null },\n    projectPath: { default: null },\n    hidden: { default: false },\n    iid: { default: null },\n  },\n  props: {\n    initialState: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    isImported: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    if (!this.iid) {\n      return {\n        state: this.initialState,\n      };\n    }\n\n    if (!badgeState.state && this.initialState) {\n      badgeState.state = this.initialState;\n    }\n\n    return badgeState;\n  },\n  computed: {\n    ...mapGetters(['getNoteableData']),\n    isLocked() {\n      return this.getNoteableData.discussion_locked;\n    },\n    isConfidential() {\n      return this.getNoteableData.confidential;\n    },\n  },\n  created() {\n    if (!badgeState.updateStatus) {\n      badgeState.updateStatus = this.fetchState;\n    }\n  },\n  beforeDestroy() {\n    if (badgeState.updateStatus && this.query) {\n      badgeState.updateStatus = null;\n    }\n  },\n  methods: {\n    async fetchState() {\n      const { data } = await this.$apollo.query({\n        query: this.query,\n        variables: {\n          projectPath: this.projectPath,\n          iid: this.iid,\n        },\n        fetchPolicy: fetchPolicies.NO_CACHE,\n      });\n\n      badgeState.state = data?.workspace?.issuable?.state;\n    },\n  },\n};\n</script>\n\n<template>\n  <span class=\"gl-contents\">\n    <status-badge\n      class=\"gl-mr-2 gl-self-center\"\n      :issuable-type=\"$options.TYPE_MERGE_REQUEST\"\n      :state=\"state\"\n    />\n    <confidentiality-badge\n      v-if=\"isConfidential\"\n      class=\"gl-mr-2 gl-self-center\"\n      :issuable-type=\"$options.TYPE_ISSUE\"\n      :workspace-type=\"$options.WORKSPACE_PROJECT\"\n    />\n    <locked-badge\n      v-if=\"isLocked\"\n      class=\"gl-mr-2 gl-self-center\"\n      :issuable-type=\"$options.TYPE_MERGE_REQUEST\"\n    />\n    <hidden-badge\n      v-if=\"hidden\"\n      class=\"gl-mr-2 gl-self-center\"\n      :issuable-type=\"$options.TYPE_MERGE_REQUEST\"\n    />\n    <imported-badge\n      v-if=\"isImported\"\n      class=\"gl-mr-2 gl-self-center\"\n      :importable-type=\"$options.TYPE_MERGE_REQUEST\"\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!./merge_request_header.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!./merge_request_header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./merge_request_header.vue?vue&type=template&id=38b59f51\"\nimport script from \"./merge_request_header.vue?vue&type=script&lang=js\"\nexport * from \"./merge_request_header.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","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47 /*/*/;\n  var end = -1;\n  var matchedSlash = true;\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n  var f = basename(path);\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true;\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n  var preDotState = 0;\n  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n        continue;\n      }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === 46 /*.*/) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1)\n          startDot = i;\n        else if (preDotState !== 1)\n          preDotState = 1;\n    } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (startDot === -1 || end === -1 ||\n      // We saw a non-dot character immediately before the dot\n      preDotState === 0 ||\n      // The (right-most) trimmed path component is exactly '..'\n      preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return '';\n  }\n  return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-dropdown-widget',{attrs:{\"attr-workspace-path\":_vm.attrWorkspacePath,\"iid\":_vm.iid,\"issuable-attribute\":_vm.$options.issuableAttribute,\"issuable-type\":_vm.issuableType,\"workspace-path\":_vm.workspacePath,\"issue-id\":_vm.issueId},on:{\"attribute-updated\":function($event){return _vm.$emit('iteration-updated', $event)}},scopedSlots:_vm._u([{key:\"value\",fn:function({ attributeUrl, currentAttribute }){return [_c('p',{staticClass:\"gl-font-size-sm gl-line-height-21 gl-my-1 gl-text-subtle\"},[_vm._v(\"\\n      \"+_vm._s(_vm.getCadenceTitle(currentAttribute))+\"\\n    \")]),_vm._v(\" \"),_c('gl-link',{staticClass:\"gl-leading-20 !gl-text-default\",attrs:{\"href\":attributeUrl,\"data-testid\":\"iteration-link\"}},[_c('div',[_c('gl-icon',{staticClass:\"gl-mr-1\",attrs:{\"name\":\"iteration\"}}),_vm._v(\"\\n        \"+_vm._s(_vm.getIterationPeriod(currentAttribute))+\"\\n      \")],1),_vm._v(\" \"),(currentAttribute.title)?_c('iteration-title',{attrs:{\"title\":currentAttribute.title}}):_vm._e()],1)]}},{key:\"value-collapsed\",fn:function({ currentAttribute }){return [(currentAttribute)?_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.__('Iteration')}},[_c('gl-icon',{attrs:{\"aria-label\":_vm.__('Iteration'),\"name\":\"iteration\"}}),_vm._v(\" \"),_c('span',{staticClass:\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(\"\\n        \"+_vm._s(_vm.getIterationPeriod(currentAttribute))+\"\\n      \")])],1):_vm._e()]}},{key:\"list\",fn:function({ attributesList = [], isAttributeChecked, updateAttribute }){return [_vm._l((_vm.groupByIterationCadences(attributesList)),function(cadence,index){return [(index !== 0)?_c('gl-dropdown-divider',{key:index}):_vm._e(),_vm._v(\" \"),_c('gl-dropdown-section-header',{key:cadence.title,attrs:{\"data-testid\":\"cadence-title\"}},[_vm._v(\"\\n        \"+_vm._s(cadence.title)+\"\\n      \")]),_vm._v(\" \"),_vm._l((cadence.iterations),function(iteration){return _c('gl-dropdown-item',{key:iteration.id,attrs:{\"is-check-item\":\"\",\"is-checked\":isAttributeChecked(iteration.id),\"data-testid\":`${_vm.$options.issuableAttribute}-items`},on:{\"click\":function($event){return updateAttribute(iteration)}}},[_vm._v(\"\\n        \"+_vm._s(iteration.period)+\"\\n        \"),(iteration.title)?_c('iteration-title',{attrs:{\"title\":iteration.title}}):_vm._e()],1)})]})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_iteration_widget.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_iteration_widget.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlDropdownDivider,\n  GlDropdownItem,\n  GlDropdownSectionHeader,\n  GlIcon,\n  GlLink,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport IterationTitle from 'ee/iterations/components/iteration_title.vue';\nimport { getIterationPeriod, groupByIterationCadences } from 'ee/iterations/utils';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { IssuableAttributeType } from '../../constants';\nimport SidebarDropdownWidget from '../sidebar_dropdown_widget.vue';\n\nexport default {\n  issuableAttribute: IssuableAttributeType.Iteration,\n  components: {\n    GlDropdownDivider,\n    GlDropdownItem,\n    GlDropdownSectionHeader,\n    GlIcon,\n    GlLink,\n    SidebarDropdownWidget,\n    IterationTitle,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    attrWorkspacePath: {\n      required: true,\n      type: String,\n    },\n    iid: {\n      required: true,\n      type: String,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n      validator(value) {\n        return value === TYPE_ISSUE;\n      },\n    },\n    workspacePath: {\n      required: true,\n      type: String,\n    },\n    issueId: {\n      required: false,\n      type: String,\n      default: '',\n    },\n  },\n  methods: {\n    getCadenceTitle(currentIteration) {\n      return currentIteration?.iterationCadence?.title;\n    },\n    groupByIterationCadences,\n    getIterationPeriod,\n  },\n};\n</script>\n\n<template>\n  <sidebar-dropdown-widget\n    :attr-workspace-path=\"attrWorkspacePath\"\n    :iid=\"iid\"\n    :issuable-attribute=\"$options.issuableAttribute\"\n    :issuable-type=\"issuableType\"\n    :workspace-path=\"workspacePath\"\n    :issue-id=\"issueId\"\n    @attribute-updated=\"$emit('iteration-updated', $event)\"\n  >\n    <template #value=\"{ attributeUrl, currentAttribute }\">\n      <p class=\"gl-font-size-sm gl-line-height-21 gl-my-1 gl-text-subtle\">\n        {{ getCadenceTitle(currentAttribute) }}\n      </p>\n      <gl-link\n        class=\"gl-leading-20 !gl-text-default\"\n        :href=\"attributeUrl\"\n        data-testid=\"iteration-link\"\n      >\n        <div>\n          <gl-icon name=\"iteration\" class=\"gl-mr-1\" />\n          {{ getIterationPeriod(currentAttribute) }}\n        </div>\n        <iteration-title v-if=\"currentAttribute.title\" :title=\"currentAttribute.title\" />\n      </gl-link>\n    </template>\n    <template #value-collapsed=\"{ currentAttribute }\">\n      <div\n        v-if=\"currentAttribute\"\n        v-gl-tooltip.left.viewport\n        :title=\"__('Iteration')\"\n        class=\"sidebar-collapsed-icon\"\n      >\n        <gl-icon :aria-label=\"__('Iteration')\" name=\"iteration\" />\n        <span class=\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\">\n          {{ getIterationPeriod(currentAttribute) }}\n        </span>\n      </div>\n    </template>\n    <template #list=\"{ attributesList = [], isAttributeChecked, updateAttribute }\">\n      <template v-for=\"(cadence, index) in groupByIterationCadences(attributesList)\">\n        <gl-dropdown-divider v-if=\"index !== 0\" :key=\"index\" />\n        <gl-dropdown-section-header :key=\"cadence.title\" data-testid=\"cadence-title\">\n          {{ cadence.title }}\n        </gl-dropdown-section-header>\n        <gl-dropdown-item\n          v-for=\"iteration in cadence.iterations\"\n          :key=\"iteration.id\"\n          is-check-item\n          :is-checked=\"isAttributeChecked(iteration.id)\"\n          :data-testid=\"`${$options.issuableAttribute}-items`\"\n          @click=\"updateAttribute(iteration)\"\n        >\n          {{ iteration.period }}\n          <iteration-title v-if=\"iteration.title\" :title=\"iteration.title\" />\n        </gl-dropdown-item>\n      </template>\n    </template>\n  </sidebar-dropdown-widget>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_iteration_widget.vue?vue&type=template&id=5dc1eb92\"\nimport script from \"./sidebar_iteration_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_iteration_widget.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    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getMRCodequalityAndSecurityReportsEE\"},\"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\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nameWithNamespace\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasSecurityReports\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"codequalityReportsComparer\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"newErrors\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fingerprint\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"engineName\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolvedErrors\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fingerprint\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"engineName\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"existingErrors\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fingerprint\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"line\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"engineName\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"summary\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errored\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"total\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"sastReport\"},\"name\":{\"kind\":\"Name\",\"value\":\"findingReportsComparer\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"SAST\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"report\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"added\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"identifiers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalId\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"uuid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"severity\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"foundByPipelineIid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"location\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityLocationSast\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"file\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endLine\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerableClass\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerableMethod\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobPath\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"details\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NonNestedReportTypes\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"List\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Table\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"NamedList\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CodeFlows\"},\"directives\":[]}]}}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1946}};\n    doc.loc.source = {\"body\":\"#import \\\"ee/graphql_shared/fragments/vulnerability_detail.fragment.graphql\\\"\\n\\nquery getMRCodequalityAndSecurityReportsEE($fullPath: ID!, $iid: String!) {\\n  project(fullPath: $fullPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      title\\n      project {\\n        id\\n        nameWithNamespace\\n        fullPath\\n      }\\n      hasSecurityReports\\n      codequalityReportsComparer {\\n        status\\n        report {\\n          status\\n          newErrors {\\n            description\\n            fingerprint\\n            severity\\n            filePath\\n            line\\n            webUrl\\n            engineName\\n          }\\n          resolvedErrors {\\n            description\\n            fingerprint\\n            severity\\n            filePath\\n            line\\n            webUrl\\n            engineName\\n          }\\n          existingErrors {\\n            description\\n            fingerprint\\n            severity\\n            filePath\\n            line\\n            webUrl\\n            engineName\\n          }\\n          summary {\\n            errored\\n            resolved\\n            total\\n          }\\n        }\\n      }\\n      sastReport: findingReportsComparer(reportType: SAST) {\\n        status\\n        report {\\n          added {\\n            identifiers {\\n              externalId\\n              externalType\\n              name\\n              url\\n            }\\n            uuid\\n            title\\n            description\\n            state\\n            severity\\n            foundByPipelineIid\\n            location {\\n              ... on VulnerabilityLocationSast {\\n                file\\n                startLine\\n                endLine\\n                vulnerableClass\\n                vulnerableMethod\\n                blobPath\\n              }\\n            }\\n            details {\\n              ...NonNestedReportTypes\\n              ...List\\n              ...Table\\n              ...NamedList\\n              ...CodeFlows\\n            }\\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(\"ee/graphql_shared/fragments/vulnerability_detail.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[\"getMRCodequalityAndSecurityReportsEE\"] = oneQuery(doc, \"getMRCodequalityAndSecurityReportsEE\");\n        \n","import GlBaseAnimatedIcon from './base_animated_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlAnimatedSmileIcon',\n  extends: GlBaseAnimatedIcon\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:_vm.iconStateClass,attrs:{\"aria-label\":_vm.ariaLabel,\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('g',{staticClass:\"gl-animated-smile-eyes\"},[_c('circle',{attrs:{\"cy\":\"7\",\"cx\":\"6\",\"r\":\"0.5\"}}),_vm._v(\" \"),_c('circle',{attrs:{\"cy\":\"7\",\"cx\":\"10\",\"r\":\"0.5\"}})]),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-smile-big-smile\",attrs:{\"d\":\"M8 12C9.65685 12 11 10.6569 11 9H5C5 10.6569 6.34315 12 8 12Z\",\"fill\":\"currentColor\"}}),_vm._v(\" \"),_c('path',{staticClass:\"gl-animated-smile-slight-smile\",attrs:{\"d\":\"M6.3 10C6.46667 10.3333 7 11 8 11C9 11 9.53333 10.3333 9.7 10\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\",\"stroke-linecap\":\"round\"}}),_vm._v(\" \"),_c('circle',{attrs:{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"7.25\",\"stroke\":\"currentColor\",\"stroke-width\":\"1.5\"}})])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n  return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n  return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\n\nfunction isHTMLElement(value) {\n  return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n  return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle$1(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const safari = isSafari();\n  const css = getComputedStyle$1(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction isSafari() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createEmptyCoords = v => ({\n  x: v,\n  y: v\n});\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createEmptyCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createEmptyCoords(0);\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n  var _win$visualViewport, _win$visualViewport2;\n  if (isFixed === void 0) {\n    isFixed = true;\n  }\n  if (!isSafari()) {\n    return noOffsets;\n  }\n  const win = element ? getWindow(element) : window;\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n    return noOffsets;\n  }\n  return {\n    x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n    y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n  };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createEmptyCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentIFrame = win.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== win) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentIFrame = getWindow(currentIFrame).frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction getDocumentElement(node) {\n  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  if (offsetParent === documentElement) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createEmptyCoords(1);\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n  var _node$ownerDocument;\n  if (list === void 0) {\n    list = [];\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isSafari();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createEmptyCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nconst platform = {\n  getClippingRect,\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  isElement,\n  getDimensions,\n  getOffsetParent,\n  getDocumentElement,\n  getScale,\n  async getElementRects(_ref) {\n    let {\n      reference,\n      floating,\n      strategy\n    } = _ref;\n    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n    const getDimensionsFn = this.getDimensions;\n    return {\n      reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n      floating: {\n        x: 0,\n        y: 0,\n        ...(await getDimensionsFn(floating))\n      }\n    };\n  },\n  getClientRects: element => Array.from(element.getClientRects()),\n  isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    clearTimeout(timeoutId);\n    io && io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          resizeObserver && resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo && cleanupIo();\n    resizeObserver && resizeObserver.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { extend } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper methods ---\n\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\nconst parseSpan = value => {\n  value = toInteger(value, 0);\n  return value > 0 ? value : null;\n};\n\n/* istanbul ignore next */\nconst spanValidator = value => isUndefinedOrNull(value) || parseSpan(value) > 0;\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  stackedHeading: makeProp(PROP_TYPE_STRING),\n  stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTd = /*#__PURE__*/extend({\n  name: NAME_TABLE_CELL,\n  // Mixin order is important!\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  inject: {\n    getBvTableTr: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableTr() {\n      return this.getBvTableTr();\n    },\n    // Overridden by `<b-th>`\n    tag() {\n      return 'td';\n    },\n    inTbody() {\n      return this.bvTableTr.inTbody;\n    },\n    inThead() {\n      return this.bvTableTr.inThead;\n    },\n    inTfoot() {\n      return this.bvTableTr.inTfoot;\n    },\n    isDark() {\n      return this.bvTableTr.isDark;\n    },\n    isStacked() {\n      return this.bvTableTr.isStacked;\n    },\n    // We only support stacked-heading in tbody in stacked mode\n    isStackedCell() {\n      return this.inTbody && this.isStacked;\n    },\n    isResponsive() {\n      return this.bvTableTr.isResponsive;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return this.bvTableTr.isStickyHeader;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return this.bvTableTr.hasStickyHeader;\n    },\n    // Needed to handle background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky column cells are only available in responsive\n    // mode (horizontal scrolling) or when sticky header mode\n    // Applies to cells in `thead`, `tbody` and `tfoot`\n    isStickyColumn() {\n      return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n    },\n    rowVariant() {\n      return this.bvTableTr.variant;\n    },\n    headVariant() {\n      return this.bvTableTr.headVariant;\n    },\n    footVariant() {\n      return this.bvTableTr.footVariant;\n    },\n    tableVariant() {\n      return this.bvTableTr.tableVariant;\n    },\n    computedColspan() {\n      return parseSpan(this.colspan);\n    },\n    computedRowspan() {\n      return parseSpan(this.rowspan);\n    },\n    // We use computed props here for improved performance by caching\n    // the results of the string interpolation\n    cellClasses() {\n      let {\n        variant,\n        headVariant,\n        isStickyColumn\n      } = this;\n      if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n        // Needed for sticky-header mode as Bootstrap v4 table cells do\n        // not inherit parent's `background-color`\n        variant = this.rowVariant || this.tableVariant || 'b-table-default';\n      }\n      return [variant ? `${this.isDark ? 'bg' : 'table'}-${variant}` : null, isStickyColumn ? 'b-table-sticky-column' : null];\n    },\n    cellAttrs() {\n      const {\n        stackedHeading\n      } = this;\n\n      // We use computed props here for improved performance by caching\n      // the results of the object spread (Object.assign)\n      const headOrFoot = this.inThead || this.inTfoot;\n      // Make sure col/rowspan's are > 0 or null\n      const colspan = this.computedColspan;\n      const rowspan = this.computedRowspan;\n      // Default role and scope\n      let role = 'cell';\n      let scope = null;\n\n      // Compute role and scope\n      // We only add scopes with an explicit span of 1 or greater\n      if (headOrFoot) {\n        // Header or footer cells\n        role = 'columnheader';\n        scope = colspan > 0 ? 'colspan' : 'col';\n      } else if (isTag(this.tag, 'th')) {\n        // th's in tbody\n        role = 'rowheader';\n        scope = rowspan > 0 ? 'rowgroup' : 'row';\n      }\n      return {\n        colspan,\n        rowspan,\n        role,\n        scope,\n        // Allow users to override role/scope plus add other attributes\n        ...this.bvAttrs,\n        // Add in the stacked cell label data-attribute if in\n        // stacked mode (if a stacked heading label is provided)\n        'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ? /* istanbul ignore next */toString(stackedHeading) : null\n      };\n    }\n  },\n  render(h) {\n    const $content = [this.normalizeSlot()];\n    return h(this.tag, {\n      class: this.cellClasses,\n      attrs: this.cellAttrs,\n      // Transfer any native listeners\n      on: this.bvListeners\n    }, [this.isStackedCell ? h('div', [$content]) : $content]);\n  }\n});\n\nexport { BTd, props };\n","/**\n * The number of additional lines to include before and after the highlighted code block.\n * This padding provides context around the specific lines of interest.\n * @constant {number}\n * @default 3\n */\nexport const linesPadding = 3;\n\nexport const selectedInlineNumberMark = 'selected-inline-number-mark';\nexport const unselectedInlineNumberMark = 'unselected-inline-number-mark';\n\nexport const inlineSectionMarker = 'inline-section-marker';\nexport const selectedInlineSectionMarker = 'selected-inline-section-marker';\n\nexport const inlineItemMark = 'inline-item-mark';\nexport const selectedInlineItemMark = 'selected-inline-item-mark';\n\nexport const numMarkerIdPrefix = 'NUM-MARKER-';\nexport const textMarkerIdPrefix = 'TEXT-MARKER-';\nexport const textSpanMarkerIdPrefix = 'TEXT-SPAN-MARKER-';\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"header\",staticClass:\"js-file-title file-title file-title-flex-parent\",attrs:{\"data-testid\":\"file-title-container\",\"data-qa-file-name\":_vm.filePath},on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.handleToggleFile.apply(null, arguments)}}},[_c('div',{staticClass:\"file-header-content\"},[(_vm.collapsible)?_c('gl-button',{ref:\"collapseButton\",staticClass:\"gl-mr-2\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"icon\":_vm.collapseIcon,\"aria-label\":_vm.labelToggleFile},on:{\"click\":function($event){$event.stopPropagation();return _vm.handleToggleFile.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"gl-mr-2 gl-break-all !gl-no-underline\",attrs:{\"v-once\":!_vm.viewDiffsFileByFile,\"href\":_vm.titleLink,\"data-testid\":\"file-title\"},on:{\"click\":_vm.handleFileNameClick}},[(_vm.isFileRenamed)?_c('span',[_c('strong',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"},{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.diffFile.old_path_html),expression:\"diffFile.old_path_html\"}],staticClass:\"file-title-name\",attrs:{\"title\":_vm.diffFile.old_path}}),_vm._v(\"\\n        →\\n        \"),_c('strong',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"},{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.diffFile.new_path_html),expression:\"diffFile.new_path_html\"}],staticClass:\"file-title-name\",attrs:{\"title\":_vm.diffFile.new_path}})]):_c('strong',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"file-title-name\",attrs:{\"title\":_vm.filePath,\"data-container\":\"body\",\"data-testid\":\"file-name-content\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.filePath)+\"\\n      \")])]),_vm._v(\" \"),_c('clipboard-button',{attrs:{\"title\":_vm.__('Copy file path'),\"text\":_vm.diffFile.file_path,\"gfm\":_vm.gfmCopyText,\"size\":\"small\",\"data-testid\":\"diff-file-copy-clipboard\",\"category\":\"tertiary\",\"data-track-action\":\"click_copy_file_button\",\"data-track-label\":\"diff_copy_file_path_button\",\"data-track-property\":\"diff_copy_file\"}}),_vm._v(\" \"),(_vm.isModeChanged)?_c('small',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.focus\",modifiers:{\"hover\":true,\"focus\":true}}],ref:\"fileMode\",staticClass:\"gl-mr-2 gl-text-subtle\",attrs:{\"title\":_vm.$options.i18n.fileModeTooltip}},[_vm._v(\"\\n      \"+_vm._s(_vm.diffFile.a_mode)+\" → \"+_vm._s(_vm.diffFile.b_mode)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.isUsingLfs)?_c('gl-badge',{staticClass:\"gl-mr-2\",attrs:{\"variant\":\"neutral\",\"data-testid\":\"label-lfs\"}},[_vm._v(_vm._s(_vm.__('LFS')))]):_vm._e()],1),_vm._v(\" \"),(!_vm.diffFile.submodule && _vm.addMergeRequestButtons)?_c('div',{staticClass:\"file-actions gl-ml-auto gl-flex gl-items-center gl-self-start\"},[_c('diff-stats',{attrs:{\"diff-file\":_vm.diffFile,\"added-lines\":_vm.diffFile.added_lines,\"removed-lines\":_vm.diffFile.removed_lines}}),_vm._v(\" \"),(_vm.isReviewable && _vm.showLocalFileReviews)?_c('gl-form-checkbox',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.focus.left\",modifiers:{\"hover\":true,\"focus\":true,\"left\":true}}],staticClass:\"-gl-mb-3 gl-mr-5 gl-flex gl-items-center\",attrs:{\"data-testid\":\"fileReviewCheckbox\",\"title\":_vm.$options.i18n.fileReviewTooltip,\"checked\":_vm.reviewed},on:{\"change\":_vm.toggleReview}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.fileReviewLabel)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showCommentButton)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.focus\",modifiers:{\"hover\":true,\"focus\":true}}],staticClass:\"btn-icon gl-mr-3\",attrs:{\"title\":_vm.__('Comment on this file'),\"aria-label\":_vm.__('Comment on this file'),\"icon\":\"comment\",\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"comment-files-button\"},on:{\"click\":function($event){return _vm.toggleFileCommentForm(_vm.diffFile.file_path)}}}):_vm._e(),_vm._v(\" \"),_c('gl-button-group',{staticClass:\"!gl-pt-0\"},[(_vm.diffFile.external_url)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.focus\",modifiers:{\"hover\":true,\"focus\":true}}],ref:\"externalLink\",attrs:{\"href\":_vm.diffFile.external_url,\"title\":_vm.externalUrlLabel,\"aria-label\":_vm.externalUrlLabel,\"target\":\"_blank\",\"data-track-action\":\"click_toggle_external_button\",\"data-track-label\":\"diff_toggle_external_button\",\"data-track-property\":\"diff_toggle_external\",\"icon\":\"external-link\"}}):_vm._e(),_vm._v(\" \"),_c('gl-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.focus\",value:(_vm.$options.i18n.optionsDropdownTitle),expression:\"$options.i18n.optionsDropdownTitle\",modifiers:{\"hover\":true,\"focus\":true}}],staticClass:\"!gl-pt-0\",attrs:{\"size\":\"small\",\"category\":\"tertiary\",\"right\":\"\",\"toggle-class\":\"btn-icon js-diff-more-actions\",\"data-testid\":\"options-dropdown-button\",\"lazy\":\"\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('gl-icon',{staticClass:\"mr-0\",attrs:{\"name\":\"ellipsis_v\"}}),_vm._v(\" \"),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.$options.i18n.optionsDropdownTitle))])]},proxy:true}],null,false,1529039611)},[_vm._v(\" \"),_c('gl-dropdown-item',{ref:\"viewButton\",attrs:{\"href\":_vm.diffFile.view_path,\"target\":\"_blank\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.viewFileButtonText)+\"\\n        \")]),_vm._v(\" \"),(_vm.showEditButton)?[(_vm.diffFile.edit_path)?_c('gl-dropdown-item',{ref:\"editButton\",staticClass:\"js-edit-blob\",attrs:{\"href\":_vm.diffFile.edit_path},on:{\"click\":_vm.showForkMessage}},[_vm._v(\"\\n            \"+_vm._s(_vm.__('Edit in single-file editor'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),(_vm.diffFile.edit_path)?_c('gl-dropdown-item',{ref:\"ideEditButton\",staticClass:\"js-ide-edit-blob\",attrs:{\"href\":_vm.diffFile.ide_edit_path,\"data-testid\":\"edit-in-ide-button\",\"target\":\"_blank\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.__('Open in Web IDE'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),(_vm.diffFile.replaced_view_path)?_c('gl-dropdown-item',{ref:\"replacedFileButton\",attrs:{\"href\":_vm.diffFile.replaced_view_path,\"target\":\"_blank\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.viewReplacedFileButtonText)+\"\\n          \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(!_vm.isCollapsed)?[(!_vm.diffFile.is_fully_expanded || _vm.diffHasDiscussions(_vm.diffFile))?_c('gl-dropdown-divider'):_vm._e(),_vm._v(\" \"),(_vm.diffHasDiscussions(_vm.diffFile))?_c('gl-dropdown-item',{ref:\"toggleDiscussionsButton\",attrs:{\"data-testid\":\"toggle-comments-button\"},on:{\"click\":function($event){return _vm.toggleFileDiscussionWrappers(_vm.diffFile)}}},[(_vm.diffHasExpandedDiscussions(_vm.diffFile))?[_vm._v(\"\\n              \"+_vm._s(_vm.__('Hide comments on this file'))+\"\\n            \")]:[_vm._v(\"\\n              \"+_vm._s(_vm.__('Show comments on this file'))+\"\\n            \")]],2):_vm._e(),_vm._v(\" \"),(!_vm.diffFile.is_fully_expanded)?_c('gl-dropdown-item',{ref:\"expandDiffToFullFileButton\",attrs:{\"disabled\":_vm.diffFile.isLoadingFullFile},on:{\"click\":function($event){return _vm.toggleFullDiff(_vm.diffFile.file_path)}}},[(_vm.diffFile.isLoadingFullFile)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"inline\":\"\"}}):_vm._e(),_vm._v(\"\\n            \"+_vm._s(_vm.expandDiffToFullFileTitle)+\"\\n          \")],1):_vm._e()]:_vm._e()],2)],1)],1):_vm._e(),_vm._v(\" \"),(_vm.diffFile.submodule_compare)?_c('div',{staticClass:\"file-actions gl-hidden gl-flex-wrap gl-items-center sm:gl-flex\"},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}},{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.submoduleDiffCompareLinkText),expression:\"submoduleDiffCompareLinkText\"}],staticClass:\"submodule-compare gl-inline-block\",attrs:{\"title\":_vm.$options.i18n.compareButtonLabel,\"aria-label\":_vm.$options.i18n.compareButtonLabel,\"href\":_vm.diffFile.submodule_compare.url}})],1):_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!./diff_file_header.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!./diff_file_header.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlTooltipDirective,\n  GlIcon,\n  GlBadge,\n  GlButton,\n  GlButtonGroup,\n  GlDropdown,\n  GlDropdownItem,\n  GlDropdownDivider,\n  GlFormCheckbox,\n  GlLoadingIcon,\n} from '@gitlab/ui';\nimport { escape } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { scrollToElement } from '~/lib/utils/common_utils';\nimport { truncateSha } from '~/lib/utils/text_utility';\nimport { __, s__, sprintf } from '~/locale';\nimport ClipboardButton from '~/vue_shared/components/clipboard_button.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\n\nimport { createFileUrl, fileContentsId } from '~/diffs/components/diff_row_utils';\nimport { DIFF_FILE_AUTOMATIC_COLLAPSE } from '../constants';\nimport { DIFF_FILE_HEADER } from '../i18n';\nimport { collapsedType, isCollapsed } from '../utils/diff_file';\nimport { reviewable } from '../utils/file_reviews';\n\nimport DiffStats from './diff_stats.vue';\n\nexport default {\n  components: {\n    ClipboardButton,\n    GlIcon,\n    DiffStats,\n    GlBadge,\n    GlButton,\n    GlButtonGroup,\n    GlDropdown,\n    GlDropdownItem,\n    GlDropdownDivider,\n    GlFormCheckbox,\n    GlLoadingIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    SafeHtml,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  i18n: {\n    ...DIFF_FILE_HEADER,\n    compareButtonLabel: __('Compare submodule commit revisions'),\n    fileModeTooltip: __('File permissions'),\n  },\n  props: {\n    discussionPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    diffFile: {\n      type: Object,\n      required: true,\n    },\n    collapsible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    addMergeRequestButtons: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    expanded: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    canCurrentUserFork: {\n      type: Boolean,\n      required: true,\n    },\n    viewDiffsFileByFile: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showLocalFileReviews: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    reviewed: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    ...mapState('diffs', ['latestDiff']),\n    ...mapGetters('diffs', ['diffHasExpandedDiscussions', 'diffHasDiscussions']),\n    ...mapGetters(['getNoteableData']),\n    diffContentIDSelector() {\n      return fileContentsId(this.diffFile);\n    },\n    diffUrl() {\n      return createFileUrl(this.diffFile);\n    },\n    titleLink() {\n      if (this.diffFile.submodule) {\n        return this.diffFile.submodule_tree_url || this.diffFile.submodule_link;\n      }\n\n      if (!this.discussionPath) {\n        return this.diffUrl;\n      }\n\n      return this.discussionPath;\n    },\n    submoduleDiffCompareLinkText() {\n      if (this.diffFile.submodule_compare) {\n        const truncatedOldSha = escape(truncateSha(this.diffFile.submodule_compare.old_sha));\n        const truncatedNewSha = escape(truncateSha(this.diffFile.submodule_compare.new_sha));\n        return sprintf(\n          __('Compare %{oldCommitId}...%{newCommitId}'),\n          {\n            oldCommitId: `<span class=\"commit-sha\">${truncatedOldSha}</span>`,\n            newCommitId: `<span class=\"commit-sha\">${truncatedNewSha}</span>`,\n          },\n          false,\n        );\n      }\n      return null;\n    },\n    filePath() {\n      if (this.diffFile.submodule) {\n        return `${this.diffFile.file_path} @ ${truncateSha(this.diffFile.blob.id)}`;\n      }\n\n      if (this.diffFile.deleted_file) {\n        return sprintf(__('%{filePath} deleted'), { filePath: this.diffFile.file_path }, false);\n      }\n\n      return this.diffFile.file_path;\n    },\n    isUsingLfs() {\n      return this.diffFile.stored_externally && this.diffFile.external_storage === 'lfs';\n    },\n    isCollapsed() {\n      return isCollapsed(this.diffFile, { fileByFile: this.viewDiffsFileByFile });\n    },\n    collapseIcon() {\n      return this.expanded ? 'chevron-down' : 'chevron-right';\n    },\n    viewFileButtonText() {\n      const truncatedContentSha = escape(truncateSha(this.diffFile.content_sha));\n      return sprintf(\n        s__('MergeRequests|View file @ %{commitId}'),\n        { commitId: truncatedContentSha },\n        false,\n      );\n    },\n    viewReplacedFileButtonText() {\n      const truncatedBaseSha = escape(truncateSha(this.diffFile.diff_refs.base_sha));\n      return sprintf(s__('MergeRequests|View replaced file @ %{commitId}'), {\n        commitId: truncatedBaseSha,\n      });\n    },\n    gfmCopyText() {\n      return `\\`${this.diffFile.file_path}\\``;\n    },\n    isFileRenamed() {\n      return this.diffFile.renamed_file;\n    },\n    isModeChanged() {\n      return this.diffFile.mode_changed;\n    },\n    expandDiffToFullFileTitle() {\n      if (this.diffFile.isShowingFullFile) {\n        return s__('MRDiff|Show changes only');\n      }\n      return s__('MRDiff|Show full file');\n    },\n    showEditButton() {\n      return (\n        this.diffFile.blob?.readable_text &&\n        !this.diffFile.deleted_file &&\n        (this.diffFile.edit_path || this.diffFile.ide_edit_path)\n      );\n    },\n    isReviewable() {\n      return reviewable(this.diffFile);\n    },\n    externalUrlLabel() {\n      return sprintf(__('View on %{url}'), { url: this.diffFile.formatted_external_url });\n    },\n    labelToggleFile() {\n      return this.expanded ? __('Hide file contents') : __('Show file contents');\n    },\n    showCommentButton() {\n      return this.getNoteableData.current_user.can_create_note;\n    },\n  },\n  methods: {\n    ...mapActions('diffs', [\n      'toggleFileDiscussionWrappers',\n      'toggleFullDiff',\n      'setCurrentFileHash',\n      'reviewFile',\n      'setFileCollapsedByUser',\n      'setFileForcedOpen',\n      'toggleFileCommentForm',\n    ]),\n    handleToggleFile() {\n      this.setFileForcedOpen({\n        filePath: this.diffFile.file_path,\n        forced: false,\n      });\n      this.$emit('toggleFile');\n    },\n    showForkMessage(e) {\n      if (this.canCurrentUserFork && !this.diffFile.can_modify_blob) {\n        e.preventDefault();\n        this.$emit('showForkMessage');\n      }\n    },\n    handleFileNameClick(e) {\n      const isLinkToOtherPage =\n        this.diffFile.submodule_tree_url || this.diffFile.submodule_link || this.discussionPath;\n\n      if (!isLinkToOtherPage) {\n        e.preventDefault();\n        const selector = this.diffContentIDSelector;\n        scrollToElement(document.querySelector(selector));\n        window.location.hash = selector;\n        if (!this.viewDiffsFileByFile) {\n          this.setCurrentFileHash(this.diffFile.file_hash);\n        }\n      }\n    },\n    toggleReview(newReviewedStatus) {\n      // this is the easiest way to hide an already open tooltip that triggers on focus\n      document.activeElement.blur();\n      const autoCollapsed =\n        this.isCollapsed && collapsedType(this.diffFile) === DIFF_FILE_AUTOMATIC_COLLAPSE;\n      const open = this.expanded;\n      const closed = !open;\n      const reviewed = newReviewedStatus;\n\n      this.reviewFile({ file: this.diffFile, reviewed });\n\n      if (reviewed && autoCollapsed) {\n        this.setFileCollapsedByUser({\n          filePath: this.diffFile.file_path,\n          collapsed: true,\n        });\n      }\n\n      if ((open && reviewed) || (closed && !reviewed)) {\n        this.setFileForcedOpen({\n          filePath: this.diffFile.file_path,\n          forced: false,\n        });\n        this.$emit('toggleFile');\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    ref=\"header\"\n    class=\"js-file-title file-title file-title-flex-parent\"\n    data-testid=\"file-title-container\"\n    :data-qa-file-name=\"filePath\"\n    @click.self=\"handleToggleFile\"\n  >\n    <div class=\"file-header-content\">\n      <gl-button\n        v-if=\"collapsible\"\n        ref=\"collapseButton\"\n        class=\"gl-mr-2\"\n        category=\"tertiary\"\n        size=\"small\"\n        :icon=\"collapseIcon\"\n        :aria-label=\"labelToggleFile\"\n        @click.stop=\"handleToggleFile\"\n      />\n      <a\n        :v-once=\"!viewDiffsFileByFile\"\n        class=\"gl-mr-2 gl-break-all !gl-no-underline\"\n        :href=\"titleLink\"\n        data-testid=\"file-title\"\n        @click=\"handleFileNameClick\"\n      >\n        <span v-if=\"isFileRenamed\">\n          <strong\n            v-gl-tooltip\n            v-safe-html=\"diffFile.old_path_html\"\n            :title=\"diffFile.old_path\"\n            class=\"file-title-name\"\n          ></strong>\n          →\n          <strong\n            v-gl-tooltip\n            v-safe-html=\"diffFile.new_path_html\"\n            :title=\"diffFile.new_path\"\n            class=\"file-title-name\"\n          ></strong>\n        </span>\n\n        <strong\n          v-else\n          v-gl-tooltip\n          :title=\"filePath\"\n          class=\"file-title-name\"\n          data-container=\"body\"\n          data-testid=\"file-name-content\"\n        >\n          {{ filePath }}\n        </strong>\n      </a>\n\n      <clipboard-button\n        :title=\"__('Copy file path')\"\n        :text=\"diffFile.file_path\"\n        :gfm=\"gfmCopyText\"\n        size=\"small\"\n        data-testid=\"diff-file-copy-clipboard\"\n        category=\"tertiary\"\n        data-track-action=\"click_copy_file_button\"\n        data-track-label=\"diff_copy_file_path_button\"\n        data-track-property=\"diff_copy_file\"\n      />\n\n      <small\n        v-if=\"isModeChanged\"\n        ref=\"fileMode\"\n        v-gl-tooltip.hover.focus\n        class=\"gl-mr-2 gl-text-subtle\"\n        :title=\"$options.i18n.fileModeTooltip\"\n      >\n        {{ diffFile.a_mode }} → {{ diffFile.b_mode }}\n      </small>\n\n      <gl-badge v-if=\"isUsingLfs\" variant=\"neutral\" class=\"gl-mr-2\" data-testid=\"label-lfs\">{{\n        __('LFS')\n      }}</gl-badge>\n    </div>\n\n    <div\n      v-if=\"!diffFile.submodule && addMergeRequestButtons\"\n      class=\"file-actions gl-ml-auto gl-flex gl-items-center gl-self-start\"\n    >\n      <diff-stats\n        :diff-file=\"diffFile\"\n        :added-lines=\"diffFile.added_lines\"\n        :removed-lines=\"diffFile.removed_lines\"\n      />\n      <gl-form-checkbox\n        v-if=\"isReviewable && showLocalFileReviews\"\n        v-gl-tooltip.hover.focus.left\n        data-testid=\"fileReviewCheckbox\"\n        class=\"-gl-mb-3 gl-mr-5 gl-flex gl-items-center\"\n        :title=\"$options.i18n.fileReviewTooltip\"\n        :checked=\"reviewed\"\n        @change=\"toggleReview\"\n      >\n        {{ $options.i18n.fileReviewLabel }}\n      </gl-form-checkbox>\n      <gl-button\n        v-if=\"showCommentButton\"\n        v-gl-tooltip.hover.focus\n        :title=\"__('Comment on this file')\"\n        :aria-label=\"__('Comment on this file')\"\n        icon=\"comment\"\n        category=\"tertiary\"\n        size=\"small\"\n        class=\"btn-icon gl-mr-3\"\n        data-testid=\"comment-files-button\"\n        @click=\"toggleFileCommentForm(diffFile.file_path)\"\n      />\n      <gl-button-group class=\"!gl-pt-0\">\n        <gl-button\n          v-if=\"diffFile.external_url\"\n          ref=\"externalLink\"\n          v-gl-tooltip.hover.focus\n          :href=\"diffFile.external_url\"\n          :title=\"externalUrlLabel\"\n          :aria-label=\"externalUrlLabel\"\n          target=\"_blank\"\n          data-track-action=\"click_toggle_external_button\"\n          data-track-label=\"diff_toggle_external_button\"\n          data-track-property=\"diff_toggle_external\"\n          icon=\"external-link\"\n        />\n        <gl-dropdown\n          v-gl-tooltip.hover.focus=\"$options.i18n.optionsDropdownTitle\"\n          size=\"small\"\n          category=\"tertiary\"\n          right\n          toggle-class=\"btn-icon js-diff-more-actions\"\n          class=\"!gl-pt-0\"\n          data-testid=\"options-dropdown-button\"\n          lazy\n        >\n          <template #button-content>\n            <gl-icon name=\"ellipsis_v\" class=\"mr-0\" />\n            <span class=\"sr-only\">{{ $options.i18n.optionsDropdownTitle }}</span>\n          </template>\n          <gl-dropdown-item ref=\"viewButton\" :href=\"diffFile.view_path\" target=\"_blank\">\n            {{ viewFileButtonText }}\n          </gl-dropdown-item>\n          <template v-if=\"showEditButton\">\n            <gl-dropdown-item\n              v-if=\"diffFile.edit_path\"\n              ref=\"editButton\"\n              :href=\"diffFile.edit_path\"\n              class=\"js-edit-blob\"\n              @click=\"showForkMessage\"\n            >\n              {{ __('Edit in single-file editor') }}\n            </gl-dropdown-item>\n            <gl-dropdown-item\n              v-if=\"diffFile.edit_path\"\n              ref=\"ideEditButton\"\n              :href=\"diffFile.ide_edit_path\"\n              class=\"js-ide-edit-blob\"\n              data-testid=\"edit-in-ide-button\"\n              target=\"_blank\"\n            >\n              {{ __('Open in Web IDE') }}\n            </gl-dropdown-item>\n            <gl-dropdown-item\n              v-if=\"diffFile.replaced_view_path\"\n              ref=\"replacedFileButton\"\n              :href=\"diffFile.replaced_view_path\"\n              target=\"_blank\"\n            >\n              {{ viewReplacedFileButtonText }}\n            </gl-dropdown-item>\n          </template>\n\n          <template v-if=\"!isCollapsed\">\n            <gl-dropdown-divider\n              v-if=\"!diffFile.is_fully_expanded || diffHasDiscussions(diffFile)\"\n            />\n\n            <gl-dropdown-item\n              v-if=\"diffHasDiscussions(diffFile)\"\n              ref=\"toggleDiscussionsButton\"\n              data-testid=\"toggle-comments-button\"\n              @click=\"toggleFileDiscussionWrappers(diffFile)\"\n            >\n              <template v-if=\"diffHasExpandedDiscussions(diffFile)\">\n                {{ __('Hide comments on this file') }}\n              </template>\n              <template v-else>\n                {{ __('Show comments on this file') }}\n              </template>\n            </gl-dropdown-item>\n            <gl-dropdown-item\n              v-if=\"!diffFile.is_fully_expanded\"\n              ref=\"expandDiffToFullFileButton\"\n              :disabled=\"diffFile.isLoadingFullFile\"\n              @click=\"toggleFullDiff(diffFile.file_path)\"\n            >\n              <gl-loading-icon v-if=\"diffFile.isLoadingFullFile\" size=\"sm\" inline />\n              {{ expandDiffToFullFileTitle }}\n            </gl-dropdown-item>\n          </template>\n        </gl-dropdown>\n      </gl-button-group>\n    </div>\n\n    <div\n      v-if=\"diffFile.submodule_compare\"\n      class=\"file-actions gl-hidden gl-flex-wrap gl-items-center sm:gl-flex\"\n    >\n      <gl-button\n        v-gl-tooltip.hover\n        v-safe-html=\"submoduleDiffCompareLinkText\"\n        class=\"submodule-compare gl-inline-block\"\n        :title=\"$options.i18n.compareButtonLabel\"\n        :aria-label=\"$options.i18n.compareButtonLabel\"\n        :href=\"diffFile.submodule_compare.url\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_file_header.vue?vue&type=template&id=3b3bca96\"\nimport script from \"./diff_file_header.vue?vue&type=script&lang=js\"\nexport * from \"./diff_file_header.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 { BLink } from '../../../../vendor/bootstrap-vue/src/components/link/link';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport { isItem } from './utils';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst ITEM_CLASS = 'gl-new-dropdown-item';\nvar script = {\n  name: DISCLOSURE_DROPDOWN_ITEM_NAME,\n  ITEM_CLASS,\n  components: {\n    BLink\n  },\n  props: {\n    item: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isItem\n    }\n  },\n  computed: {\n    isLink() {\n      var _this$item, _this$item2;\n      return typeof ((_this$item = this.item) === null || _this$item === void 0 ? void 0 : _this$item.href) === 'string' || typeof ((_this$item2 = this.item) === null || _this$item2 === void 0 ? void 0 : _this$item2.to) === 'string';\n    },\n    isCustomContent() {\n      return Boolean(this.$scopedSlots.default);\n    },\n    itemComponent() {\n      const {\n        item\n      } = this;\n      if (this.isLink) return {\n        is: BLink,\n        attrs: {\n          href: item.href,\n          to: item.to,\n          ...item.extraAttrs\n        },\n        listeners: {\n          click: this.action\n        }\n      };\n      return {\n        is: 'button',\n        attrs: {\n          ...(item === null || item === void 0 ? void 0 : item.extraAttrs),\n          type: 'button'\n        },\n        listeners: {\n          click: () => {\n            var _item$action;\n            item === null || item === void 0 ? void 0 : (_item$action = item.action) === null || _item$action === void 0 ? void 0 : _item$action.call(undefined, item);\n            this.action();\n          }\n        }\n      };\n    },\n    listIndex() {\n      var _this$item3, _this$item3$extraAttr;\n      return (_this$item3 = this.item) !== null && _this$item3 !== void 0 && (_this$item3$extraAttr = _this$item3.extraAttrs) !== null && _this$item3$extraAttr !== void 0 && _this$item3$extraAttr.disabled ? null : 0;\n    },\n    componentIndex() {\n      var _this$item4, _this$item4$extraAttr;\n      return (_this$item4 = this.item) !== null && _this$item4 !== void 0 && (_this$item4$extraAttr = _this$item4.extraAttrs) !== null && _this$item4$extraAttr !== void 0 && _this$item4$extraAttr.disabled ? null : -1;\n    },\n    wrapperClass() {\n      var _this$item$wrapperCla, _this$item5;\n      return (_this$item$wrapperCla = (_this$item5 = this.item) === null || _this$item5 === void 0 ? void 0 : _this$item5.wrapperClass) !== null && _this$item$wrapperCla !== void 0 ? _this$item$wrapperCla : '';\n    },\n    wrapperListeners() {\n      const listeners = {\n        keydown: this.onKeydown\n      };\n      if (this.isCustomContent) {\n        listeners.click = this.action;\n      }\n      return listeners;\n    }\n  },\n  methods: {\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        if (this.isCustomContent) {\n          this.action();\n        } else {\n          stopEvent(event);\n          /** Instead of simply navigating or calling the action, we want\n           * the `a/button` to be the target of the event as it might have additional attributes.\n           * E.g. `a` might have `target` attribute.\n           */\n          const e = new MouseEvent('click', {\n            bubbles: true,\n            cancelable: true\n          });\n          if (this.isLink) {\n            this.$refs.item.$el.dispatchEvent(e);\n          } else {\n            var _this$$refs$item;\n            (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : _this$$refs$item.dispatchEvent(e);\n          }\n        }\n      }\n    },\n    action() {\n      this.$emit('action', this.item);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',_vm._g({class:[_vm.$options.ITEM_CLASS, _vm.wrapperClass],attrs:{\"tabindex\":_vm.listIndex,\"data-testid\":\"disclosure-dropdown-item\"}},_vm.wrapperListeners),[_vm._t(\"default\",function(){return [_c(_vm.itemComponent.is,_vm._g(_vm._b({ref:\"item\",tag:\"component\",staticClass:\"gl-new-dropdown-item-content\",attrs:{\"tabindex\":_vm.componentIndex}},'component',_vm.itemComponent.attrs,false),_vm.itemComponent.listeners),[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.item.text)+\"\\n        \")]})],2)])]})],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { ITEM_CLASS };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"gl-contents\"},[(_vm.showExportButton)?_c('gl-disclosure-dropdown-item',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal\",value:(_vm.exportModalId),expression:\"exportModalId\"}],attrs:{\"data-testid\":\"export-as-csv-button\",\"item\":_vm.dropdownItems.exportAsCSV}}):_vm._e(),_vm._v(\" \"),(_vm.showImportButton)?_c('gl-disclosure-dropdown-item',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal\",value:(_vm.importModalId),expression:\"importModalId\"}],attrs:{\"data-testid\":\"import-from-csv-button\",\"item\":_vm.dropdownItems.importCSV}}):_vm._e(),_vm._v(\" \"),(_vm.showImportButton && _vm.canEdit)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"import-from-jira-link\",\"item\":_vm.dropdownItems.importFromJIRA}}):_vm._e(),_vm._v(\" \"),(_vm.showExportButton)?_c('csv-export-modal',{attrs:{\"modal-id\":_vm.exportModalId,\"export-csv-path\":_vm.exportCsvPath,\"issuable-count\":_vm.issuableCount}}):_vm._e(),_vm._v(\" \"),(_vm.showImportButton)?_c('csv-import-modal',{attrs:{\"modal-id\":_vm.importModalId}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv_export_modal.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!./csv_export_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal, GlSprintf, GlIcon } from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { __, n__ } from '~/locale';\n\nexport default {\n  actionCancel: {\n    text: __('Cancel'),\n  },\n  i18n: {\n    exportText: __(\n      'The CSV export will be created in the background. Once finished, it will be sent to %{email} in an attachment.',\n    ),\n  },\n  components: {\n    GlModal,\n    GlSprintf,\n    GlIcon,\n  },\n  inject: {\n    issuableType: {\n      default: TYPE_ISSUE,\n    },\n    email: {\n      default: '',\n    },\n  },\n  props: {\n    exportCsvPath: {\n      type: String,\n      required: true,\n    },\n    issuableCount: {\n      type: Number,\n      required: true,\n    },\n    modalId: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    actionPrimary() {\n      return {\n        text: this.exportText,\n        attributes: {\n          href: this.exportCsvPath,\n          variant: 'confirm',\n          'data-method': 'post',\n          'data-testid': 'export-issues-button',\n          'data-track-action': 'click_button',\n          'data-track-label': this.dataTrackLabel,\n        },\n      };\n    },\n    isIssue() {\n      return this.issuableType === TYPE_ISSUE;\n    },\n    dataTrackLabel() {\n      return this.isIssue ? 'export_issues_csv' : 'export_merge-requests_csv';\n    },\n    exportText() {\n      return this.isIssue ? __('Export issues') : __('Export merge requests');\n    },\n    issuableCountText() {\n      return this.isIssue\n        ? n__('1 issue selected', '%d issues selected', this.issuableCount)\n        : n__('1 merge request selected', '%d merge requests selected', this.issuableCount);\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-modal\n    :modal-id=\"modalId\"\n    :action-primary=\"actionPrimary\"\n    :action-cancel=\"$options.actionCancel\"\n    body-class=\"!gl-p-0\"\n    :title=\"exportText\"\n    data-testid=\"export-issuable-modal\"\n  >\n    <div\n      class=\"gl-items-center gl-justify-start gl-border-1 gl-border-subtle gl-p-4 gl-border-b-solid\"\n    >\n      <gl-icon name=\"check\" class=\"gl-color-green-400\" />\n      <strong class=\"gl-m-3\">{{ issuableCountText }}</strong>\n    </div>\n    <div class=\"modal-text gl-px-4 gl-py-5\">\n      <gl-sprintf :message=\"$options.i18n.exportText\">\n        <template #email>\n          <strong>{{ email }}</strong>\n        </template>\n      </gl-sprintf>\n    </div>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./csv_export_modal.vue?vue&type=template&id=2ea547ee\"\nimport script from \"./csv_export_modal.vue?vue&type=script&lang=js\"\nexport * from \"./csv_export_modal.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-modal',{attrs:{\"modal-id\":_vm.modalId,\"action-primary\":_vm.actionPrimary,\"action-cancel\":_vm.$options.actionCancel,\"body-class\":\"!gl-p-0\",\"title\":_vm.exportText,\"data-testid\":\"export-issuable-modal\"}},[_c('div',{staticClass:\"gl-items-center gl-justify-start gl-border-1 gl-border-subtle gl-p-4 gl-border-b-solid\"},[_c('gl-icon',{staticClass:\"gl-color-green-400\",attrs:{\"name\":\"check\"}}),_vm._v(\" \"),_c('strong',{staticClass:\"gl-m-3\"},[_vm._v(_vm._s(_vm.issuableCountText))])],1),_vm._v(\" \"),_c('div',{staticClass:\"modal-text gl-px-4 gl-py-5\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.exportText},scopedSlots:_vm._u([{key:\"email\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.email))])]},proxy:true}])})],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!./csv_import_modal.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!./csv_import_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal, GlFormGroup } from '@gitlab/ui';\nimport csrf from '~/lib/utils/csrf';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n  i18n: {\n    maximumFileSizeText: __('The maximum file size allowed is %{size}.'),\n    importIssuesText: __('Import issues'),\n    uploadCsvFileText: __('Upload CSV file'),\n    mainText: __(\n      \"Your issues will be imported in the background. Once finished, you'll get a confirmation email.\",\n    ),\n    helpText: __(\n      'It must have a header row and at least two columns: the first column is the issue title and the second column is the issue description. The separator is automatically detected.',\n    ),\n  },\n  actionPrimary: {\n    text: __('Import issues'),\n  },\n  actionCancel: {\n    text: __('Cancel'),\n  },\n  components: {\n    GlModal,\n    GlFormGroup,\n  },\n  inject: {\n    importCsvIssuesPath: {\n      default: '',\n    },\n    maxAttachmentSize: {\n      default: 0,\n    },\n  },\n  props: {\n    modalId: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    maxFileSizeText() {\n      return sprintf(this.$options.i18n.maximumFileSizeText, { size: this.maxAttachmentSize });\n    },\n  },\n  methods: {\n    submitForm() {\n      this.$refs.form.submit();\n    },\n  },\n  csrf,\n};\n</script>\n\n<template>\n  <gl-modal\n    :modal-id=\"modalId\"\n    :title=\"$options.i18n.importIssuesText\"\n    :action-primary=\"$options.actionPrimary\"\n    :action-cancel=\"$options.actionCancel\"\n    @primary=\"submitForm\"\n  >\n    <form ref=\"form\" :action=\"importCsvIssuesPath\" enctype=\"multipart/form-data\" method=\"post\">\n      <input :value=\"$options.csrf.token\" type=\"hidden\" name=\"authenticity_token\" />\n      <p>{{ $options.i18n.mainText }}</p>\n      <gl-form-group :label=\"$options.i18n.uploadCsvFileText\" class=\"gl-truncate\" label-for=\"file\">\n        <input id=\"file\" type=\"file\" name=\"file\" accept=\".csv,text/csv\" />\n      </gl-form-group>\n      <p class=\"gl-text-subtle\">\n        {{ $options.i18n.helpText }}\n        {{ maxFileSizeText }}\n      </p>\n    </form>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./csv_import_modal.vue?vue&type=template&id=4596ece7\"\nimport script from \"./csv_import_modal.vue?vue&type=script&lang=js\"\nexport * from \"./csv_import_modal.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-modal',{attrs:{\"modal-id\":_vm.modalId,\"title\":_vm.$options.i18n.importIssuesText,\"action-primary\":_vm.$options.actionPrimary,\"action-cancel\":_vm.$options.actionCancel},on:{\"primary\":_vm.submitForm}},[_c('form',{ref:\"form\",attrs:{\"action\":_vm.importCsvIssuesPath,\"enctype\":\"multipart/form-data\",\"method\":\"post\"}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"authenticity_token\"},domProps:{\"value\":_vm.$options.csrf.token}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$options.i18n.mainText))]),_vm._v(\" \"),_c('gl-form-group',{staticClass:\"gl-truncate\",attrs:{\"label\":_vm.$options.i18n.uploadCsvFileText,\"label-for\":\"file\"}},[_c('input',{attrs:{\"id\":\"file\",\"type\":\"file\",\"name\":\"file\",\"accept\":\".csv,text/csv\"}})]),_vm._v(\" \"),_c('p',{staticClass:\"gl-text-subtle\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.helpText)+\"\\n      \"+_vm._s(_vm.maxFileSizeText)+\"\\n    \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv_import_export_buttons.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!./csv_import_export_buttons.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdownItem, GlModalDirective } from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { __ } from '~/locale';\nimport CsvExportModal from './csv_export_modal.vue';\nimport CsvImportModal from './csv_import_modal.vue';\n\nexport default {\n  components: {\n    GlDisclosureDropdownItem,\n    CsvExportModal,\n    CsvImportModal,\n  },\n  directives: {\n    GlModal: GlModalDirective,\n  },\n  inject: {\n    issuableType: {\n      default: TYPE_ISSUE,\n    },\n    showExportButton: {\n      default: false,\n    },\n    showImportButton: {\n      default: false,\n    },\n    canEdit: {\n      default: false,\n    },\n    projectImportJiraPath: {\n      default: null,\n    },\n  },\n  props: {\n    exportCsvPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issuableCount: {\n      type: Number,\n      required: false,\n      default: undefined,\n    },\n    trackImportClick: {\n      type: Boolean,\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      dropdownItems: {\n        exportAsCSV: {\n          text: __('Export as CSV'),\n        },\n        importCSV: {\n          text: __('Import CSV'),\n        },\n        importFromJIRA: {\n          text: __('Import from Jira'),\n          href: this.projectImportJiraPath,\n        },\n      },\n    };\n  },\n  computed: {\n    exportModalId() {\n      return `${this.issuableType}-export-modal`;\n    },\n    importModalId() {\n      return `${this.issuableType}-import-modal`;\n    },\n  },\n};\n</script>\n\n<template>\n  <ul class=\"gl-contents\">\n    <gl-disclosure-dropdown-item\n      v-if=\"showExportButton\"\n      v-gl-modal=\"exportModalId\"\n      data-testid=\"export-as-csv-button\"\n      :item=\"dropdownItems.exportAsCSV\"\n    />\n    <gl-disclosure-dropdown-item\n      v-if=\"showImportButton\"\n      v-gl-modal=\"importModalId\"\n      data-testid=\"import-from-csv-button\"\n      :item=\"dropdownItems.importCSV\"\n    />\n    <gl-disclosure-dropdown-item\n      v-if=\"showImportButton && canEdit\"\n      data-testid=\"import-from-jira-link\"\n      :item=\"dropdownItems.importFromJIRA\"\n    />\n\n    <csv-export-modal\n      v-if=\"showExportButton\"\n      :modal-id=\"exportModalId\"\n      :export-csv-path=\"exportCsvPath\"\n      :issuable-count=\"issuableCount\"\n    />\n    <csv-import-modal v-if=\"showImportButton\" :modal-id=\"importModalId\" />\n  </ul>\n</template>\n","import { render, staticRenderFns } from \"./csv_import_export_buttons.vue?vue&type=template&id=124754d4\"\nimport script from \"./csv_import_export_buttons.vue?vue&type=script&lang=js\"\nexport * from \"./csv_import_export_buttons.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 * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n","export const ENABLE_BATCH_COMMENTS = 'ENABLE_BATCH_COMMENTS';\nexport const ADD_NEW_DRAFT = 'ADD_NEW_DRAFT';\nexport const DELETE_DRAFT = 'DELETE_DRAFT';\nexport const SET_BATCH_COMMENTS_DRAFTS = 'SET_BATCH_COMMENTS_DRAFTS';\n\nexport const REQUEST_PUBLISH_DRAFT = 'REQUEST_PUBLISH_DRAFT';\nexport const RECEIVE_PUBLISH_DRAFT_SUCCESS = 'RECEIVE_PUBLISH_DRAFT_SUCCESS';\nexport const RECEIVE_PUBLISH_DRAFT_ERROR = 'RECEIVE_PUBLISH_DRAFT_ERROR';\n\nexport const REQUEST_PUBLISH_REVIEW = 'REQUEST_PUBLISH_REVIEW';\nexport const RECEIVE_PUBLISH_REVIEW_SUCCESS = 'RECEIVE_PUBLISH_REVIEW_SUCCESS';\nexport const RECEIVE_PUBLISH_REVIEW_ERROR = 'RECEIVE_PUBLISH_REVIEW_ERROR';\n\nexport const RECEIVE_DRAFT_UPDATE_SUCCESS = 'RECEIVE_DRAFT_UPDATE_SUCCESS';\n\nexport const TOGGLE_RESOLVE_DISCUSSION = 'TOGGLE_RESOLVE_DISCUSSION';\n\nexport const CLEAR_DRAFTS = 'CLEAR_DRAFTS';\n\nexport const SET_REVIEW_BAR_RENDERED = 'SET_REVIEW_BAR_RENDERED';\n\nexport const SET_DRAFT_EDITING = 'SET_DRAFT_EDITING';\n","import { extend } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as props$1, BTd } from './td';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(props$1, NAME_TH);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTh = /*#__PURE__*/extend({\n  name: NAME_TH,\n  extends: BTd,\n  props,\n  computed: {\n    tag() {\n      return 'th';\n    }\n  }\n});\n\nexport { BTh, props };\n","// Zen Mode (full screen) textarea\n//\n/*= provides zen_mode:enter */\n/*= provides zen_mode:leave */\n\nimport autosize from 'autosize';\nimport Dropzone from 'dropzone';\nimport $ from 'jquery';\nimport { Mousetrap } from '~/lib/mousetrap';\nimport 'mousetrap/plugins/pause/mousetrap-pause';\nimport { scrollToElement } from '~/lib/utils/common_utils';\n\nDropzone.autoDiscover = false;\n\n//\n// ### Events\n//\n// `zen_mode:enter`\n//\n// Fired when the \"Edit in fullscreen\" link is clicked.\n//\n// **Synchronicity** Sync\n// **Bubbles** Yes\n// **Cancelable** No\n// **Target** a.js-zen-enter\n//\n// `zen_mode:leave`\n//\n// Fired when the \"Leave Fullscreen\" link is clicked.\n//\n// **Synchronicity** Sync\n// **Bubbles** Yes\n// **Cancelable** No\n// **Target** a.js-zen-leave\n//\n\nexport default class ZenMode {\n  constructor() {\n    this.active_backdrop = null;\n    this.active_textarea = null;\n    this.storedStyle = null;\n    $(document).on('click', '.js-zen-enter', (e) => {\n      e.preventDefault();\n      return $(e.currentTarget).trigger('zen_mode:enter');\n    });\n    $(document).on('click', '.js-zen-leave', (e) => {\n      e.preventDefault();\n      return $(e.currentTarget).trigger('zen_mode:leave');\n    });\n    $(document).on('zen_mode:enter', (e) => {\n      this.enter($(e.target).closest('.md-area').find('.zen-backdrop'));\n    });\n    $(document).on('zen_mode:leave', () => {\n      this.exit();\n    });\n    // eslint-disable-next-line consistent-return\n    $(document).on('keydown', (e) => {\n      // Esc\n      if (e.keyCode === 27) {\n        e.preventDefault();\n        return $(document).trigger('zen_mode:leave');\n      }\n    });\n  }\n\n  enter(backdrop) {\n    Mousetrap.pause();\n    this.active_backdrop = $(backdrop);\n    this.active_backdrop.addClass('fullscreen');\n    this.active_textarea = this.active_backdrop.find('textarea');\n    // Prevent a user-resized textarea from persisting to fullscreen\n    this.storedStyle = this.active_textarea.attr('style');\n    this.active_textarea.removeAttr('style');\n    this.active_textarea.focus();\n  }\n\n  exit() {\n    if (this.active_textarea) {\n      Mousetrap.unpause();\n      this.active_textarea.closest('.zen-backdrop').removeClass('fullscreen');\n      scrollToElement(this.active_textarea, { duration: 0, offset: -100 });\n      this.active_textarea.attr('style', this.storedStyle);\n\n      autosize(this.active_textarea);\n      autosize.update(this.active_textarea);\n\n      this.active_textarea = null;\n      this.active_backdrop = null;\n\n      const $dropzone = $('.div-dropzone');\n      if ($dropzone && !$dropzone.hasClass('js-invalid-dropzone')) {\n        Dropzone.forElement('.div-dropzone').enable();\n      }\n    }\n  }\n}\n","var baseIteratee = require('./_baseIteratee'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"epicAncestors\"},\"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\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"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\":\"epic\"},\"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\":\"ancestors\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasParent\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"url\"},\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":289}};\n    doc.loc.source = {\"body\":\"query epicAncestors($fullPath: ID!, $iid: ID) {\\n  workspace: group(fullPath: $fullPath) {\\n    id\\n    issuable: epic(iid: $iid) {\\n      id\\n      ancestors {\\n        nodes {\\n          id\\n          title\\n          state\\n          hasParent\\n          url: webUrl\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"epicAncestors\"] = oneQuery(doc, \"epicAncestors\");\n        \n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  POSIX_REGEX_SOURCE,\n  REGEX_NON_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_BACKREF,\n  REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n  if (typeof options.expandRange === 'function') {\n    return options.expandRange(...args, options);\n  }\n\n  args.sort();\n  const value = `[${args.join('-')}]`;\n\n  try {\n    /* eslint-disable-next-line no-new */\n    new RegExp(value);\n  } catch (ex) {\n    return args.map(v => utils.escapeRegex(v)).join('..');\n  }\n\n  return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  input = REPLACEMENTS[input] || input;\n\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n  let len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n  const tokens = [bos];\n\n  const capture = opts.capture ? '' : '?:';\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const PLATFORM_CHARS = constants.globChars(win32);\n  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n  const {\n    DOT_LITERAL,\n    PLUS_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOT_SLASH,\n    NO_DOTS_SLASH,\n    QMARK,\n    QMARK_NO_DOT,\n    STAR,\n    START_ANCHOR\n  } = PLATFORM_CHARS;\n\n  const globstar = opts => {\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const nodot = opts.dot ? '' : NO_DOT;\n  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n  let star = opts.bash === true ? globstar(opts) : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  // minimatch options support\n  if (typeof opts.noext === 'boolean') {\n    opts.noextglob = opts.noext;\n  }\n\n  const state = {\n    input,\n    index: -1,\n    start: 0,\n    dot: opts.dot === true,\n    consumed: '',\n    output: '',\n    prefix: '',\n    backtrack: false,\n    negated: false,\n    brackets: 0,\n    braces: 0,\n    parens: 0,\n    quotes: 0,\n    globstar: false,\n    tokens\n  };\n\n  input = utils.removePrefix(input, state);\n  len = input.length;\n\n  const extglobs = [];\n  const braces = [];\n  const stack = [];\n  let prev = bos;\n  let value;\n\n  /**\n   * Tokenizing helpers\n   */\n\n  const eos = () => state.index === len - 1;\n  const peek = state.peek = (n = 1) => input[state.index + n];\n  const advance = state.advance = () => input[++state.index] || '';\n  const remaining = () => input.slice(state.index + 1);\n  const consume = (value = '', num = 0) => {\n    state.consumed += value;\n    state.index += num;\n  };\n\n  const append = token => {\n    state.output += token.output != null ? token.output : token.value;\n    consume(token.value);\n  };\n\n  const negate = () => {\n    let count = 1;\n\n    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n      advance();\n      state.start++;\n      count++;\n    }\n\n    if (count % 2 === 0) {\n      return false;\n    }\n\n    state.negated = true;\n    state.start++;\n    return true;\n  };\n\n  const increment = type => {\n    state[type]++;\n    stack.push(type);\n  };\n\n  const decrement = type => {\n    state[type]--;\n    stack.pop();\n  };\n\n  /**\n   * Push tokens onto the tokens array. This helper speeds up\n   * tokenizing by 1) helping us avoid backtracking as much as possible,\n   * and 2) helping us avoid creating extra tokens when consecutive\n   * characters are plain text. This improves performance and simplifies\n   * lookbehinds.\n   */\n\n  const push = tok => {\n    if (prev.type === 'globstar') {\n      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n        state.output = state.output.slice(0, -prev.output.length);\n        prev.type = 'star';\n        prev.value = '*';\n        prev.output = star;\n        state.output += prev.output;\n      }\n    }\n\n    if (extglobs.length && tok.type !== 'paren') {\n      extglobs[extglobs.length - 1].inner += tok.value;\n    }\n\n    if (tok.value || tok.output) append(tok);\n    if (prev && prev.type === 'text' && tok.type === 'text') {\n      prev.value += tok.value;\n      prev.output = (prev.output || '') + tok.value;\n      return;\n    }\n\n    tok.prev = prev;\n    tokens.push(tok);\n    prev = tok;\n  };\n\n  const extglobOpen = (type, value) => {\n    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n    token.prev = prev;\n    token.parens = state.parens;\n    token.output = state.output;\n    const output = (opts.capture ? '(' : '') + token.open;\n\n    increment('parens');\n    push({ type, value, output: state.output ? '' : ONE_CHAR });\n    push({ type: 'paren', extglob: true, value: advance(), output });\n    extglobs.push(token);\n  };\n\n  const extglobClose = token => {\n    let output = token.close + (opts.capture ? ')' : '');\n    let rest;\n\n    if (token.type === 'negate') {\n      let extglobStar = star;\n\n      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n        extglobStar = globstar(opts);\n      }\n\n      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n        output = token.close = `)$))${extglobStar}`;\n      }\n\n      if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n        // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n        // In this case, we need to parse the string and use it in the output of the original pattern.\n        // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n        //\n        // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n        const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n        output = token.close = `)${expression})${extglobStar})`;\n      }\n\n      if (token.prev.type === 'bos') {\n        state.negatedExtglob = true;\n      }\n    }\n\n    push({ type: 'paren', extglob: true, value, output });\n    decrement('parens');\n  };\n\n  /**\n   * Fast paths\n   */\n\n  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n    let backslashes = false;\n\n    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n      if (first === '\\\\') {\n        backslashes = true;\n        return m;\n      }\n\n      if (first === '?') {\n        if (esc) {\n          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        if (index === 0) {\n          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        return QMARK.repeat(chars.length);\n      }\n\n      if (first === '.') {\n        return DOT_LITERAL.repeat(chars.length);\n      }\n\n      if (first === '*') {\n        if (esc) {\n          return esc + first + (rest ? star : '');\n        }\n        return star;\n      }\n      return esc ? m : `\\\\${m}`;\n    });\n\n    if (backslashes === true) {\n      if (opts.unescape === true) {\n        output = output.replace(/\\\\/g, '');\n      } else {\n        output = output.replace(/\\\\+/g, m => {\n          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n        });\n      }\n    }\n\n    if (output === input && opts.contains === true) {\n      state.output = input;\n      return state;\n    }\n\n    state.output = utils.wrapOutput(output, state, options);\n    return state;\n  }\n\n  /**\n   * Tokenize input until we reach end-of-string\n   */\n\n  while (!eos()) {\n    value = advance();\n\n    if (value === '\\u0000') {\n      continue;\n    }\n\n    /**\n     * Escaped characters\n     */\n\n    if (value === '\\\\') {\n      const next = peek();\n\n      if (next === '/' && opts.bash !== true) {\n        continue;\n      }\n\n      if (next === '.' || next === ';') {\n        continue;\n      }\n\n      if (!next) {\n        value += '\\\\';\n        push({ type: 'text', value });\n        continue;\n      }\n\n      // collapse slashes to reduce potential for exploits\n      const match = /^\\\\+/.exec(remaining());\n      let slashes = 0;\n\n      if (match && match[0].length > 2) {\n        slashes = match[0].length;\n        state.index += slashes;\n        if (slashes % 2 !== 0) {\n          value += '\\\\';\n        }\n      }\n\n      if (opts.unescape === true) {\n        value = advance();\n      } else {\n        value += advance();\n      }\n\n      if (state.brackets === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n    }\n\n    /**\n     * If we're inside a regex character class, continue\n     * until we reach the closing bracket.\n     */\n\n    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n      if (opts.posix !== false && value === ':') {\n        const inner = prev.value.slice(1);\n        if (inner.includes('[')) {\n          prev.posix = true;\n\n          if (inner.includes(':')) {\n            const idx = prev.value.lastIndexOf('[');\n            const pre = prev.value.slice(0, idx);\n            const rest = prev.value.slice(idx + 2);\n            const posix = POSIX_REGEX_SOURCE[rest];\n            if (posix) {\n              prev.value = pre + posix;\n              state.backtrack = true;\n              advance();\n\n              if (!bos.output && tokens.indexOf(prev) === 1) {\n                bos.output = ONE_CHAR;\n              }\n              continue;\n            }\n          }\n        }\n      }\n\n      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n        value = `\\\\${value}`;\n      }\n\n      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n        value = `\\\\${value}`;\n      }\n\n      if (opts.posix === true && value === '!' && prev.value === '[') {\n        value = '^';\n      }\n\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * If we're inside a quoted string, continue\n     * until we reach the closing double quote.\n     */\n\n    if (state.quotes === 1 && value !== '\"') {\n      value = utils.escapeRegex(value);\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * Double quotes\n     */\n\n    if (value === '\"') {\n      state.quotes = state.quotes === 1 ? 0 : 1;\n      if (opts.keepQuotes === true) {\n        push({ type: 'text', value });\n      }\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === '(') {\n      increment('parens');\n      push({ type: 'paren', value });\n      continue;\n    }\n\n    if (value === ')') {\n      if (state.parens === 0 && opts.strictBrackets === true) {\n        throw new SyntaxError(syntaxError('opening', '('));\n      }\n\n      const extglob = extglobs[extglobs.length - 1];\n      if (extglob && state.parens === extglob.parens + 1) {\n        extglobClose(extglobs.pop());\n        continue;\n      }\n\n      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n      decrement('parens');\n      continue;\n    }\n\n    /**\n     * Square brackets\n     */\n\n    if (value === '[') {\n      if (opts.nobracket === true || !remaining().includes(']')) {\n        if (opts.nobracket !== true && opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('closing', ']'));\n        }\n\n        value = `\\\\${value}`;\n      } else {\n        increment('brackets');\n      }\n\n      push({ type: 'bracket', value });\n      continue;\n    }\n\n    if (value === ']') {\n      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      if (state.brackets === 0) {\n        if (opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('opening', '['));\n        }\n\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      decrement('brackets');\n\n      const prevValue = prev.value.slice(1);\n      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n        value = `/${value}`;\n      }\n\n      prev.value += value;\n      append({ value });\n\n      // when literal brackets are explicitly disabled\n      // assume we should match with a regex character class\n      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n        continue;\n      }\n\n      const escaped = utils.escapeRegex(prev.value);\n      state.output = state.output.slice(0, -prev.value.length);\n\n      // when literal brackets are explicitly enabled\n      // assume we should escape the brackets to match literal characters\n      if (opts.literalBrackets === true) {\n        state.output += escaped;\n        prev.value = escaped;\n        continue;\n      }\n\n      // when the user specifies nothing, try to match both\n      prev.value = `(${capture}${escaped}|${prev.value})`;\n      state.output += prev.value;\n      continue;\n    }\n\n    /**\n     * Braces\n     */\n\n    if (value === '{' && opts.nobrace !== true) {\n      increment('braces');\n\n      const open = {\n        type: 'brace',\n        value,\n        output: '(',\n        outputIndex: state.output.length,\n        tokensIndex: state.tokens.length\n      };\n\n      braces.push(open);\n      push(open);\n      continue;\n    }\n\n    if (value === '}') {\n      const brace = braces[braces.length - 1];\n\n      if (opts.nobrace === true || !brace) {\n        push({ type: 'text', value, output: value });\n        continue;\n      }\n\n      let output = ')';\n\n      if (brace.dots === true) {\n        const arr = tokens.slice();\n        const range = [];\n\n        for (let i = arr.length - 1; i >= 0; i--) {\n          tokens.pop();\n          if (arr[i].type === 'brace') {\n            break;\n          }\n          if (arr[i].type !== 'dots') {\n            range.unshift(arr[i].value);\n          }\n        }\n\n        output = expandRange(range, opts);\n        state.backtrack = true;\n      }\n\n      if (brace.comma !== true && brace.dots !== true) {\n        const out = state.output.slice(0, brace.outputIndex);\n        const toks = state.tokens.slice(brace.tokensIndex);\n        brace.value = brace.output = '\\\\{';\n        value = output = '\\\\}';\n        state.output = out;\n        for (const t of toks) {\n          state.output += (t.output || t.value);\n        }\n      }\n\n      push({ type: 'brace', value, output });\n      decrement('braces');\n      braces.pop();\n      continue;\n    }\n\n    /**\n     * Pipes\n     */\n\n    if (value === '|') {\n      if (extglobs.length > 0) {\n        extglobs[extglobs.length - 1].conditions++;\n      }\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Commas\n     */\n\n    if (value === ',') {\n      let output = value;\n\n      const brace = braces[braces.length - 1];\n      if (brace && stack[stack.length - 1] === 'braces') {\n        brace.comma = true;\n        output = '|';\n      }\n\n      push({ type: 'comma', value, output });\n      continue;\n    }\n\n    /**\n     * Slashes\n     */\n\n    if (value === '/') {\n      // if the beginning of the glob is \"./\", advance the start\n      // to the current index, and don't add the \"./\" characters\n      // to the state. This greatly simplifies lookbehinds when\n      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n      if (prev.type === 'dot' && state.index === state.start + 1) {\n        state.start = state.index + 1;\n        state.consumed = '';\n        state.output = '';\n        tokens.pop();\n        prev = bos; // reset \"prev\" to the first token\n        continue;\n      }\n\n      push({ type: 'slash', value, output: SLASH_LITERAL });\n      continue;\n    }\n\n    /**\n     * Dots\n     */\n\n    if (value === '.') {\n      if (state.braces > 0 && prev.type === 'dot') {\n        if (prev.value === '.') prev.output = DOT_LITERAL;\n        const brace = braces[braces.length - 1];\n        prev.type = 'dots';\n        prev.output += value;\n        prev.value += value;\n        brace.dots = true;\n        continue;\n      }\n\n      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n        push({ type: 'text', value, output: DOT_LITERAL });\n        continue;\n      }\n\n      push({ type: 'dot', value, output: DOT_LITERAL });\n      continue;\n    }\n\n    /**\n     * Question marks\n     */\n\n    if (value === '?') {\n      const isGroup = prev && prev.value === '(';\n      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('qmark', value);\n        continue;\n      }\n\n      if (prev && prev.type === 'paren') {\n        const next = peek();\n        let output = value;\n\n        if (next === '<' && !utils.supportsLookbehinds()) {\n          throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n        }\n\n        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n          output = `\\\\${value}`;\n        }\n\n        push({ type: 'text', value, output });\n        continue;\n      }\n\n      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n        continue;\n      }\n\n      push({ type: 'qmark', value, output: QMARK });\n      continue;\n    }\n\n    /**\n     * Exclamation\n     */\n\n    if (value === '!') {\n      if (opts.noextglob !== true && peek() === '(') {\n        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n          extglobOpen('negate', value);\n          continue;\n        }\n      }\n\n      if (opts.nonegate !== true && state.index === 0) {\n        negate();\n        continue;\n      }\n    }\n\n    /**\n     * Plus\n     */\n\n    if (value === '+') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('plus', value);\n        continue;\n      }\n\n      if ((prev && prev.value === '(') || opts.regex === false) {\n        push({ type: 'plus', value, output: PLUS_LITERAL });\n        continue;\n      }\n\n      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n        push({ type: 'plus', value });\n        continue;\n      }\n\n      push({ type: 'plus', value: PLUS_LITERAL });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value === '@') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        push({ type: 'at', extglob: true, value, output: '' });\n        continue;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value !== '*') {\n      if (value === '$' || value === '^') {\n        value = `\\\\${value}`;\n      }\n\n      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n      if (match) {\n        value += match[0];\n        state.index += match[0].length;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Stars\n     */\n\n    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n      prev.type = 'star';\n      prev.star = true;\n      prev.value += value;\n      prev.output = star;\n      state.backtrack = true;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    let rest = remaining();\n    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n      extglobOpen('star', value);\n      continue;\n    }\n\n    if (prev.type === 'star') {\n      if (opts.noglobstar === true) {\n        consume(value);\n        continue;\n      }\n\n      const prior = prev.prev;\n      const before = prior.prev;\n      const isStart = prior.type === 'slash' || prior.type === 'bos';\n      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      // strip consecutive `/**/`\n      while (rest.slice(0, 3) === '/**') {\n        const after = input[state.index + 4];\n        if (after && after !== '/') {\n          break;\n        }\n        rest = rest.slice(3);\n        consume('/**', 3);\n      }\n\n      if (prior.type === 'bos' && eos()) {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = globstar(opts);\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n        prev.value += value;\n        state.globstar = true;\n        state.output += prior.output + prev.output;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n        const end = rest[1] !== void 0 ? '|$' : '';\n\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n        prev.value += value;\n\n        state.output += prior.output + prev.output;\n        state.globstar = true;\n\n        consume(value + advance());\n\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      if (prior.type === 'bos' && rest[0] === '/') {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value + advance());\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      // remove single star from output\n      state.output = state.output.slice(0, -prev.output.length);\n\n      // reset previous token to globstar\n      prev.type = 'globstar';\n      prev.output = globstar(opts);\n      prev.value += value;\n\n      // reset output with globstar\n      state.output += prev.output;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    const token = { type: 'star', value, output: star };\n\n    if (opts.bash === true) {\n      token.output = '.*?';\n      if (prev.type === 'bos' || prev.type === 'slash') {\n        token.output = nodot + token.output;\n      }\n      push(token);\n      continue;\n    }\n\n    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n      token.output = value;\n      push(token);\n      continue;\n    }\n\n    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n      if (prev.type === 'dot') {\n        state.output += NO_DOT_SLASH;\n        prev.output += NO_DOT_SLASH;\n\n      } else if (opts.dot === true) {\n        state.output += NO_DOTS_SLASH;\n        prev.output += NO_DOTS_SLASH;\n\n      } else {\n        state.output += nodot;\n        prev.output += nodot;\n      }\n\n      if (peek() !== '*') {\n        state.output += ONE_CHAR;\n        prev.output += ONE_CHAR;\n      }\n    }\n\n    push(token);\n  }\n\n  while (state.brackets > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n    state.output = utils.escapeLast(state.output, '[');\n    decrement('brackets');\n  }\n\n  while (state.parens > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n    state.output = utils.escapeLast(state.output, '(');\n    decrement('parens');\n  }\n\n  while (state.braces > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n    state.output = utils.escapeLast(state.output, '{');\n    decrement('braces');\n  }\n\n  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n  }\n\n  // rebuild the output if we had to backtrack at any point\n  if (state.backtrack === true) {\n    state.output = '';\n\n    for (const token of state.tokens) {\n      state.output += token.output != null ? token.output : token.value;\n\n      if (token.suffix) {\n        state.output += token.suffix;\n      }\n    }\n  }\n\n  return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  const len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  input = REPLACEMENTS[input] || input;\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const {\n    DOT_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOTS,\n    NO_DOTS_SLASH,\n    STAR,\n    START_ANCHOR\n  } = constants.globChars(win32);\n\n  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n  const capture = opts.capture ? '' : '?:';\n  const state = { negated: false, prefix: '' };\n  let star = opts.bash === true ? '.*?' : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  const globstar = opts => {\n    if (opts.noglobstar === true) return star;\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const create = str => {\n    switch (str) {\n      case '*':\n        return `${nodot}${ONE_CHAR}${star}`;\n\n      case '.*':\n        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*.*':\n        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*/*':\n        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n      case '**':\n        return nodot + globstar(opts);\n\n      case '**/*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n      case '**/*.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '**/.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      default: {\n        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n        if (!match) return;\n\n        const source = create(match[1]);\n        if (!source) return;\n\n        return source + DOT_LITERAL + match[2];\n      }\n    }\n  };\n\n  const output = utils.removePrefix(input, state);\n  let source = create(output);\n\n  if (source && opts.strictSlashes !== true) {\n    source += `${SLASH_LITERAL}?`;\n  }\n\n  return source;\n};\n\nmodule.exports = parse;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-avatar-link',{staticClass:\"user-avatar-link js-user-link\",attrs:{\"href\":_vm.linkHref,\"data-user-id\":_vm.userId,\"data-username\":_vm.popoverUsername},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('user-avatar-image',{class:_vm.imgCssWrapperClasses,attrs:{\"img-src\":_vm.imgSrc,\"img-alt\":_vm.imgAlt,\"css-classes\":_vm.imgCssClasses,\"size\":_vm.imgSize,\"tooltip-text\":_vm.avatarTooltipText,\"tooltip-placement\":_vm.tooltipPlacement,\"lazy\":_vm.lazy}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.shouldShowUsername)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-1\",attrs:{\"title\":_vm.tooltipText,\"tooltip-placement\":_vm.tooltipPlacement,\"data-testid\":\"user-avatar-link-username\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.username)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"avatar-badge\")],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!./user_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!./user_avatar_link.vue?vue&type=script&lang=js\"","<script>\n/* This is a re-usable vue component for rendering a user avatar wrapped in\n  a clickable link (likely to the user's profile). The link, image, and\n  tooltip can be configured by props passed to this component.\n\n  Sample configuration:\n\n  <user-avatar-link\n    :link-href=\"userProfileUrl\"\n    :img-src=\"userAvatarSrc\"\n    :img-alt=\"tooltipText\"\n    :img-size=\"32\"\n    :tooltip-text=\"tooltipText\"\n    :tooltip-placement=\"top\"\n    :username=\"username\"\n  />\n\n*/\n\nimport { GlAvatarLink, GlTooltipDirective } from '@gitlab/ui';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport UserAvatarImage from './user_avatar_image.vue';\n\nexport default {\n  name: 'UserAvatarLinkNew',\n  components: {\n    UserAvatarImage,\n    GlAvatarLink,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    lazy: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    linkHref: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    imgSrc: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    imgAlt: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    imgCssClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    imgCssWrapperClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    imgSize: {\n      type: [Number, Object],\n      required: true,\n    },\n    tooltipText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top',\n    },\n    popoverUserId: {\n      type: [String, Number],\n      required: false,\n      default: '',\n    },\n    popoverUsername: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    username: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    userId() {\n      return getIdFromGraphQLId(this.popoverUserId);\n    },\n    shouldShowUsername() {\n      return this.username.length > 0;\n    },\n    avatarTooltipText() {\n      // Prevent showing tooltip when popoverUserId is present\n      if (this.popoverUserId) {\n        return '';\n      }\n      return this.shouldShowUsername ? '' : this.tooltipText;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-avatar-link\n    :href=\"linkHref\"\n    :data-user-id=\"userId\"\n    :data-username=\"popoverUsername\"\n    class=\"user-avatar-link js-user-link\"\n    @click.stop\n  >\n    <user-avatar-image\n      :class=\"imgCssWrapperClasses\"\n      :img-src=\"imgSrc\"\n      :img-alt=\"imgAlt\"\n      :css-classes=\"imgCssClasses\"\n      :size=\"imgSize\"\n      :tooltip-text=\"avatarTooltipText\"\n      :tooltip-placement=\"tooltipPlacement\"\n      :lazy=\"lazy\"\n    >\n      <slot></slot>\n    </user-avatar-image>\n\n    <span\n      v-if=\"shouldShowUsername\"\n      v-gl-tooltip\n      :title=\"tooltipText\"\n      :tooltip-placement=\"tooltipPlacement\"\n      class=\"gl-ml-1\"\n      data-testid=\"user-avatar-link-username\"\n    >\n      {{ username }}\n    </span>\n\n    <slot name=\"avatar-badge\"></slot>\n  </gl-avatar-link>\n</template>\n","import { render, staticRenderFns } from \"./user_avatar_link.vue?vue&type=template&id=0c9f1264\"\nimport script from \"./user_avatar_link.vue?vue&type=script&lang=js\"\nexport * from \"./user_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","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!./cve_id_request.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!./cve_id_request.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlIcon, GlTooltipDirective } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState } from 'vuex';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { createCveIdRequestIssueBody } from '~/helpers/cve_id_request_helper';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport { CVE_ID_REQUEST_SIDEBAR_I18N } from '../../constants';\n\nexport default {\n  i18n: {\n    ...CVE_ID_REQUEST_SIDEBAR_I18N,\n  },\n\n  components: {\n    GlButton,\n    GlIcon,\n    HelpIcon,\n  },\n\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n\n  inject: {\n    iid: {\n      required: true,\n      type: String,\n    },\n    fullPath: {\n      required: true,\n      type: String,\n    },\n  },\n\n  data() {\n    return {\n      showHelp: false,\n    };\n  },\n\n  computed: {\n    ...mapState({ confidential: (state) => state.noteableData.confidential }),\n    helpHref() {\n      return helpPagePath('user/application_security/cve_id_request');\n    },\n    showHelpState() {\n      return Boolean(this.showHelp);\n    },\n    tooltipTitle() {\n      return this.$options.i18n.description;\n    },\n    newCveIdRequestUrl() {\n      const currUrl = new URL(window.location.href);\n      const newUrl = new URL(currUrl.origin);\n      newUrl.pathname = '/gitlab-org/cves/-/issues/new';\n\n      const params = {\n        'issue[confidential]': 'true',\n        // eslint-disable-next-line @gitlab/require-i18n-strings\n        'issue[title]': `CVE ID Request - ${this.fullPath}`,\n        'issue[description]': createCveIdRequestIssueBody(this.fullPath, this.iid),\n      };\n      Object.keys(params).forEach((k) => newUrl.searchParams.append(k, params[k]));\n\n      return newUrl.toString();\n    },\n  },\n\n  methods: {\n    toggleHelpState(show) {\n      this.showHelp = show;\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"confidential\" class=\"sidebar-contained-width cve-id-request gl-border-b-0 gl-pb-0\">\n    <div\n      v-gl-tooltip.viewport.left\n      :title=\"tooltipTitle\"\n      class=\"sidebar-collapsed-icon\"\n      data-container=\"body\"\n      data-placement=\"left\"\n      data-boundary=\"viewport\"\n    >\n      <gl-icon name=\"bug\" class=\"sidebar-item-icon is-active\" />\n    </div>\n\n    <div class=\"hide-collapsed\">\n      {{ $options.i18n.action }}\n      <div\n        v-if=\"!showHelpState\"\n        class=\"help-button gl-float-right\"\n        data-testid=\"help-button\"\n        @click=\"toggleHelpState(true)\"\n      >\n        <help-icon />\n      </div>\n      <div\n        v-else\n        class=\"close-help-button gl-float-right\"\n        data-testid=\"close-help-button\"\n        @click=\"toggleHelpState(false)\"\n      >\n        <gl-icon name=\"close\" />\n      </div>\n\n      <div class=\"gl-mt-5\">\n        <gl-button block :href=\"newCveIdRequestUrl\" target=\"_blank\" data-testid=\"request-button\">{{\n          $options.i18n.createRequest\n        }}</gl-button>\n      </div>\n\n      <div class=\"hide-collapsed\">\n        <transition name=\"help-state-toggle\">\n          <div v-if=\"showHelpState\" class=\"cve-id-request-help-state\" data-testid=\"help-state\">\n            <h4>{{ $options.i18n.whyRequest }}</h4>\n            <p>\n              {{ $options.i18n.whyText1 }}\n            </p>\n\n            <p>\n              {{ $options.i18n.whyText2 }}\n            </p>\n\n            <div>\n              <gl-button :href=\"helpHref\" target=\"_blank\">{{ $options.i18n.learnMore }}</gl-button>\n            </div>\n          </div>\n        </transition>\n      </div>\n    </div>\n  </div>\n</template>\n","export function createCveIdRequestIssueBody(fullPath, iid) {\n  return `### Vulnerability Submission\n\n**NOTE:** Only maintainers of GitLab-hosted projects may request a CVE for\na vulnerability within their project.\n\nProject issue: ${fullPath}#${iid}\n\n#### Publishing Schedule\n\nAfter a CVE request is validated, a CVE identifier will be assigned. On what\nschedule should the details of the CVE be published?\n\n* [ ] Publish immediately\n* [ ] Wait to publish\n\n<!--\nPlease fill out the yaml codeblock below\n-->\n\n\\`\\`\\`yaml\nreporter:\n  name: \"TODO\" # \"First Last\"\n  email: \"TODO\" # \"email@domain.tld\"\nvulnerability:\n  description: \"TODO\" # \"[VULNTYPE] in [COMPONENT] in [VENDOR][PRODUCT] [VERSION] allows [ATTACKER] to [IMPACT] via [VECTOR]\"\n  cwe: \"TODO\" # \"CWE-22\" # Path Traversal\n  product:\n    gitlab_path: \"${fullPath}\"\n    vendor: \"TODO\" # \"Deluxe Sandwich Maker Company\"\n    name: \"TODO\" # \"Deluxe Sandwich Maker 2\"\n    affected_versions:\n      - \"TODO\" # \"1.2.3\"\n      - \"TODO\" # \">1.3.0, <=1.3.9\"\n    fixed_versions:\n      - \"TODO\" # \"1.2.4\"\n      - \"TODO\" # \"1.3.10\"\n  impact: \"TODO\" # \"CVSS v3 string\" # https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator\n  solution: \"TODO\" # \"Upgrade to version 1.2.4 or 1.3.10\"\n  credit: \"TODO\"\n  references:\n    - \"TODO\" # \"https://some.domain.tld/a/reference\"\n\\`\\`\\`\n\nCVSS scores can be computed by means of the [NVD CVSS Calculator](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator).\n\n/relate ${fullPath}#${iid}\n/label ~\"devops::secure\" ~\"group::vulnerability research\" ~\"vulnerability research::cve\" ~\"advisory::queued\"\n  `;\n}\n","import { render, staticRenderFns } from \"./cve_id_request.vue?vue&type=template&id=ceceab98\"\nimport script from \"./cve_id_request.vue?vue&type=script&lang=js\"\nexport * from \"./cve_id_request.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.confidential)?_c('div',{staticClass:\"sidebar-contained-width cve-id-request gl-border-b-0 gl-pb-0\"},[_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.tooltipTitle,\"data-container\":\"body\",\"data-placement\":\"left\",\"data-boundary\":\"viewport\"}},[_c('gl-icon',{staticClass:\"sidebar-item-icon is-active\",attrs:{\"name\":\"bug\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.action)+\"\\n    \"),(!_vm.showHelpState)?_c('div',{staticClass:\"help-button gl-float-right\",attrs:{\"data-testid\":\"help-button\"},on:{\"click\":function($event){return _vm.toggleHelpState(true)}}},[_c('help-icon')],1):_c('div',{staticClass:\"close-help-button gl-float-right\",attrs:{\"data-testid\":\"close-help-button\"},on:{\"click\":function($event){return _vm.toggleHelpState(false)}}},[_c('gl-icon',{attrs:{\"name\":\"close\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-5\"},[_c('gl-button',{attrs:{\"block\":\"\",\"href\":_vm.newCveIdRequestUrl,\"target\":\"_blank\",\"data-testid\":\"request-button\"}},[_vm._v(_vm._s(_vm.$options.i18n.createRequest))])],1),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed\"},[_c('transition',{attrs:{\"name\":\"help-state-toggle\"}},[(_vm.showHelpState)?_c('div',{staticClass:\"cve-id-request-help-state\",attrs:{\"data-testid\":\"help-state\"}},[_c('h4',[_vm._v(_vm._s(_vm.$options.i18n.whyRequest))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.whyText1)+\"\\n          \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.whyText2)+\"\\n          \")]),_vm._v(\" \"),_c('div',[_c('gl-button',{attrs:{\"href\":_vm.helpHref,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$options.i18n.learnMore))])],1)]):_vm._e()])],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { debounce } from 'lodash';\nimport IterationTitle from 'ee/iterations/components/iteration_title.vue';\nimport { groupByIterationCadences } from 'ee/iterations/utils';\nimport { STATUS_OPEN } from '~/issues/constants';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { __ } from '~/locale';\nimport { iterationSelectTextMap } from '../../constants';\nimport groupIterationsQuery from '../../queries/group_iterations.query.graphql';\n\nconst NO_ITEMS_ID = 'NO_ITEMS_ID';\n\nexport default {\n  noIteration: { text: iterationSelectTextMap.noIteration, id: NO_ITEMS_ID },\n  components: {\n    GlCollapsibleListbox,\n    IterationTitle,\n  },\n  apollo: {\n    iterations: {\n      query: groupIterationsQuery,\n      debounce: DEFAULT_DEBOUNCE_AND_THROTTLE_MS,\n      variables() {\n        const search = this.searchTerm ? `\"${this.searchTerm}\"` : '';\n\n        return {\n          fullPath: this.fullPath,\n          title: search,\n          state: STATUS_OPEN,\n        };\n      },\n      update(data) {\n        return data.workspace?.attributes?.nodes || [];\n      },\n      skip() {\n        return !this.shouldFetch;\n      },\n    },\n  },\n  inject: ['fullPath'],\n  data() {\n    return {\n      searchTerm: '',\n      iterations: [],\n      currentIteration: null,\n      shouldFetch: false,\n    };\n  },\n  computed: {\n    currentIterationId() {\n      return this.currentIteration?.id;\n    },\n    iterationCadences() {\n      return groupByIterationCadences(this.iterations);\n    },\n    iterationCadencesListBoxItems() {\n      const groups = this.iterationCadences.map((cadence) => ({\n        text: cadence.title,\n        options: cadence.iterations.map(({ id, period, title }) => ({\n          value: id,\n          text: period,\n          title,\n        })),\n      }));\n\n      return [\n        {\n          text: this.$options.noIteration.text,\n          options: [\n            {\n              text: this.$options.noIteration.text,\n              value: this.$options.noIteration.id,\n            },\n          ],\n        },\n        ...groups,\n      ];\n    },\n    dropdownSelectedText() {\n      return this.currentIteration?.period || __('Select iteration');\n    },\n    dropdownHeaderText() {\n      return __('Select Iteration');\n    },\n  },\n  created() {\n    this.handleSearch = debounce(this.setSearchTerm, DEFAULT_DEBOUNCE_AND_THROTTLE_MS);\n  },\n  destroyed() {\n    this.handleSearch.cancel();\n  },\n  methods: {\n    setSearchTerm(val = '') {\n      this.searchTerm = val?.trim();\n    },\n    onClick(iterationId) {\n      this.currentIteration =\n        this.iterationCadences\n          .flatMap((cadence) => cadence.iterations)\n          ?.find(({ id }) => id === iterationId) || this.$options.noIteration;\n\n      this.$emit('onIterationSelect', this.currentIteration);\n    },\n    onDropdownShow() {\n      this.shouldFetch = true;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-collapsible-listbox\n    block\n    is-check-centered\n    searchable\n    toggle-class=\"gl-w-full\"\n    :header-text=\"dropdownHeaderText\"\n    :items=\"iterationCadencesListBoxItems\"\n    :loading=\"$apollo.queries.iterations.loading\"\n    :searching=\"$apollo.queries.iterations.loading\"\n    :selected=\"currentIterationId\"\n    :toggle-text=\"dropdownSelectedText\"\n    @shown=\"onDropdownShow\"\n    @search=\"handleSearch\"\n    @select=\"onClick\"\n  >\n    <template #list-item=\"{ item }\">\n      {{ item.text }}\n      <iteration-title v-if=\"item.title\" :title=\"item.title\" />\n    </template>\n  </gl-collapsible-listbox>\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!./iteration_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!./iteration_dropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./iteration_dropdown.vue?vue&type=template&id=3b5d8732\"\nimport script from \"./iteration_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./iteration_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-collapsible-listbox',{attrs:{\"block\":\"\",\"is-check-centered\":\"\",\"searchable\":\"\",\"toggle-class\":\"gl-w-full\",\"header-text\":_vm.dropdownHeaderText,\"items\":_vm.iterationCadencesListBoxItems,\"loading\":_vm.$apollo.queries.iterations.loading,\"searching\":_vm.$apollo.queries.iterations.loading,\"selected\":_vm.currentIterationId,\"toggle-text\":_vm.dropdownSelectedText},on:{\"shown\":_vm.onDropdownShow,\"search\":_vm.handleSearch,\"select\":_vm.onClick},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_vm._v(\"\\n    \"+_vm._s(item.text)+\"\\n    \"),(item.title)?_c('iteration-title',{attrs:{\"title\":item.title}}):_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!./escalation_policy_help_state.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!./escalation_policy_help_state.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { i18nHelpText } from '../../constants';\n\nexport default {\n  POLICIES_PATH: helpPagePath('operations/incident_management/escalation_policies.md'),\n  i18n: i18nHelpText,\n  components: {\n    GlButton,\n  },\n};\n</script>\n\n<template>\n  <transition name=\"help-state-toggle\">\n    <div\n      class=\"sidebar-help-state gl-border-1 gl-border-default gl-bg-white gl-border-b-solid gl-border-t-solid\"\n    >\n      <div>\n        <h4>{{ $options.i18n.title }}</h4>\n        <p>{{ $options.i18n.detail }}</p>\n        <gl-button :href=\"$options.POLICIES_PATH\">{{ $options.i18n.linkText }}</gl-button>\n      </div>\n    </div>\n  </transition>\n</template>\n","import { render, staticRenderFns } from \"./escalation_policy_help_state.vue?vue&type=template&id=a17b26a4\"\nimport script from \"./escalation_policy_help_state.vue?vue&type=script&lang=js\"\nexport * from \"./escalation_policy_help_state.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('transition',{attrs:{\"name\":\"help-state-toggle\"}},[_c('div',{staticClass:\"sidebar-help-state gl-border-1 gl-border-default gl-bg-white gl-border-b-solid gl-border-t-solid\"},[_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$options.i18n.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$options.i18n.detail))]),_vm._v(\" \"),_c('gl-button',{attrs:{\"href\":_vm.$options.POLICIES_PATH}},[_vm._v(_vm._s(_vm.$options.i18n.linkText))])],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!./escalation_policy_collapsed_state.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!./escalation_policy_collapsed_state.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { i18nPolicyText } from '../../constants';\n\nexport default {\n  i18n: i18nPolicyText,\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlIcon,\n  },\n  props: {\n    value: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    policyText() {\n      return this.value ? this.$options.i18n.paged : this.$options.i18n.none;\n    },\n    tooltipText() {\n      const policyName = this.value || this.$options.i18n.none;\n\n      return `${this.$options.i18n.title}: ${policyName}`;\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    v-gl-tooltip.left.viewport\n    :title=\"tooltipText\"\n    class=\"sidebar-collapsed-icon\"\n    data-testid=\"sidebar-collapsed-attribute-title\"\n  >\n    <gl-icon :aria-label=\"$options.i18n.title\" name=\"mobile\" />\n    <span class=\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\">\n      {{ policyText }}\n    </span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./escalation_policy_collapsed_state.vue?vue&type=template&id=5fef5902\"\nimport script from \"./escalation_policy_collapsed_state.vue?vue&type=script&lang=js\"\nexport * from \"./escalation_policy_collapsed_state.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',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.tooltipText,\"data-testid\":\"sidebar-collapsed-attribute-title\"}},[_c('gl-icon',{attrs:{\"aria-label\":_vm.$options.i18n.title,\"name\":\"mobile\"}}),_vm._v(\" \"),_c('span',{staticClass:\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(\"\\n    \"+_vm._s(_vm.policyText)+\"\\n  \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./escalation_policies_empty_state.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!./escalation_policies_empty_state.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { i18nPolicyText } from '../../constants';\nimport EscalationPolicyHelpState from './escalation_policy_help_state.vue';\nimport EscalationPolicyCollapsedState from './escalation_policy_collapsed_state.vue';\n\nexport default {\n  i18n: i18nPolicyText,\n  components: {\n    GlButton,\n    EscalationPolicyCollapsedState,\n    EscalationPolicyHelpState,\n  },\n  data() {\n    return {\n      showHelp: false,\n    };\n  },\n  methods: {\n    toggleHelpState() {\n      this.showHelp = !this.showHelp;\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"escalation-policy-edit\">\n    <div class=\"hide-collapsed sidebar-help-wrap\">\n      <div class=\"gl-line-height-2 gl-mb-2 gl-flex gl-items-center gl-font-bold gl-text-default\">\n        <span>{{ $options.i18n.title }}</span>\n        <gl-button\n          :data-testid=\"showHelp ? 'close-help-button' : 'help-button'\"\n          category=\"tertiary\"\n          :icon=\"showHelp ? 'close' : 'question-o'\"\n          size=\"small\"\n          variant=\"link\"\n          class=\"gl-ml-auto\"\n          @click=\"toggleHelpState\"\n        />\n      </div>\n\n      <div data-testid=\"select-escalation-policy\" class=\"hide-collapsed gl-leading-1\">\n        <span class=\"gl-text-subtle\">\n          {{ $options.i18n.none }}\n        </span>\n      </div>\n\n      <escalation-policy-help-state v-if=\"showHelp\" />\n    </div>\n\n    <escalation-policy-collapsed-state />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./escalation_policies_empty_state.vue?vue&type=template&id=4fd87dea\"\nimport script from \"./escalation_policies_empty_state.vue?vue&type=script&lang=js\"\nexport * from \"./escalation_policies_empty_state.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',{attrs:{\"data-testid\":\"escalation-policy-edit\"}},[_c('div',{staticClass:\"hide-collapsed sidebar-help-wrap\"},[_c('div',{staticClass:\"gl-line-height-2 gl-mb-2 gl-flex gl-items-center gl-font-bold gl-text-default\"},[_c('span',[_vm._v(_vm._s(_vm.$options.i18n.title))]),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-ml-auto\",attrs:{\"data-testid\":_vm.showHelp ? 'close-help-button' : 'help-button',\"category\":\"tertiary\",\"icon\":_vm.showHelp ? 'close' : 'question-o',\"size\":\"small\",\"variant\":\"link\"},on:{\"click\":_vm.toggleHelpState}})],1),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed gl-leading-1\",attrs:{\"data-testid\":\"select-escalation-policy\"}},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.none)+\"\\n      \")])]),_vm._v(\" \"),(_vm.showHelp)?_c('escalation-policy-help-state'):_vm._e()],1),_vm._v(\" \"),_c('escalation-policy-collapsed-state')],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!./sidebar_escalation_policy.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_escalation_policy.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink } from '@gitlab/ui';\nimport { joinPaths } from '~/lib/utils/url_utility';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { IssuableAttributeType } from '../../constants';\nimport SidebarDropdownWidget from '../sidebar_dropdown_widget.vue';\nimport EscalationPoliciesEmptyState from './escalation_policies_empty_state.vue';\nimport EscalationPolicyCollapsedState from './escalation_policy_collapsed_state.vue';\n\nexport default {\n  INDEX_PATH: '-/escalation_policies',\n  components: {\n    SidebarDropdownWidget,\n    EscalationPolicyCollapsedState,\n    GlLink,\n    EscalationPoliciesEmptyState,\n  },\n  props: {\n    projectPath: {\n      required: true,\n      type: String,\n    },\n    iid: {\n      required: true,\n      type: String,\n    },\n    escalationsPossible: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    issueId: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    policiesPath() {\n      return joinPaths(gon.relative_url_root || '/', this.projectPath, this.$options.INDEX_PATH);\n    },\n  },\n  created() {\n    this.issuableType = TYPE_ISSUE;\n    this.issuableAttribute = IssuableAttributeType.EscalationPolicy;\n  },\n};\n</script>\n\n<template>\n  <sidebar-dropdown-widget\n    v-if=\"escalationsPossible\"\n    :attr-workspace-path=\"projectPath\"\n    :workspace-path=\"projectPath\"\n    :iid=\"iid\"\n    :issuable-type=\"issuableType\"\n    :issue-id=\"issueId\"\n    :issuable-attribute=\"issuableAttribute\"\n  >\n    <template #value-collapsed=\"{ currentAttribute }\">\n      <escalation-policy-collapsed-state :value=\"currentAttribute && currentAttribute.title\" />\n    </template>\n\n    <template #value=\"{ attributeTitle }\">\n      <gl-link class=\"gl-font-bold !gl-text-default\" :href=\"policiesPath\">\n        {{ attributeTitle }}\n      </gl-link>\n    </template>\n  </sidebar-dropdown-widget>\n\n  <escalation-policies-empty-state v-else />\n</template>\n","import { render, staticRenderFns } from \"./sidebar_escalation_policy.vue?vue&type=template&id=483fe81d\"\nimport script from \"./sidebar_escalation_policy.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_escalation_policy.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.escalationsPossible)?_c('sidebar-dropdown-widget',{attrs:{\"attr-workspace-path\":_vm.projectPath,\"workspace-path\":_vm.projectPath,\"iid\":_vm.iid,\"issuable-type\":_vm.issuableType,\"issue-id\":_vm.issueId,\"issuable-attribute\":_vm.issuableAttribute},scopedSlots:_vm._u([{key:\"value-collapsed\",fn:function({ currentAttribute }){return [_c('escalation-policy-collapsed-state',{attrs:{\"value\":currentAttribute && currentAttribute.title}})]}},{key:\"value\",fn:function({ attributeTitle }){return [_c('gl-link',{staticClass:\"gl-font-bold !gl-text-default\",attrs:{\"href\":_vm.policiesPath}},[_vm._v(\"\\n      \"+_vm._s(attributeTitle)+\"\\n    \")])]}}],null,false,359306193)}):_c('escalation-policies-empty-state')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport { apolloProvider } from '~/graphql_shared/issuable_client';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport createDefaultClient from '~/lib/graphql';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport SidebarDropdown from '~/sidebar/components/sidebar_dropdown.vue';\nimport * as CEMountSidebar from '~/sidebar/mount_sidebar';\nimport CveIdRequest from './components/cve_id_request/cve_id_request.vue';\nimport IterationDropdown from './components/iteration/iteration_dropdown.vue';\nimport SidebarIterationWidget from './components/iteration/sidebar_iteration_widget.vue';\nimport SidebarDropdownWidget from './components/sidebar_dropdown_widget.vue';\nimport HealthStatusDropdown from './components/health_status/health_status_dropdown.vue';\nimport SidebarHealthStatusWidget from './components/health_status/sidebar_health_status_widget.vue';\nimport SidebarWeightWidget from './components/weight/sidebar_weight_widget.vue';\nimport SidebarEscalationPolicy from './components/incidents/sidebar_escalation_policy.vue';\nimport {\n  healthStatusForRestApi,\n  IssuableAttributeType,\n  noEpic,\n  placeholderEpic,\n} from './constants';\n\nVue.use(VueApollo);\n\nconst mountSidebarWeightWidget = () => {\n  const el = document.querySelector('.js-sidebar-weight-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { canEdit, projectPath, issueIid } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarWeightWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(canEdit),\n      isClassicSidebar: true,\n    },\n    render: (createElement) =>\n      createElement(SidebarWeightWidget, {\n        props: {\n          fullPath: projectPath,\n          iid: issueIid,\n          issuableType: TYPE_ISSUE,\n        },\n      }),\n  });\n};\n\nconst mountSidebarHealthStatusWidget = () => {\n  const el = document.querySelector('.js-sidebar-health-status-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { iid, fullPath, issuableType, canEdit } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarHealthStatusWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(canEdit),\n    },\n    render: (createElement) =>\n      createElement(SidebarHealthStatusWidget, {\n        props: {\n          fullPath,\n          iid,\n          issuableType,\n        },\n      }),\n  });\n};\n\nexport function mountHealthStatusDropdown() {\n  const el = document.querySelector('.js-health-status-dropdown-root');\n  const healthStatusFormInput = document.getElementById('issue_health_status_value');\n\n  if (!el || !healthStatusFormInput) {\n    return null;\n  }\n\n  return new Vue({\n    el,\n    name: 'HealthStatusDropdownRoot',\n    data() {\n      return {\n        healthStatus: undefined,\n      };\n    },\n    methods: {\n      handleChange(healthStatus) {\n        this.healthStatus = healthStatus;\n        healthStatusFormInput.setAttribute(\n          'value',\n          healthStatusForRestApi[healthStatus || 'NO_STATUS'],\n        );\n      },\n    },\n    render(createElement) {\n      return createElement(HealthStatusDropdown, {\n        props: {\n          healthStatus: this.healthStatus,\n        },\n        on: {\n          change: this.handleChange.bind(this),\n        },\n      });\n    },\n  });\n}\n\nfunction mountSidebarCveIdRequest(store) {\n  const el = document.querySelector('.js-sidebar-cve-id-request-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { iid, fullPath } = CEMountSidebar.getSidebarOptions();\n\n  return new Vue({\n    store,\n    el,\n    name: 'SidebarCveIdRequestRoot',\n    provide: {\n      iid: String(iid),\n      fullPath,\n    },\n    render: (createElement) => createElement(CveIdRequest),\n  });\n}\n\nfunction mountSidebarEpicWidget() {\n  const el = document.querySelector('.js-sidebar-epic-widget-root');\n  const workItemEpics = window.gon?.features?.workItemEpics;\n\n  if (!el) {\n    return null;\n  }\n\n  const { groupPath, canEdit, projectPath, issueIid, issueId } = el.dataset;\n  return new Vue({\n    el,\n    name: 'SidebarEpicWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(canEdit),\n      isClassicSidebar: true,\n    },\n    render: (createElement) =>\n      createElement(SidebarDropdownWidget, {\n        props: {\n          attrWorkspacePath: groupPath,\n          workspacePath: projectPath,\n          iid: issueIid,\n          issueId,\n          issuableType: TYPE_ISSUE,\n          issuableAttribute: IssuableAttributeType.Epic,\n          showWorkItemEpics: workItemEpics,\n        },\n      }),\n  });\n}\n\nexport function mountEpicDropdown() {\n  const el = document.querySelector('.js-epic-dropdown-root');\n  const epicFormInput = document.getElementById('issue_epic_id');\n\n  if (!el || !epicFormInput) {\n    return null;\n  }\n\n  Vue.use(VueApollo);\n\n  return new Vue({\n    el,\n    name: 'EpicDropdownRoot',\n    apolloProvider: new VueApollo({\n      defaultClient: createDefaultClient(),\n    }),\n    data() {\n      return {\n        epic: placeholderEpic,\n      };\n    },\n    methods: {\n      handleChange(epic) {\n        this.epic = epic.id === null ? noEpic : epic;\n        epicFormInput.setAttribute('value', getIdFromGraphQLId(this.epic.id));\n      },\n    },\n    render(createElement) {\n      return createElement(SidebarDropdown, {\n        props: {\n          attrWorkspacePath: el.dataset.groupPath,\n          currentAttribute: this.epic,\n          issuableAttribute: IssuableAttributeType.Epic,\n          issuableType: TYPE_ISSUE,\n        },\n        on: {\n          change: this.handleChange.bind(this),\n        },\n      });\n    },\n  });\n}\n\nfunction mountSidebarIterationWidget() {\n  const el = document.querySelector('.js-sidebar-iteration-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { groupPath, canEdit, projectPath, issueIid, issueId } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarIterationWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(canEdit),\n      isClassicSidebar: true,\n    },\n    render: (createElement) =>\n      createElement(SidebarIterationWidget, {\n        props: {\n          attrWorkspacePath: groupPath,\n          workspacePath: projectPath,\n          iid: issueIid,\n          issuableType: TYPE_ISSUE,\n          issueId,\n          issuableAttribute: IssuableAttributeType.Iteration,\n        },\n      }),\n  });\n}\n\nexport function mountIterationDropdown() {\n  const el = document.querySelector('.js-iteration-dropdown-root');\n  const iterationFormInput = document.getElementById('issue_iteration_id');\n\n  if (!el || !iterationFormInput) {\n    return null;\n  }\n\n  Vue.use(VueApollo);\n\n  return new Vue({\n    el,\n    name: 'IterationDropdownRoot',\n    apolloProvider: new VueApollo({\n      defaultClient: createDefaultClient(),\n    }),\n    provide: {\n      fullPath: el.dataset.fullPath,\n    },\n    methods: {\n      getIdForIteration(iteration) {\n        const noChangeIterationValue = '';\n        const unSetIterationValue = '0';\n\n        if (iteration === null) {\n          return noChangeIterationValue;\n        }\n        if (iteration.id === null) {\n          return unSetIterationValue;\n        }\n\n        return getIdFromGraphQLId(iteration.id);\n      },\n      handleIterationSelect(iteration) {\n        iterationFormInput.setAttribute('value', this.getIdForIteration(iteration));\n      },\n    },\n    render(createElement) {\n      return createElement(IterationDropdown, {\n        on: {\n          onIterationSelect: this.handleIterationSelect.bind(this),\n        },\n      });\n    },\n  });\n}\n\nfunction mountSidebarEscalationPolicy() {\n  const el = document.querySelector('.js-sidebar-escalation-policy-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { canEdit, projectPath, issueIid, hasEscalationPolicies, issueId } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarEscalationPolicyRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(canEdit),\n      isClassicSidebar: true,\n    },\n    render: (createElement) =>\n      createElement(SidebarEscalationPolicy, {\n        props: {\n          projectPath,\n          iid: issueIid,\n          escalationsPossible: parseBoolean(hasEscalationPolicies),\n          issueId,\n        },\n      }),\n  });\n}\n\nexport const { getSidebarOptions } = CEMountSidebar;\n\nexport function mountSidebar(mediator, store) {\n  CEMountSidebar.mountSidebar(mediator, store);\n  mountSidebarWeightWidget();\n  mountSidebarHealthStatusWidget();\n  mountSidebarEpicWidget();\n  mountSidebarIterationWidget();\n  mountSidebarEscalationPolicy();\n  mountSidebarCveIdRequest(store);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('timeline-entry-item',{staticClass:\"note note-wrapper note-comment\",class:{ ..._vm.classNameBindings, 'internal-note': _vm.note.internal },attrs:{\"id\":_vm.noteAnchorId,\"data-award-url\":_vm.note.toggle_award_path,\"data-note-id\":_vm.note.id,\"data-testid\":\"noteable-note-container\"}},[(_vm.showMultiLineComment)?_c('div',{staticClass:\"gl-border-b gl-border-section gl-px-5 gl-py-3 gl-text-subtle\",attrs:{\"data-testid\":\"multiline-comment\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.__('Comment on lines %{startLine} to %{endLine}')},scopedSlots:_vm._u([{key:\"startLine\",fn:function(){return [_c('span',{class:_vm.getLineClasses(_vm.startLineNumber)},[_vm._v(_vm._s(_vm.startLineNumber))])]},proxy:true},{key:\"endLine\",fn:function(){return [_c('span',{class:_vm.getLineClasses(_vm.endLineNumber)},[_vm._v(_vm._s(_vm.endLineNumber))])]},proxy:true}],null,false,1413361638)})],1):_vm._e(),_vm._v(\" \"),(_vm.isMRDiffView)?_c('div',{staticClass:\"timeline-avatar gl-float-left gl-pt-2\"},[_c('gl-avatar-link',{staticClass:\"js-user-link\",attrs:{\"href\":_vm.author.path,\"data-user-id\":_vm.authorId,\"data-username\":_vm.author.username}},[_c('gl-avatar',{attrs:{\"src\":_vm.author.avatar_url,\"entity-name\":_vm.author.username,\"alt\":_vm.author.name,\"size\":24}}),_vm._v(\" \"),_vm._t(\"avatar-badge\")],2)],1):_c('div',{staticClass:\"timeline-avatar gl-float-left\"},[_c('gl-avatar-link',{staticClass:\"js-user-link gl-relative\",attrs:{\"href\":_vm.author.path,\"data-user-id\":_vm.authorId,\"data-username\":_vm.author.username}},[_c('gl-avatar',{attrs:{\"src\":_vm.author.avatar_url,\"entity-name\":_vm.author.username,\"alt\":_vm.author.name,\"size\":32}}),_vm._v(\" \"),_vm._t(\"avatar-badge\")],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"timeline-content\"},[_c('div',{staticClass:\"note-header\"},[_c('note-header',{attrs:{\"author\":_vm.author,\"created-at\":_vm.note.created_at,\"note-id\":_vm.note.id,\"is-internal-note\":_vm.note.internal,\"is-imported\":_vm.note.imported,\"noteable-type\":_vm.noteableType,\"email-participant\":_vm.note.external_author},scopedSlots:_vm._u([{key:\"note-header-info\",fn:function(){return [_vm._t(\"note-header-info\")]},proxy:true}],null,true)},[_vm._v(\" \"),(_vm.commit)?_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.actionText),expression:\"actionText\"}]}):(_vm.note.created_at)?_c('span',{staticClass:\"gl-hidden sm:gl-inline\"},[_vm._v(\"·\")]):_vm._e()]),_vm._v(\" \"),_c('note-actions',{attrs:{\"author\":_vm.author,\"author-id\":_vm.authorId,\"note-id\":_vm.note.id,\"note-url\":_vm.note.noteable_note_url,\"access-level\":_vm.note.human_access,\"is-contributor\":_vm.note.is_contributor,\"is-author\":_vm.note.is_noteable_author,\"project-name\":_vm.note.project_name,\"noteable-type\":_vm.note.noteable_type,\"show-reply\":_vm.showReplyButton,\"can-edit\":_vm.canEdit,\"can-award-emoji\":_vm.canAwardEmoji,\"can-delete\":_vm.canEdit,\"can-report-as-abuse\":_vm.canReportAsAbuse,\"can-resolve\":_vm.canResolve,\"resolvable\":_vm.note.resolvable || _vm.note.isDraft,\"is-resolved\":_vm.note.resolved || _vm.note.resolve_discussion,\"is-resolving\":_vm.isResolving,\"resolved-by\":_vm.note.resolved_by,\"is-draft\":_vm.note.isDraft,\"resolve-discussion\":_vm.note.isDraft && _vm.note.resolve_discussion,\"discussion-id\":_vm.discussionId,\"award-path\":_vm.note.toggle_award_path},on:{\"handleEdit\":_vm.editHandler,\"handleDelete\":_vm.deleteHandler,\"handleResolve\":_vm.resolveHandler,\"startReplying\":function($event){return _vm.$emit('startReplying')},\"updateAssignees\":_vm.assigneesUpdate}})],1),_vm._v(\" \"),_c('div',{staticClass:\"timeline-discussion-body\"},[_vm._t(\"discussion-resolved-text\"),_vm._v(\" \"),_vm._t(\"note-body\",function(){return [_c('note-body',{ref:\"noteBody\",attrs:{\"note\":_vm.note,\"can-edit\":_vm.canEdit,\"line\":_vm.line,\"file\":_vm.diffFile,\"is-editing\":_vm.isEditing,\"autosave-key\":_vm.autosaveKey,\"restore-from-autosave\":_vm.restoreFromAutosave,\"help-page-path\":_vm.helpPagePath},on:{\"handleFormUpdate\":_vm.formUpdateHandler,\"cancelForm\":_vm.formCancelHandler}})]}),_vm._v(\" \"),_c('div',{staticClass:\"timeline-discussion-body-footer\"},[_vm._t(\"after-note-body\")],2)],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!./timeline_event_button.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!./timeline_event_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlButton } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  i18n: {\n    buttonText: __('Add comment to incident timeline'),\n    addError: __('Error promoting the note to timeline event: %{error}'),\n    addGenericError: __('Something went wrong while promoting the note to timeline event.'),\n  },\n  components: {\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    noteId: {\n      type: [String, Number],\n      required: true,\n    },\n    isPromotionInProgress: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  methods: {\n    handleButtonClick() {\n      this.$emit('click-promote-comment-to-event', {\n        noteId: this.noteId,\n        addError: this.$options.i18n.addError,\n        addGenericError: this.$options.i18n.addGenericError,\n      });\n    },\n  },\n};\n</script>\n<template>\n  <span v-gl-tooltip :title=\"$options.i18n.buttonText\">\n    <gl-button\n      category=\"tertiary\"\n      icon=\"clock\"\n      :aria-label=\"$options.i18n.buttonText\"\n      :disabled=\"isPromotionInProgress\"\n      @click=\"handleButtonClick\"\n    />\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./timeline_event_button.vue?vue&type=template&id=64e4bc06\"\nimport script from \"./timeline_event_button.vue?vue&type=script&lang=js\"\nexport * from \"./timeline_event_button.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',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.$options.i18n.buttonText}},[_c('gl-button',{attrs:{\"category\":\"tertiary\",\"icon\":\"clock\",\"aria-label\":_vm.$options.i18n.buttonText,\"disabled\":_vm.isPromotionInProgress},on:{\"click\":_vm.handleButtonClick}})],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!./note_actions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_actions.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlTooltipDirective,\n  GlButton,\n  GlDisclosureDropdown,\n  GlDisclosureDropdownItem,\n  GlDisclosureDropdownGroup,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport Api from '~/api';\nimport resolvedStatusMixin from '~/batch_comments/mixins/resolved_status';\nimport { createAlert } from '~/alert';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\nimport UserAccessRoleBadge from '~/vue_shared/components/user_access_role_badge.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { splitCamelCase } from '~/lib/utils/text_utility';\nimport AbuseCategorySelector from '~/abuse_reports/components/abuse_category_selector.vue';\nimport ReplyButton from './note_actions/reply_button.vue';\nimport TimelineEventButton from './note_actions/timeline_event_button.vue';\n\nexport default {\n  i18n: {\n    editCommentLabel: __('Edit comment'),\n    deleteCommentLabel: __('Delete comment'),\n    moreActionsLabel: __('More actions'),\n    reportAbuse: __('Report abuse'),\n  },\n  name: 'NoteActions',\n  components: {\n    AbuseCategorySelector,\n    EmojiPicker: () => import('~/emoji/components/picker.vue'),\n    GlButton,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup,\n    ReplyButton,\n    TimelineEventButton,\n    UserAccessRoleBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [resolvedStatusMixin, glFeatureFlagsMixin()],\n  props: {\n    author: {\n      type: Object,\n      required: true,\n    },\n    authorId: {\n      type: Number,\n      required: true,\n    },\n    noteId: {\n      type: [String, Number],\n      required: true,\n    },\n    noteUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    accessLevel: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isAuthor: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isContributor: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    projectName: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showReply: {\n      type: Boolean,\n      required: true,\n    },\n    canEdit: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canAwardEmoji: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canDelete: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canResolve: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    resolvable: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isResolved: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isResolving: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    resolvedBy: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    canReportAsAbuse: {\n      type: Boolean,\n      required: true,\n    },\n    // This can be undefined when `canAwardEmoji` is false\n    awardPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      isReportAbuseDrawerOpen: false,\n    };\n  },\n  computed: {\n    ...mapState(['isPromoteCommentToTimelineEventInProgress']),\n    ...mapGetters(['getUserDataByProp', 'getNoteableData', 'canUserAddIncidentTimelineEvents']),\n    shouldShowActionsDropdown() {\n      return this.currentUserId;\n    },\n    showDeleteAction() {\n      return this.canDelete && !this.canReportAsAbuse && !this.noteUrl;\n    },\n    currentUserId() {\n      return this.getUserDataByProp('id');\n    },\n    isUserAssigned() {\n      return this.assignees && this.assignees.some(({ id }) => id === this.author.id);\n    },\n    displayAssignUserText() {\n      return this.isUserAssigned\n        ? __('Unassign from commenting user')\n        : __('Assign to commenting user');\n    },\n    targetType() {\n      return this.getNoteableData.targetType;\n    },\n    noteableDisplayName() {\n      return splitCamelCase(this.noteableType).toLowerCase();\n    },\n    assignees() {\n      return this.getNoteableData.assignees || [];\n    },\n    isIssue() {\n      return this.targetType === TYPE_ISSUE;\n    },\n    canAssign() {\n      return this.getNoteableData.current_user?.can_set_issue_metadata && this.isIssue;\n    },\n    displayAuthorBadgeText() {\n      return sprintf(__('This user is the author of this %{noteable}.'), {\n        noteable: this.noteableDisplayName,\n      });\n    },\n    displayMemberBadgeText() {\n      return sprintf(__('This user has the %{access} role in the %{name} project.'), {\n        access: this.accessLevel.toLowerCase(),\n        name: this.projectName,\n      });\n    },\n    displayContributorBadgeText() {\n      return sprintf(__('This user has previously committed to the %{name} project.'), {\n        name: this.projectName,\n      });\n    },\n    resolveIcon() {\n      if (!this.isResolving) {\n        return this.isResolved ? 'check-circle-filled' : 'check-circle';\n      }\n      return null;\n    },\n  },\n  methods: {\n    ...mapActions(['toggleAwardRequest', 'promoteCommentToTimelineEvent']),\n    onEdit() {\n      this.$emit('handleEdit');\n    },\n    onDelete() {\n      this.$emit('handleDelete');\n    },\n    onResolve() {\n      this.$emit('handleResolve');\n    },\n    onAbuse() {\n      this.toggleReportAbuseDrawer(true);\n    },\n    onCopyUrl() {\n      this.$toast.show(__('Link copied to clipboard.'));\n    },\n    handleAssigneeUpdate(assignees) {\n      this.$emit('updateAssignees', assignees);\n    },\n    assignUser() {\n      let { assignees } = this;\n      const { project_id, iid } = this.getNoteableData;\n\n      if (this.isUserAssigned) {\n        assignees = assignees.filter((assignee) => assignee.id !== this.author.id);\n      } else {\n        assignees.push({ id: this.author.id });\n      }\n\n      if (this.targetType === TYPE_ISSUE) {\n        Api.updateIssue(project_id, iid, {\n          assignee_ids: assignees.map((assignee) => assignee.id),\n        })\n          .then(() => this.handleAssigneeUpdate(assignees))\n          .catch(() =>\n            createAlert({\n              message: __('Something went wrong while updating assignees'),\n            }),\n          );\n      }\n    },\n    setAwardEmoji(awardName) {\n      this.toggleAwardRequest({\n        endpoint: this.awardPath,\n        noteId: this.noteId,\n        awardName,\n      });\n    },\n    toggleReportAbuseDrawer(isOpen) {\n      this.isReportAbuseDrawerOpen = isOpen;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-actions\">\n    <user-access-role-badge\n      v-if=\"isAuthor\"\n      v-gl-tooltip\n      class=\"gl-mr-3 gl-hidden sm:gl-block\"\n      :title=\"displayAuthorBadgeText\"\n    >\n      {{ __('Author') }}\n    </user-access-role-badge>\n    <user-access-role-badge\n      v-if=\"accessLevel\"\n      v-gl-tooltip\n      class=\"gl-mr-3 gl-hidden sm:gl-block\"\n      :title=\"displayMemberBadgeText\"\n    >\n      {{ accessLevel }}\n    </user-access-role-badge>\n    <user-access-role-badge\n      v-else-if=\"isContributor\"\n      v-gl-tooltip\n      class=\"gl-mr-3 gl-hidden sm:gl-block\"\n      :title=\"displayContributorBadgeText\"\n    >\n      {{ __('Contributor') }}\n    </user-access-role-badge>\n    <span class=\"note-actions__mobile-spacer\"></span>\n    <gl-button\n      v-if=\"canResolve\"\n      ref=\"resolveButton\"\n      v-gl-tooltip\n      data-testid=\"resolve-line-button\"\n      category=\"tertiary\"\n      class=\"note-action-button\"\n      :class=\"{ '!gl-text-success': isResolved }\"\n      :title=\"resolveButtonTitle\"\n      :aria-label=\"resolveButtonTitle\"\n      :icon=\"resolveIcon\"\n      :loading=\"isResolving\"\n      @click=\"onResolve\"\n    />\n    <timeline-event-button\n      v-if=\"canUserAddIncidentTimelineEvents\"\n      :note-id=\"noteId\"\n      :is-promotion-in-progress=\"isPromoteCommentToTimelineEventInProgress\"\n      @click-promote-comment-to-event=\"promoteCommentToTimelineEvent\"\n    />\n    <emoji-picker\n      v-if=\"canAwardEmoji\"\n      toggle-class=\"add-reaction-button btn-default-tertiary\"\n      data-testid=\"note-emoji-button\"\n      @click=\"setAwardEmoji\"\n    />\n    <reply-button\n      v-if=\"showReply\"\n      ref=\"replyButton\"\n      class=\"js-reply-button\"\n      @startReplying=\"$emit('startReplying')\"\n    />\n    <gl-button\n      v-if=\"canEdit\"\n      v-gl-tooltip\n      :title=\"$options.i18n.editCommentLabel\"\n      :aria-label=\"$options.i18n.editCommentLabel\"\n      icon=\"pencil\"\n      category=\"tertiary\"\n      class=\"note-action-button js-note-edit\"\n      data-testid=\"note-edit-button\"\n      @click=\"onEdit\"\n    />\n    <gl-button\n      v-if=\"showDeleteAction\"\n      v-gl-tooltip\n      :title=\"$options.i18n.deleteCommentLabel\"\n      :aria-label=\"$options.i18n.deleteCommentLabel\"\n      icon=\"remove\"\n      category=\"tertiary\"\n      class=\"note-action-button js-note-delete\"\n      @click=\"onDelete\"\n    />\n    <div v-else-if=\"shouldShowActionsDropdown\" class=\"more-actions dropdown\">\n      <gl-disclosure-dropdown\n        v-gl-tooltip\n        :title=\"$options.i18n.moreActionsLabel\"\n        :toggle-text=\"$options.i18n.moreActionsLabel\"\n        text-sr-only\n        icon=\"ellipsis_v\"\n        category=\"tertiary\"\n        placement=\"bottom-end\"\n        class=\"note-action-button more-actions-toggle\"\n        no-caret\n      >\n        <gl-disclosure-dropdown-item\n          v-if=\"noteUrl\"\n          class=\"js-btn-copy-note-link\"\n          :data-clipboard-text=\"noteUrl\"\n          @action=\"onCopyUrl\"\n        >\n          <template #list-item>\n            {{ __('Copy link') }}\n          </template>\n        </gl-disclosure-dropdown-item>\n        <gl-disclosure-dropdown-item\n          v-if=\"canAssign\"\n          data-testid=\"assign-user\"\n          @action=\"assignUser\"\n        >\n          <template #list-item>\n            {{ displayAssignUserText }}\n          </template>\n        </gl-disclosure-dropdown-item>\n        <gl-disclosure-dropdown-group v-if=\"canReportAsAbuse || canEdit\" bordered>\n          <gl-disclosure-dropdown-item\n            v-if=\"canReportAsAbuse\"\n            data-testid=\"report-abuse-button\"\n            @action=\"onAbuse\"\n          >\n            <template #list-item>\n              {{ $options.i18n.reportAbuse }}\n            </template>\n          </gl-disclosure-dropdown-item>\n          <gl-disclosure-dropdown-item v-if=\"canEdit\" class=\"js-note-delete\" @action=\"onDelete\">\n            <template #list-item>\n              <span class=\"gl-text-danger\">{{ __('Delete comment') }}</span>\n            </template>\n          </gl-disclosure-dropdown-item>\n        </gl-disclosure-dropdown-group>\n      </gl-disclosure-dropdown>\n    </div>\n    <!-- IMPORTANT: show this component lazily because it causes layout thrashing -->\n    <!-- https://gitlab.com/gitlab-org/gitlab/-/issues/331172#note_1269378396 -->\n    <abuse-category-selector\n      v-if=\"canReportAsAbuse && isReportAbuseDrawerOpen\"\n      :reported-user-id=\"authorId\"\n      :reported-from-url=\"noteUrl\"\n      :show-drawer=\"isReportAbuseDrawerOpen\"\n      @close-drawer=\"toggleReportAbuseDrawer(false)\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_actions.vue?vue&type=template&id=876917c8\"\nimport script from \"./note_actions.vue?vue&type=script&lang=js\"\nexport * from \"./note_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-actions\"},[(_vm.isAuthor)?_c('user-access-role-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-3 gl-hidden sm:gl-block\",attrs:{\"title\":_vm.displayAuthorBadgeText}},[_vm._v(\"\\n    \"+_vm._s(_vm.__('Author'))+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(_vm.accessLevel)?_c('user-access-role-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-3 gl-hidden sm:gl-block\",attrs:{\"title\":_vm.displayMemberBadgeText}},[_vm._v(\"\\n    \"+_vm._s(_vm.accessLevel)+\"\\n  \")]):(_vm.isContributor)?_c('user-access-role-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-3 gl-hidden sm:gl-block\",attrs:{\"title\":_vm.displayContributorBadgeText}},[_vm._v(\"\\n    \"+_vm._s(_vm.__('Contributor'))+\"\\n  \")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"note-actions__mobile-spacer\"}),_vm._v(\" \"),(_vm.canResolve)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],ref:\"resolveButton\",staticClass:\"note-action-button\",class:{ '!gl-text-success': _vm.isResolved },attrs:{\"data-testid\":\"resolve-line-button\",\"category\":\"tertiary\",\"title\":_vm.resolveButtonTitle,\"aria-label\":_vm.resolveButtonTitle,\"icon\":_vm.resolveIcon,\"loading\":_vm.isResolving},on:{\"click\":_vm.onResolve}}):_vm._e(),_vm._v(\" \"),(_vm.canUserAddIncidentTimelineEvents)?_c('timeline-event-button',{attrs:{\"note-id\":_vm.noteId,\"is-promotion-in-progress\":_vm.isPromoteCommentToTimelineEventInProgress},on:{\"click-promote-comment-to-event\":_vm.promoteCommentToTimelineEvent}}):_vm._e(),_vm._v(\" \"),(_vm.canAwardEmoji)?_c('emoji-picker',{attrs:{\"toggle-class\":\"add-reaction-button btn-default-tertiary\",\"data-testid\":\"note-emoji-button\"},on:{\"click\":_vm.setAwardEmoji}}):_vm._e(),_vm._v(\" \"),(_vm.showReply)?_c('reply-button',{ref:\"replyButton\",staticClass:\"js-reply-button\",on:{\"startReplying\":function($event){return _vm.$emit('startReplying')}}}):_vm._e(),_vm._v(\" \"),(_vm.canEdit)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"note-action-button js-note-edit\",attrs:{\"title\":_vm.$options.i18n.editCommentLabel,\"aria-label\":_vm.$options.i18n.editCommentLabel,\"icon\":\"pencil\",\"category\":\"tertiary\",\"data-testid\":\"note-edit-button\"},on:{\"click\":_vm.onEdit}}):_vm._e(),_vm._v(\" \"),(_vm.showDeleteAction)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"note-action-button js-note-delete\",attrs:{\"title\":_vm.$options.i18n.deleteCommentLabel,\"aria-label\":_vm.$options.i18n.deleteCommentLabel,\"icon\":\"remove\",\"category\":\"tertiary\"},on:{\"click\":_vm.onDelete}}):(_vm.shouldShowActionsDropdown)?_c('div',{staticClass:\"more-actions dropdown\"},[_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"note-action-button more-actions-toggle\",attrs:{\"title\":_vm.$options.i18n.moreActionsLabel,\"toggle-text\":_vm.$options.i18n.moreActionsLabel,\"text-sr-only\":\"\",\"icon\":\"ellipsis_v\",\"category\":\"tertiary\",\"placement\":\"bottom-end\",\"no-caret\":\"\"}},[(_vm.noteUrl)?_c('gl-disclosure-dropdown-item',{staticClass:\"js-btn-copy-note-link\",attrs:{\"data-clipboard-text\":_vm.noteUrl},on:{\"action\":_vm.onCopyUrl},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.__('Copy link'))+\"\\n        \")]},proxy:true}],null,false,618784014)}):_vm._e(),_vm._v(\" \"),(_vm.canAssign)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"assign-user\"},on:{\"action\":_vm.assignUser},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.displayAssignUserText)+\"\\n        \")]},proxy:true}],null,false,3812251101)}):_vm._e(),_vm._v(\" \"),(_vm.canReportAsAbuse || _vm.canEdit)?_c('gl-disclosure-dropdown-group',{attrs:{\"bordered\":\"\"}},[(_vm.canReportAsAbuse)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"report-abuse-button\"},on:{\"action\":_vm.onAbuse},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.reportAbuse)+\"\\n          \")]},proxy:true}],null,false,3009725790)}):_vm._e(),_vm._v(\" \"),(_vm.canEdit)?_c('gl-disclosure-dropdown-item',{staticClass:\"js-note-delete\",on:{\"action\":_vm.onDelete},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('span',{staticClass:\"gl-text-danger\"},[_vm._v(_vm._s(_vm.__('Delete comment')))])]},proxy:true}],null,false,1412744113)}):_vm._e()],1):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),(_vm.canReportAsAbuse && _vm.isReportAbuseDrawerOpen)?_c('abuse-category-selector',{attrs:{\"reported-user-id\":_vm.authorId,\"reported-from-url\":_vm.noteUrl,\"show-drawer\":_vm.isReportAbuseDrawerOpen},on:{\"close-drawer\":function($event){return _vm.toggleReportAbuseDrawer(false)}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_attachment.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!./note_attachment.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\n\nexport default {\n  name: 'NoteAttachment',\n  components: {\n    GlIcon,\n  },\n  props: {\n    attachment: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-attachment\">\n    <a\n      v-if=\"attachment.image\"\n      ref=\"attachmentImage\"\n      :href=\"attachment.url\"\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n    >\n      <img :src=\"attachment.url\" class=\"note-image-attach col-lg-4\" />\n    </a>\n    <div class=\"attachment\">\n      <a\n        v-if=\"attachment.url\"\n        ref=\"attachmentUrl\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n      >\n        <gl-icon name=\"paperclip\" /> {{ attachment.filename }}\n      </a>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_attachment.vue?vue&type=template&id=ff0e6db4\"\nimport script from \"./note_attachment.vue?vue&type=script&lang=js\"\nexport * from \"./note_attachment.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:\"note-attachment\"},[(_vm.attachment.image)?_c('a',{ref:\"attachmentImage\",attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('img',{staticClass:\"note-image-attach col-lg-4\",attrs:{\"src\":_vm.attachment.url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachment\"},[(_vm.attachment.url)?_c('a',{ref:\"attachmentUrl\",attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('gl-icon',{attrs:{\"name\":\"paperclip\"}}),_vm._v(\" \"+_vm._s(_vm.attachment.filename)+\"\\n    \")],1):_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!./note_awards_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!./note_awards_list.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters } from 'vuex';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport AwardsList from '~/vue_shared/components/awards_list.vue';\n\nexport default {\n  components: {\n    AwardsList,\n  },\n  props: {\n    awards: {\n      type: Array,\n      required: true,\n    },\n    toggleAwardPath: {\n      type: String,\n      required: true,\n    },\n    noteAuthorId: {\n      type: Number,\n      required: true,\n    },\n    noteId: {\n      type: String,\n      required: true,\n    },\n    canAwardEmoji: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapGetters(['getUserData']),\n    isAuthoredByMe() {\n      return this.noteAuthorId === this.getUserData.id;\n    },\n  },\n  methods: {\n    ...mapActions(['toggleAwardRequest']),\n    handleAward(awardName) {\n      const data = {\n        endpoint: this.toggleAwardPath,\n        noteId: this.noteId,\n        awardName,\n      };\n\n      this.toggleAwardRequest(data).catch(() =>\n        createAlert({\n          message: __('Something went wrong on our end.'),\n        }),\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-awards\">\n    <awards-list\n      :awards=\"awards\"\n      :can-award-emoji=\"canAwardEmoji\"\n      :current-user-id=\"getUserData.id\"\n      @award=\"handleAward($event)\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_awards_list.vue?vue&type=template&id=29bdaae6\"\nimport script from \"./note_awards_list.vue?vue&type=script&lang=js\"\nexport * from \"./note_awards_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-awards\"},[_c('awards-list',{attrs:{\"awards\":_vm.awards,\"can-award-emoji\":_vm.canAwardEmoji,\"current-user-id\":_vm.getUserData.id},on:{\"award\":function($event){return _vm.handleAward($event)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_body.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!./note_body.vue?vue&type=script&lang=js\"","<script>\nimport { escape } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { __ } from '~/locale';\nimport Suggestions from '~/vue_shared/components/markdown/suggestions.vue';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport NoteAttachment from './note_attachment.vue';\nimport NoteAwardsList from './note_awards_list.vue';\nimport NoteEditedText from './note_edited_text.vue';\nimport NoteForm from './note_form.vue';\n\nexport default {\n  components: {\n    NoteEditedText,\n    NoteAwardsList,\n    NoteAttachment,\n    NoteForm,\n    Suggestions,\n    DuoCodeReviewFeedback: () =>\n      import('ee_component/notes/components/duo_code_review_feedback.vue'),\n  },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    note: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    file: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    canEdit: {\n      type: Boolean,\n      required: true,\n    },\n    isEditing: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    restoreFromAutosave: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    ...mapGetters(['getDiscussion', 'suggestionsCount', 'getSuggestionsFilePaths']),\n    ...mapGetters('diffs', ['suggestionCommitMessage']),\n    ...mapState({\n      batchSuggestionsInfo: (state) => state.notes.batchSuggestionsInfo,\n      failedToLoadMetadata: (state) => state.page.failedToLoadMetadata,\n    }),\n    discussion() {\n      if (!this.note.isDraft) return {};\n\n      return this.getDiscussion(this.note.discussion_id);\n    },\n    noteBody() {\n      return this.note.note;\n    },\n    saveButtonTitle() {\n      return this.note.internal ? __('Save internal note') : __('Save comment');\n    },\n    hasSuggestion() {\n      return this.note.suggestions && this.note.suggestions.length;\n    },\n    lineType() {\n      return this.line ? this.line.type : null;\n    },\n    commitMessage() {\n      // Please see this issue comment for why these\n      //  are hard-coded to 1:\n      //  https://gitlab.com/gitlab-org/gitlab/-/issues/291027#note_468308022\n      const suggestionsCount = this.batchSuggestionsInfo.length || 1;\n      const batchFilePaths = this.getSuggestionsFilePaths();\n      const filePaths = batchFilePaths.length ? batchFilePaths : [this.file.file_path];\n      const filesCount = filePaths.length;\n      // Can be potentially replaced by calculated co-authors of a particular suggestion or batched suggestion\n      const coAuthoredByTrailer = __('Co-authored-by: ...');\n      const suggestion = this.suggestionCommitMessage({\n        file_paths: filePaths.join(', '),\n        suggestions_count: suggestionsCount,\n        files_count: filesCount,\n        co_authored_by: coAuthoredByTrailer,\n      });\n\n      return escape(suggestion);\n    },\n  },\n  mounted() {\n    this.renderGFM();\n  },\n  updated() {\n    this.renderGFM();\n  },\n  methods: {\n    ...mapActions([\n      'submitSuggestion',\n      'submitSuggestionBatch',\n      'addSuggestionInfoToBatch',\n      'removeSuggestionInfoFromBatch',\n    ]),\n    renderGFM() {\n      renderGFM(this.$refs['note-body']);\n    },\n    // eslint-disable-next-line max-params\n    handleFormUpdate(noteText, parentElement, callback, resolveDiscussion) {\n      this.$emit('handleFormUpdate', { noteText, parentElement, callback, resolveDiscussion });\n    },\n    formCancelHandler(shouldConfirm, isDirty) {\n      this.$emit('cancelForm', { shouldConfirm, isDirty });\n    },\n    applySuggestion({ suggestionId, flashContainer, callback = () => {}, message }) {\n      const { discussion_id: discussionId, id: noteId } = this.note;\n\n      return this.submitSuggestion({\n        discussionId,\n        noteId,\n        suggestionId,\n        flashContainer,\n        message,\n      }).then(callback);\n    },\n    applySuggestionBatch({ message, flashContainer }) {\n      return this.submitSuggestionBatch({ message, flashContainer });\n    },\n    addSuggestionToBatch(suggestionId) {\n      const { discussion_id: discussionId, id: noteId } = this.note;\n\n      this.addSuggestionInfoToBatch({ suggestionId, discussionId, noteId });\n    },\n    removeSuggestionFromBatch(suggestionId) {\n      this.removeSuggestionInfoFromBatch(suggestionId);\n    },\n  },\n  safeHtmlConfig: {\n    ADD_TAGS: ['use', 'gl-emoji', 'copy-code'],\n  },\n};\n</script>\n\n<template>\n  <div\n    ref=\"note-body\"\n    :class=\"{\n      'js-task-list-container': canEdit,\n    }\"\n    class=\"note-body\"\n  >\n    <suggestions\n      v-if=\"hasSuggestion && !isEditing\"\n      :suggestions=\"note.suggestions\"\n      :suggestions-count=\"suggestionsCount\"\n      :batch-suggestions-info=\"batchSuggestionsInfo\"\n      :note-html=\"note.note_html\"\n      :line-type=\"lineType\"\n      :help-page-path=\"helpPagePath\"\n      :default-commit-message=\"commitMessage\"\n      :failed-to-load-metadata=\"failedToLoadMetadata\"\n      @apply=\"applySuggestion\"\n      @applyBatch=\"applySuggestionBatch\"\n      @addToBatch=\"addSuggestionToBatch\"\n      @removeFromBatch=\"removeSuggestionFromBatch\"\n    />\n    <div v-else v-safe-html:[$options.safeHtmlConfig]=\"note.note_html\" class=\"note-text md\"></div>\n    <duo-code-review-feedback\n      v-if=\"note.author.user_type === 'duo_code_review_bot' && note.type !== 'DiffNote'\"\n      class=\"gl-mt-3\"\n      data-testid=\"code-review-feedback\"\n    />\n    <note-form\n      v-if=\"isEditing\"\n      ref=\"noteForm\"\n      :note-body=\"noteBody\"\n      :note-id=\"note.id\"\n      :line=\"line\"\n      :note=\"note\"\n      :diff-file=\"file\"\n      :save-button-title=\"saveButtonTitle\"\n      :help-page-path=\"helpPagePath\"\n      :discussion=\"discussion\"\n      :resolve-discussion=\"note.resolve_discussion\"\n      :autosave-key=\"autosaveKey\"\n      :restore-from-autosave=\"restoreFromAutosave\"\n      @handleFormUpdate=\"handleFormUpdate\"\n      @cancelForm=\"formCancelHandler\"\n    />\n    <!-- eslint-disable vue/no-mutating-props -->\n    <textarea\n      v-if=\"canEdit\"\n      v-model=\"note.note\"\n      :data-update-url=\"note.path\"\n      class=\"hidden js-task-list-field\"\n      dir=\"auto\"\n    ></textarea>\n    <!-- eslint-enable vue/no-mutating-props -->\n    <note-edited-text\n      v-if=\"note.last_edited_at\"\n      :edited-at=\"note.last_edited_at\"\n      :edited-by=\"note.last_edited_by\"\n      :action-text=\"__('Edited')\"\n      class=\"note_edited_ago\"\n    />\n    <note-awards-list\n      v-if=\"note.award_emoji && note.award_emoji.length\"\n      :note-id=\"note.id\"\n      :note-author-id=\"note.author.id\"\n      :awards=\"note.award_emoji\"\n      :toggle-award-path=\"note.toggle_award_path\"\n      :can-award-emoji=\"note.current_user.can_award_emoji\"\n    />\n    <note-attachment v-if=\"note.attachment\" :attachment=\"note.attachment\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_body.vue?vue&type=template&id=40f5e1ee\"\nimport script from \"./note_body.vue?vue&type=script&lang=js\"\nexport * from \"./note_body.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"note-body\",staticClass:\"note-body\",class:{\n    'js-task-list-container': _vm.canEdit,\n  }},[(_vm.hasSuggestion && !_vm.isEditing)?_c('suggestions',{attrs:{\"suggestions\":_vm.note.suggestions,\"suggestions-count\":_vm.suggestionsCount,\"batch-suggestions-info\":_vm.batchSuggestionsInfo,\"note-html\":_vm.note.note_html,\"line-type\":_vm.lineType,\"help-page-path\":_vm.helpPagePath,\"default-commit-message\":_vm.commitMessage,\"failed-to-load-metadata\":_vm.failedToLoadMetadata},on:{\"apply\":_vm.applySuggestion,\"applyBatch\":_vm.applySuggestionBatch,\"addToBatch\":_vm.addSuggestionToBatch,\"removeFromBatch\":_vm.removeSuggestionFromBatch}}):_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html:[$options.safeHtmlConfig]\",value:(_vm.note.note_html),expression:\"note.note_html\",arg:_vm.$options.safeHtmlConfig}],staticClass:\"note-text md\"}),_vm._v(\" \"),(_vm.note.author.user_type === 'duo_code_review_bot' && _vm.note.type !== 'DiffNote')?_c('duo-code-review-feedback',{staticClass:\"gl-mt-3\",attrs:{\"data-testid\":\"code-review-feedback\"}}):_vm._e(),_vm._v(\" \"),(_vm.isEditing)?_c('note-form',{ref:\"noteForm\",attrs:{\"note-body\":_vm.noteBody,\"note-id\":_vm.note.id,\"line\":_vm.line,\"note\":_vm.note,\"diff-file\":_vm.file,\"save-button-title\":_vm.saveButtonTitle,\"help-page-path\":_vm.helpPagePath,\"discussion\":_vm.discussion,\"resolve-discussion\":_vm.note.resolve_discussion,\"autosave-key\":_vm.autosaveKey,\"restore-from-autosave\":_vm.restoreFromAutosave},on:{\"handleFormUpdate\":_vm.handleFormUpdate,\"cancelForm\":_vm.formCancelHandler}}):_vm._e(),_vm._v(\" \"),(_vm.canEdit)?_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.note),expression:\"note.note\"}],staticClass:\"hidden js-task-list-field\",attrs:{\"data-update-url\":_vm.note.path,\"dir\":\"auto\"},domProps:{\"value\":(_vm.note.note)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.note, \"note\", $event.target.value)}}}):_vm._e(),_vm._v(\" \"),(_vm.note.last_edited_at)?_c('note-edited-text',{staticClass:\"note_edited_ago\",attrs:{\"edited-at\":_vm.note.last_edited_at,\"edited-by\":_vm.note.last_edited_by,\"action-text\":_vm.__('Edited')}}):_vm._e(),_vm._v(\" \"),(_vm.note.award_emoji && _vm.note.award_emoji.length)?_c('note-awards-list',{attrs:{\"note-id\":_vm.note.id,\"note-author-id\":_vm.note.author.id,\"awards\":_vm.note.award_emoji,\"toggle-award-path\":_vm.note.toggle_award_path,\"can-award-emoji\":_vm.note.current_user.can_award_emoji}}):_vm._e(),_vm._v(\" \"),(_vm.note.attachment)?_c('note-attachment',{attrs:{\"attachment\":_vm.note.attachment}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./noteable_note.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!./noteable_note.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlAvatarLink, GlAvatar } from '@gitlab/ui';\nimport { escape } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions } from 'vuex';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { INLINE_DIFF_LINES_KEY } from '~/diffs/constants';\nimport { createAlert } from '~/alert';\nimport { HTTP_STATUS_GONE } from '~/lib/utils/http_status';\nimport { ignoreWhilePending } from '~/lib/utils/ignore_while_pending';\nimport { truncateSha } from '~/lib/utils/text_utility';\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\nimport { __, s__, sprintf } from '~/locale';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport { detectAndConfirmSensitiveTokens } from '~/lib/utils/secret_detection';\nimport eventHub from '../event_hub';\nimport noteable from '../mixins/noteable';\nimport resolvable from '../mixins/resolvable';\nimport { renderMarkdown, updateNoteErrorMessage } from '../utils';\nimport {\n  getStartLineNumber,\n  getEndLineNumber,\n  getLineClasses,\n  commentLineOptions,\n} from './multiline_comment_utils';\nimport NoteActions from './note_actions.vue';\nimport NoteBody from './note_body.vue';\nimport NoteHeader from './note_header.vue';\n\nexport default {\n  name: 'NoteableNote',\n  components: {\n    GlSprintf,\n    NoteHeader,\n    NoteActions,\n    NoteBody,\n    TimelineEntryItem,\n    GlAvatarLink,\n    GlAvatar,\n  },\n  directives: {\n    SafeHtml,\n  },\n  mixins: [noteable, resolvable],\n  inject: {\n    reportAbusePath: {\n      default: '',\n    },\n  },\n  props: {\n    note: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    discussionFile: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    commit: {\n      type: Object,\n      required: false,\n      default: () => null,\n    },\n    showReplyButton: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    diffLines: {\n      type: Array,\n      required: false,\n      default: null,\n    },\n    discussionRoot: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    discussionResolvePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isOverviewTab: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    shouldScrollToNote: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    discussion: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    restoreFromAutosave: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isEditingLocal: false,\n      isDeleting: false,\n      isRequesting: false,\n      isResolving: false,\n      commentLineStart: {},\n      resolveAsThread: true,\n    };\n  },\n  computed: {\n    ...mapGetters('diffs', ['getDiffFileByHash']),\n    ...mapGetters(['targetNoteHash', 'getNoteableData', 'getUserData', 'commentsDisabled']),\n    isEditing: {\n      get() {\n        return this.note.isEditing ?? this.isEditingLocal;\n      },\n      set(value) {\n        this.isEditingLocal = value;\n        if (value) {\n          this.$emit('handleEdit');\n        } else {\n          this.$emit('cancelForm');\n        }\n      },\n    },\n    author() {\n      return this.note.author;\n    },\n    authorId() {\n      return getIdFromGraphQLId(this.author.id);\n    },\n    commentType() {\n      return this.note.internal ? __('internal note') : __('comment');\n    },\n    classNameBindings() {\n      return {\n        [`note-row-${this.note.id}`]: true,\n        'is-editing': this.isEditing && !this.isRequesting,\n        'is-requesting being-posted': this.isRequesting,\n        'disabled-content': this.isDeleting,\n        target: this.isTarget,\n        'is-editable': this.canEdit,\n      };\n    },\n    canAwardEmoji() {\n      return this.note.current_user?.can_award_emoji ?? false;\n    },\n    canEdit() {\n      return this.note.current_user?.can_edit ?? false;\n    },\n    canReportAsAbuse() {\n      return Boolean(this.reportAbusePath) && this.authorId !== this.getUserData.id;\n    },\n    noteAnchorId() {\n      return `note_${this.note.id}`;\n    },\n    isTarget() {\n      return this.targetNoteHash === this.noteAnchorId;\n    },\n    discussionId() {\n      if (this.discussion) {\n        return this.discussion.id;\n      }\n      return '';\n    },\n    actionText() {\n      if (!this.commit) {\n        return '';\n      }\n\n      // We need to do this to ensure we have the correct sentence order\n      // when translating this as the sentence order may change from one\n      // language to the next. See:\n      // https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/24427#note_133713771\n      const { id, url } = this.commit;\n      const commitLink = `<a class=\"commit-sha monospace\" href=\"${escape(url)}\">${truncateSha(\n        id,\n      )}</a>`;\n      return sprintf(s__('MergeRequests|commented on commit %{commitLink}'), { commitLink }, false);\n    },\n    isDraft() {\n      return this.note.isDraft;\n    },\n    canResolve() {\n      if (!this.discussionRoot) return false;\n      if (!this.note.resolvable) return false;\n\n      return this.note.current_user?.can_resolve_discussion;\n    },\n    lineRange() {\n      return this.note.position?.line_range;\n    },\n    startLineNumber() {\n      return getStartLineNumber(this.lineRange);\n    },\n    endLineNumber() {\n      return getEndLineNumber(this.lineRange);\n    },\n    showMultiLineComment() {\n      if (\n        !this.discussionRoot ||\n        this.startLineNumber.length === 0 ||\n        this.endLineNumber.length === 0\n      )\n        return false;\n\n      return this.line && this.startLineNumber !== this.endLineNumber;\n    },\n    commentLineOptions() {\n      const lines = this.diffFile[INLINE_DIFF_LINES_KEY].length;\n      return commentLineOptions(lines, this.commentLineStart, this.line.line_code);\n    },\n    diffFile() {\n      let fileResolvedFromAvailableSource;\n\n      if (this.commentLineStart.line_code) {\n        const lineCode = this.commentLineStart.line_code.split('_')[0];\n        fileResolvedFromAvailableSource = this.getDiffFileByHash(lineCode);\n      }\n\n      if (!fileResolvedFromAvailableSource && this.discussionFile) {\n        fileResolvedFromAvailableSource = this.discussionFile;\n      }\n\n      return fileResolvedFromAvailableSource || null;\n    },\n    isMRDiffView() {\n      const isFileComment = this.note.position?.position_type === 'file';\n      return !this.isOverviewTab && (this.line || isFileComment);\n    },\n  },\n  created() {\n    const line = this.note.position?.line_range?.start || this.line;\n\n    this.commentLineStart = line\n      ? {\n          line_code: line.line_code,\n          type: line.type,\n          old_line: line.old_line,\n          new_line: line.new_line,\n        }\n      : {};\n\n    eventHub.$on('enterEditMode', ({ noteId }) => {\n      if (noteId === this.note.id) {\n        this.isEditing = true;\n        this.setSelectedCommentPositionHover();\n        this.$el.scrollIntoView();\n      }\n    });\n  },\n\n  mounted() {\n    if (this.isTarget && this.shouldScrollToNote) {\n      this.$el.scrollIntoView({ duration: 0 });\n    }\n  },\n\n  methods: {\n    ...mapActions([\n      'deleteNote',\n      'removeNote',\n      'updateNote',\n      'toggleResolveNote',\n      'updateAssignees',\n      'setSelectedCommentPositionHover',\n    ]),\n    editHandler() {\n      this.isEditing = true;\n      this.setSelectedCommentPositionHover();\n    },\n    async deleteHandler() {\n      let { commentType } = this;\n\n      if (this.note.isDraft) {\n        // Draft internal notes (i.e. MR review comments) are not supported.\n        commentType = __('pending comment');\n      }\n\n      const msg = sprintf(__('Are you sure you want to delete this %{commentType}?'), {\n        commentType,\n      });\n      const confirmed = await confirmAction(msg, {\n        primaryBtnVariant: 'danger',\n        primaryBtnText: this.note.internal ? __('Delete internal note') : __('Delete comment'),\n      });\n\n      if (confirmed) {\n        this.isDeleting = true;\n        this.$emit('handleDeleteNote', this.note);\n\n        if (this.note.isDraft) return;\n\n        this.deleteNote(this.note)\n          .then(() => {\n            this.isDeleting = false;\n          })\n          .catch(() => {\n            createAlert({\n              message: __('Something went wrong while deleting your note. Please try again.'),\n            });\n            this.isDeleting = false;\n          });\n      }\n    },\n    updateSuccess() {\n      this.isEditingLocal = false;\n      this.isRequesting = false;\n      this.oldContent = null;\n      renderGFM(this.$refs.noteBody.$el);\n      this.$emit('updateSuccess');\n    },\n    async formUpdateHandler({ noteText, callback, resolveDiscussion }) {\n      this.$emit('handleUpdateNote', {\n        note: this.note,\n        noteText,\n        resolveDiscussion,\n        flashContainer: this.$el,\n        callback: () => this.updateSuccess(),\n        errorCallback: () => callback(),\n      });\n\n      if (this.isDraft) return;\n\n      const confirmSubmit = await detectAndConfirmSensitiveTokens({ content: noteText });\n\n      if (!confirmSubmit) {\n        callback();\n        return;\n      }\n\n      const data = {\n        endpoint: this.note.path,\n        note: {\n          target_type: this.getNoteableData.targetType,\n          target_id: this.note.noteable_id,\n          note: { note: noteText },\n        },\n      };\n\n      this.isRequesting = true;\n      this.oldContent = this.note.note_html;\n      // eslint-disable-next-line vue/no-mutating-props\n      this.note.note_html = renderMarkdown(noteText);\n\n      this.updateNote(data)\n        .then(() => {\n          this.updateSuccess();\n          callback();\n        })\n        .catch((e) => {\n          if (e.status === HTTP_STATUS_GONE) {\n            this.removeNote(this.note);\n            this.updateSuccess();\n            callback();\n          } else {\n            this.isRequesting = false;\n            this.isEditing = true;\n            this.setSelectedCommentPositionHover();\n            this.$nextTick(() => {\n              this.handleUpdateError(e); // The 'e' parameter is being used in JH, don't remove it\n              this.recoverNoteContent();\n              callback();\n            });\n          }\n        });\n    },\n    handleUpdateError(e) {\n      createAlert({\n        message: updateNoteErrorMessage(e),\n        parent: this.$el,\n      });\n    },\n    formCancelHandler: ignoreWhilePending(async function formCancelHandler({\n      shouldConfirm,\n      isDirty,\n    }) {\n      if (shouldConfirm && isDirty) {\n        const msg = sprintf(__('Are you sure you want to cancel editing this %{commentType}?'), {\n          commentType: this.commentType,\n        });\n        const confirmed = await confirmAction(msg, {\n          primaryBtnText: __('Cancel editing'),\n          primaryBtnVariant: 'danger',\n          secondaryBtnVariant: 'default',\n          secondaryBtnText: __('Continue editing'),\n          hideCancel: true,\n        });\n        if (!confirmed) return;\n      }\n      this.recoverNoteContent();\n      this.isEditing = false;\n    }),\n    recoverNoteContent() {\n      if (this.oldContent) {\n        // eslint-disable-next-line vue/no-mutating-props\n        this.note.note_html = this.oldContent;\n      }\n    },\n    getLineClasses(lineNumber) {\n      return getLineClasses(lineNumber);\n    },\n    assigneesUpdate(assignees) {\n      this.updateAssignees(assignees);\n    },\n  },\n};\n</script>\n\n<template>\n  <timeline-entry-item\n    :id=\"noteAnchorId\"\n    :class=\"{ ...classNameBindings, 'internal-note': note.internal }\"\n    :data-award-url=\"note.toggle_award_path\"\n    :data-note-id=\"note.id\"\n    class=\"note note-wrapper note-comment\"\n    data-testid=\"noteable-note-container\"\n  >\n    <div\n      v-if=\"showMultiLineComment\"\n      data-testid=\"multiline-comment\"\n      class=\"gl-border-b gl-border-section gl-px-5 gl-py-3 gl-text-subtle\"\n    >\n      <gl-sprintf :message=\"__('Comment on lines %{startLine} to %{endLine}')\">\n        <template #startLine>\n          <span :class=\"getLineClasses(startLineNumber)\">{{ startLineNumber }}</span>\n        </template>\n        <template #endLine>\n          <span :class=\"getLineClasses(endLineNumber)\">{{ endLineNumber }}</span>\n        </template>\n      </gl-sprintf>\n    </div>\n\n    <div v-if=\"isMRDiffView\" class=\"timeline-avatar gl-float-left gl-pt-2\">\n      <gl-avatar-link\n        :href=\"author.path\"\n        :data-user-id=\"authorId\"\n        :data-username=\"author.username\"\n        class=\"js-user-link\"\n      >\n        <gl-avatar\n          :src=\"author.avatar_url\"\n          :entity-name=\"author.username\"\n          :alt=\"author.name\"\n          :size=\"24\"\n        />\n\n        <slot name=\"avatar-badge\"></slot>\n      </gl-avatar-link>\n    </div>\n\n    <div v-else class=\"timeline-avatar gl-float-left\">\n      <gl-avatar-link\n        :href=\"author.path\"\n        :data-user-id=\"authorId\"\n        :data-username=\"author.username\"\n        class=\"js-user-link gl-relative\"\n      >\n        <gl-avatar\n          :src=\"author.avatar_url\"\n          :entity-name=\"author.username\"\n          :alt=\"author.name\"\n          :size=\"32\"\n        />\n\n        <slot name=\"avatar-badge\"></slot>\n      </gl-avatar-link>\n    </div>\n\n    <div class=\"timeline-content\">\n      <div class=\"note-header\">\n        <note-header\n          :author=\"author\"\n          :created-at=\"note.created_at\"\n          :note-id=\"note.id\"\n          :is-internal-note=\"note.internal\"\n          :is-imported=\"note.imported\"\n          :noteable-type=\"noteableType\"\n          :email-participant=\"note.external_author\"\n        >\n          <template #note-header-info>\n            <slot name=\"note-header-info\"></slot>\n          </template>\n          <span v-if=\"commit\" v-safe-html=\"actionText\"></span>\n          <span v-else-if=\"note.created_at\" class=\"gl-hidden sm:gl-inline\">&middot;</span>\n        </note-header>\n        <note-actions\n          :author=\"author\"\n          :author-id=\"authorId\"\n          :note-id=\"note.id\"\n          :note-url=\"note.noteable_note_url\"\n          :access-level=\"note.human_access\"\n          :is-contributor=\"note.is_contributor\"\n          :is-author=\"note.is_noteable_author\"\n          :project-name=\"note.project_name\"\n          :noteable-type=\"note.noteable_type\"\n          :show-reply=\"showReplyButton\"\n          :can-edit=\"canEdit\"\n          :can-award-emoji=\"canAwardEmoji\"\n          :can-delete=\"canEdit\"\n          :can-report-as-abuse=\"canReportAsAbuse\"\n          :can-resolve=\"canResolve\"\n          :resolvable=\"note.resolvable || note.isDraft\"\n          :is-resolved=\"note.resolved || note.resolve_discussion\"\n          :is-resolving=\"isResolving\"\n          :resolved-by=\"note.resolved_by\"\n          :is-draft=\"note.isDraft\"\n          :resolve-discussion=\"note.isDraft && note.resolve_discussion\"\n          :discussion-id=\"discussionId\"\n          :award-path=\"note.toggle_award_path\"\n          @handleEdit=\"editHandler\"\n          @handleDelete=\"deleteHandler\"\n          @handleResolve=\"resolveHandler\"\n          @startReplying=\"$emit('startReplying')\"\n          @updateAssignees=\"assigneesUpdate\"\n        />\n      </div>\n      <div class=\"timeline-discussion-body\">\n        <slot name=\"discussion-resolved-text\"></slot>\n        <slot name=\"note-body\">\n          <note-body\n            ref=\"noteBody\"\n            :note=\"note\"\n            :can-edit=\"canEdit\"\n            :line=\"line\"\n            :file=\"diffFile\"\n            :is-editing=\"isEditing\"\n            :autosave-key=\"autosaveKey\"\n            :restore-from-autosave=\"restoreFromAutosave\"\n            :help-page-path=\"helpPagePath\"\n            @handleFormUpdate=\"formUpdateHandler\"\n            @cancelForm=\"formCancelHandler\"\n          />\n        </slot>\n        <div class=\"timeline-discussion-body-footer\">\n          <slot name=\"after-note-body\"></slot>\n        </div>\n      </div>\n    </div>\n  </timeline-entry-item>\n</template>\n","import { render, staticRenderFns } from \"./noteable_note.vue?vue&type=template&id=793c0ad5\"\nimport script from \"./noteable_note.vue?vue&type=script&lang=js\"\nexport * from \"./noteable_note.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 * Input/Textarea Autofocus Directive for Vue\n */\nexport default {\n  /**\n   * Set focus when element is rendered, but\n   * is not visible, using IntersectionObserver\n   *\n   * @param {Element} el Target element\n   */\n  inserted(el) {\n    if ('IntersectionObserver' in window) {\n      // Element visibility is dynamic, so we attach observer\n      el.visibilityObserver = new IntersectionObserver((entries) => {\n        entries.forEach((entry) => {\n          // Combining `intersectionRatio > 0` and\n          // element's `offsetParent` presence will\n          // deteremine if element is truely visible\n          if (entry.intersectionRatio > 0 && entry.target.offsetParent) {\n            entry.target.focus();\n          }\n        });\n      });\n\n      // Bind the observer.\n      el.visibilityObserver.observe(el, { root: document.documentElement });\n    }\n  },\n  /**\n   * Detach observer on unbind hook.\n   *\n   * @param {Element} el Target element\n   */\n  unbind(el) {\n    if (el.visibilityObserver) {\n      el.visibilityObserver.disconnect();\n    }\n  },\n};\n","import { BCollapse } from '../../../vendor/bootstrap-vue/src/components/collapse/collapse';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlCollapse',\n  components: {\n    BCollapse\n  },\n  model: {\n    prop: 'visible',\n    event: 'input'\n  },\n  props: {\n    visible: {\n      type: Boolean,\n      default: false,\n      required: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-collapse',_vm._g(_vm._b({attrs:{\"visible\":_vm.visible}},'b-collapse',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","import { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_HEADER } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  id: makeProp(PROP_TYPE_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'header'),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_HEADER);\n\n// --- Main component ---\n\n// @vue/component\nconst BDropdownHeader = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_HEADER,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tag,\n      variant\n    } = props;\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(tag, {\n      staticClass: 'dropdown-header',\n      class: {\n        [`text-${variant}`]: variant\n      },\n      attrs: {\n        ...(data.attrs || {}),\n        id: props.id || null,\n        role: isTag(tag, 'header') ? null : 'heading'\n      },\n      ref: 'header'\n    }, children)]);\n  }\n});\n\nexport { BDropdownHeader, props };\n","import { BDropdownHeader } from '../../../vendor/bootstrap-vue/src/components/dropdown/dropdown-header';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlDropdownHeader',\n  components: {\n    BDropdownHeader\n  },\n  inheritAttrs: false\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-dropdown-header',_vm._g(_vm._b({staticClass:\"gl-dropdown-section-header\"},'b-dropdown-header',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityResolve\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityResolve\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolvedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resolvedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":348}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityResolve($id: VulnerabilityID!, $comment: String) {\\n  vulnerabilityResolve(input: { id: $id, comment: $comment }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      resolvedAt\\n      resolvedBy {\\n        id\\n      }\\n      ...LastStateTransition\\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/last_state_transition.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[\"vulnerabilityResolve\"] = oneQuery(doc, \"vulnerabilityResolve\");\n        \n","import { extend } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n  tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTbody = /*#__PURE__*/extend({\n  name: NAME_TBODY,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTbody() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    isTransitionGroup() {\n      return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n    },\n    tbodyAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    },\n    tbodyProps() {\n      const {\n        tbodyTransitionProps\n      } = this;\n      return tbodyTransitionProps ? {\n        ...tbodyTransitionProps,\n        tag: 'tbody'\n      } : {};\n    }\n  },\n  render(h) {\n    const data = {\n      props: this.tbodyProps,\n      attrs: this.tbodyAttrs\n    };\n    if (this.isTransitionGroup) {\n      // We use native listeners if a transition group for any delegated events\n      data.on = this.tbodyTransitionHandlers || {};\n      data.nativeOn = this.bvListeners;\n    } else {\n      // Otherwise we place any listeners on the tbody element\n      data.on = this.bvListeners;\n    }\n    return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n  }\n});\n\nexport { BTbody, props };\n","import { extend, REF_FOR_KEY } from '../../../vue';\nimport { EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED, EVENT_NAME_ROW_CLICKED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT_FUNCTION, PROP_TYPE_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_SHOW_DETAILS, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT } from './constants';\n\n// --- Props ---\n\nconst props = {\n  detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n  tbodyTrClass: makeProp([...PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION])\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyRowMixin = extend({\n  mixins: [useParentMixin],\n  props,\n  methods: {\n    // Methods for computing classes, attributes and styles for table cells\n    getTdValues(item, key, tdValue, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (tdValue) {\n        const value = get(item, key, '');\n        if (isFunction(tdValue)) {\n          return tdValue(value, key, item);\n        } else if (isString(tdValue) && isFunction(bvParent[tdValue])) {\n          return bvParent[tdValue](value, key, item);\n        }\n        return tdValue;\n      }\n      return defaultValue;\n    },\n    getThValues(item, key, thValue, type, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (thValue) {\n        const value = get(item, key, '');\n        if (isFunction(thValue)) {\n          return thValue(value, key, item, type);\n        } else if (isString(thValue) && isFunction(bvParent[thValue])) {\n          return bvParent[thValue](value, key, item, type);\n        }\n        return thValue;\n      }\n      return defaultValue;\n    },\n    // Method to get the value for a field\n    getFormattedValue(item, field) {\n      const {\n        key\n      } = field;\n      const formatter = this.getFieldFormatter(key);\n      let value = get(item, key, null);\n      if (isFunction(formatter)) {\n        value = formatter(value, key, item);\n      }\n      return isUndefinedOrNull(value) ? '' : value;\n    },\n    // Factory function methods\n    toggleDetailsFactory(hasDetailsSlot, item) {\n      // Returns a function to toggle a row's details slot\n      return () => {\n        if (hasDetailsSlot) {\n          this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n        }\n      };\n    },\n    // Row event handlers\n    rowHovered(event) {\n      // `mouseenter` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n      }\n    },\n    rowUnhovered(event) {\n      // `mouseleave` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n      }\n    },\n    // Renders a TD or TH for a row's field\n    renderTbodyRowCell(field, colIndex, item, rowIndex) {\n      const {\n        isStacked\n      } = this;\n      const {\n        key,\n        label,\n        isRowHeader\n      } = field;\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const formatted = this.getFormattedValue(item, field);\n      const stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn;\n      // We only uses the helper components for sticky columns to\n      // improve performance of BTable/BTableLite by reducing the\n      // total number of vue instances created during render\n      const cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n      const cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n      const data = {\n        // For the Vue key, we concatenate the column index and\n        // field key (as field keys could be duplicated)\n        // TODO: Although we do prevent duplicate field keys...\n        //   So we could change this to: `row-${rowIndex}-cell-${key}`\n        class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n        props: {},\n        attrs: {\n          'aria-colindex': String(colIndex + 1),\n          ...(isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {}))\n        },\n        key: `row-${rowIndex}-cell-${colIndex}-${key}`\n      };\n      if (stickyColumn) {\n        // We are using the helper BTd or BTh\n        data.props = {\n          stackedHeading: isStacked ? label : null,\n          stickyColumn: true,\n          variant: cellVariant\n        };\n      } else {\n        // Using native TD or TH element, so we need to\n        // add in the attributes and variant class\n        data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n        data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n        data.attrs.scope = isRowHeader ? 'row' : null;\n        // Add in the variant class\n        if (cellVariant) {\n          data.class.push(`${this.dark ? 'bg' : 'table'}-${cellVariant}`);\n        }\n      }\n      const slotScope = {\n        item,\n        index: rowIndex,\n        field,\n        unformatted: get(item, key, ''),\n        value: formatted,\n        toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n        detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n      };\n      // If table supports selectable mode, then add in the following scope\n      // this.supportsSelectableRows will be undefined if mixin isn't loaded\n      if (safeVueInstance(this).supportsSelectableRows) {\n        slotScope.rowSelected = this.isRowSelected(rowIndex);\n        slotScope.selectRow = () => this.selectRow(rowIndex);\n        slotScope.unselectRow = () => this.unselectRow(rowIndex);\n      }\n\n      // The new `v-slot` syntax doesn't like a slot name starting with\n      // a square bracket and if using in-document HTML templates, the\n      // v-slot attributes are lower-cased by the browser.\n      // Switched to round bracket syntax to prevent confusion with\n      // dynamic slot name syntax.\n      // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n      // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n      // Will be `null` if no slot (or fallback slot) exists\n      const slotName = this.$_bodyFieldSlotNameCache[key];\n      let $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n      if (this.isStacked) {\n        // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n        $childNodes = [h('div', [$childNodes])];\n      }\n\n      // Render either a td or th cell\n      return h(cellTag, data, [$childNodes]);\n    },\n    // Renders an item's row (or rows if details supported)\n    renderTbodyRow(item, rowIndex) {\n      const {\n        computedFields: fields,\n        striped,\n        primaryKey,\n        currentPage,\n        perPage,\n        tbodyTrClass,\n        tbodyTrAttr,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n      const hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || hasSelectableRowClick;\n\n      // We can return more than one TR if rowDetails enabled\n      const $rows = [];\n\n      // Details ID needed for `aria-details` when details showing\n      // We set it to `null` when not showing so that attribute\n      // does not appear on the element\n      const detailsId = rowShowDetails ? this.safeId(`_details_${rowIndex}_`) : null;\n\n      // For each item data field in row\n      const $tds = fields.map((field, colIndex) => {\n        return this.renderTbodyRowCell(field, colIndex, item, rowIndex);\n      });\n\n      // Calculate the row number in the dataset (indexed from 1)\n      let ariaRowIndex = null;\n      if (currentPage && perPage && perPage > 0) {\n        ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n      }\n\n      // Create a unique :key to help ensure that sub components are re-rendered rather than\n      // re-used, which can cause issues. If a primary key is not provided we use the rendered\n      // rows index within the tbody.\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n      const primaryKeyValue = toString(get(item, primaryKey)) || null;\n      const rowKey = primaryKeyValue || toString(rowIndex);\n\n      // If primary key is provided, use it to generate a unique ID on each tbody > tr\n      // In the format of '{tableId}__row_{primaryKeyValue}'\n      const rowId = primaryKeyValue ? this.safeId(`_row_${primaryKeyValue}`) : null;\n\n      // Selectable classes and attributes\n      const selectableClasses = safeVueInstance(this).selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n      const selectableAttrs = safeVueInstance(this).selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {};\n\n      // Additional classes and attributes\n      const userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n      const userTrAttrs = isFunction(tbodyTrAttr) ? /* istanbul ignore next */tbodyTrAttr(item, 'row') : tbodyTrAttr;\n\n      // Add the item row\n      $rows.push(h(BTr, {\n        class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n        props: {\n          variant: item[FIELD_KEY_ROW_VARIANT] || null\n        },\n        attrs: {\n          id: rowId,\n          ...userTrAttrs,\n          // Users cannot override the following attributes\n          tabindex: hasRowClickHandler ? '0' : null,\n          'data-pk': primaryKeyValue || null,\n          'aria-details': detailsId,\n          'aria-owns': detailsId,\n          'aria-rowindex': ariaRowIndex,\n          ...selectableAttrs\n        },\n        on: {\n          // Note: These events are not A11Y friendly!\n          mouseenter: this.rowHovered,\n          mouseleave: this.rowUnhovered\n        },\n        key: `__b-table-row-${rowKey}__`,\n        ref: 'item-rows',\n        [REF_FOR_KEY]: true\n      }, $tds));\n\n      // Row Details slot\n      if (rowShowDetails) {\n        const detailsScope = {\n          item,\n          index: rowIndex,\n          fields,\n          toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n        };\n        // If table supports selectable mode, then add in the following scope\n        // this.supportsSelectableRows will be undefined if mixin isn't loaded\n        if (safeVueInstance(this).supportsSelectableRows) {\n          detailsScope.rowSelected = this.isRowSelected(rowIndex);\n          detailsScope.selectRow = () => this.selectRow(rowIndex);\n          detailsScope.unselectRow = () => this.unselectRow(rowIndex);\n        }\n\n        // Render the details slot in a TD\n        const $details = h(BTd, {\n          props: {\n            colspan: fields.length\n          },\n          class: this.detailsTdClass\n        }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]);\n\n        // Add a hidden row to keep table row striping consistent when details showing\n        // Only added if the table is striped\n        if (striped) {\n          $rows.push(\n          // We don't use `BTr` here as we don't need the extra functionality\n          h('tr', {\n            staticClass: 'd-none',\n            attrs: {\n              'aria-hidden': 'true',\n              role: 'presentation'\n            },\n            key: `__b-table-details-stripe__${rowKey}`\n          }));\n        }\n\n        // Add the actual details row\n        const userDetailsTrClasses = isFunction(this.tbodyTrClass) ? /* istanbul ignore next */this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n        const userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ? /* istanbul ignore next */this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n        $rows.push(h(BTr, {\n          staticClass: 'b-table-details',\n          class: [userDetailsTrClasses],\n          props: {\n            variant: item[FIELD_KEY_ROW_VARIANT] || null\n          },\n          attrs: {\n            ...userDetailsTrAttrs,\n            // Users cannot override the following attributes\n            id: detailsId,\n            tabindex: '-1'\n          },\n          key: `__b-table-details__${rowKey}`\n        }, [$details]));\n      } else if (hasDetailsSlot) {\n        // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n        $rows.push(h());\n        if (striped) {\n          // Add extra placeholder if table is striped\n          $rows.push(h());\n        }\n      }\n\n      // Return the row(s)\n      return $rows;\n    }\n  }\n});\n\nexport { props, tbodyRowMixin };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE, CODE_UP, CODE_DOWN, CODE_HOME, CODE_END } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { from, arrayIncludes } from '../../../utils/array';\nimport { isElement, closest, isActiveElement, attemptFocus } from '../../../utils/dom';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { props as props$1, BTbody } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { props as props$2, tbodyRowMixin } from './mixin-tbody-row';\n\n// --- Helper methods ---\n\nconst getCellSlotName = value => `cell(${value || ''})`;\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...props$1,\n  ...props$2,\n  tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyMixin = extend({\n  mixins: [tbodyRowMixin],\n  props,\n  beforeDestroy() {\n    this.$_bodyFieldSlotNameCache = null;\n  },\n  methods: {\n    // Returns all the item TR elements (excludes detail and spacer rows)\n    // `this.$refs['item-rows']` is an array of item TR components/elements\n    // Rows should all be `<b-tr>` components, but we map to TR elements\n    // Also note that `this.$refs['item-rows']` may not always be in document order\n    getTbodyTrs() {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      const trs = ($refs['item-rows'] || []).map(tr => tr.$el || tr);\n      return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? from(tbody.children).filter(tr => arrayIncludes(trs, tr)) : /* istanbul ignore next */[];\n    },\n    // Returns index of a particular TBODY item TR\n    // We set `true` on closest to include self in result\n    getTbodyTrIndex(el) {\n      /* istanbul ignore next: should not normally happen */\n      if (!isElement(el)) {\n        return -1;\n      }\n      const tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n      return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n    },\n    // Emits a row event, with the item object, row index and original event\n    emitTbodyRowEvent(type, event) {\n      if (type && this.hasListener(type) && event && event.target) {\n        const rowIndex = this.getTbodyTrIndex(event.target);\n        if (rowIndex > -1) {\n          // The array of TRs correlate to the `computedItems` array\n          const item = this.computedItems[rowIndex];\n          this.$emit(type, item, rowIndex, event);\n        }\n      }\n    },\n    tbodyRowEventStopped(event) {\n      return this.stopIfBusy && this.stopIfBusy(event);\n    },\n    // Delegated row event handlers\n    onTbodyRowKeydown(event) {\n      // Keyboard navigation and row click emulation\n      const {\n        target,\n        keyCode\n      } = event;\n      if (this.tbodyRowEventStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n        // Early exit if not an item row TR\n        return;\n      }\n      if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n        // Emulated click for keyboard users, transfer to click handler\n        stopEvent(event);\n        this.onTBodyRowClicked(event);\n      } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n        // Keyboard navigation\n        const rowIndex = this.getTbodyTrIndex(target);\n        if (rowIndex > -1) {\n          stopEvent(event);\n          const trs = this.getTbodyTrs();\n          const shift = event.shiftKey;\n          if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n            // Focus first row\n            attemptFocus(trs[0]);\n          } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n            // Focus last row\n            attemptFocus(trs[trs.length - 1]);\n          } else if (keyCode === CODE_UP && rowIndex > 0) {\n            // Focus previous row\n            attemptFocus(trs[rowIndex - 1]);\n          } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n            // Focus next row\n            attemptFocus(trs[rowIndex + 1]);\n          }\n        }\n      }\n    },\n    onTBodyRowClicked(event) {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      // Don't emit event when the table is busy, the user clicked\n      // on a non-disabled control or is selecting text\n      if (this.tbodyRowEventStopped(event) || filterEvent(event) || textSelectionActive(tbody || this.$el)) {\n        return;\n      }\n      this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n    },\n    onTbodyRowMiddleMouseRowClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && event.which === 2) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n      }\n    },\n    onTbodyRowContextmenu(event) {\n      if (!this.tbodyRowEventStopped(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n      }\n    },\n    onTbodyRowDblClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && !filterEvent(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n      }\n    },\n    // Render the tbody element and children\n    // Note:\n    //   Row hover handlers are handled by the tbody-row mixin\n    //   As mouseenter/mouseleave events do not bubble\n    renderTbody() {\n      const {\n        computedItems: items,\n        renderBusy,\n        renderTopRow,\n        renderEmpty,\n        renderBottomRow,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || hasSelectableRowClick;\n\n      // Prepare the tbody rows\n      const $rows = [];\n\n      // Add the item data rows or the busy slot\n      const $busy = renderBusy ? renderBusy() : null;\n      if ($busy) {\n        // If table is busy and a busy slot, then return only the busy \"row\" indicator\n        $rows.push($busy);\n      } else {\n        // Table isn't busy, or we don't have a busy slot\n\n        // Create a slot cache for improved performance when looking up cell slot names\n        // Values will be keyed by the field's `key` and will store the slot's name\n        // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n        // Used by tbody-row mixin render helper\n        const cache = {};\n        let defaultSlotName = getCellSlotName();\n        defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n        this.computedFields.forEach(field => {\n          const {\n            key\n          } = field;\n          const slotName = getCellSlotName(key);\n          const lowercaseSlotName = getCellSlotName(key.toLowerCase());\n          cache[key] = this.hasNormalizedSlot(slotName) ? slotName : this.hasNormalizedSlot(lowercaseSlotName) ? /* istanbul ignore next */lowercaseSlotName : defaultSlotName;\n        });\n        // Created as a non-reactive property so to not trigger component updates\n        // Must be a fresh object each render\n        this.$_bodyFieldSlotNameCache = cache;\n\n        // Add static top row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderTopRow ? renderTopRow() : h());\n\n        // Render the rows\n        items.forEach((item, rowIndex) => {\n          // Render the individual item row (rows if details slot)\n          $rows.push(this.renderTbodyRow(item, rowIndex));\n        });\n\n        // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n        $rows.push(renderEmpty ? renderEmpty() : h());\n\n        // Static bottom row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderBottomRow ? renderBottomRow() : h());\n      }\n\n      // Note: these events will only emit if a listener is registered\n      const handlers = {\n        auxclick: this.onTbodyRowMiddleMouseRowClicked,\n        // TODO:\n        //   Perhaps we do want to automatically prevent the\n        //   default context menu from showing if there is a\n        //   `row-contextmenu` listener registered\n        contextmenu: this.onTbodyRowContextmenu,\n        // The following event(s) is not considered A11Y friendly\n        dblclick: this.onTbodyRowDblClicked\n        // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n      };\n      // Add in click/keydown listeners if needed\n      if (hasRowClickHandler) {\n        handlers.click = this.onTBodyRowClicked;\n        handlers.keydown = this.onTbodyRowKeydown;\n      }\n\n      // Assemble rows into the tbody\n      const $tbody = h(BTbody, {\n        class: this.tbodyClass || null,\n        props: pluckProps(props$1, this.$props),\n        // BTbody transfers all native event listeners to the root element\n        // TODO: Only set the handlers if the table is not busy\n        on: handlers,\n        ref: 'tbody'\n      }, $rows);\n\n      // Return the assembled tbody\n      return $tbody;\n    }\n  }\n});\n\nexport { props, tbodyMixin };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueWeight\"},\"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\":\"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\":\"issue\"},\"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\":\"weight\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":168}};\n    doc.loc.source = {\"body\":\"query issueWeight($fullPath: ID!, $iid: String) {\\n  workspace: project(fullPath: $fullPath) {\\n    id\\n    issuable: issue(iid: $iid) {\\n      id\\n      weight\\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[\"issueWeight\"] = oneQuery(doc, \"issueWeight\");\n        \n","<script>\nimport { normalizeChildren } from '~/lib/utils/vue3compat/normalize_children';\n/**\n * Wrapper for discussion notes replies section.\n *\n * This is a functional component using the render method because in some cases\n * the wrapper is not needed and we want to simply render along the children.\n */\nexport default {\n  functional: true,\n  props: {\n    isDiffDiscussion: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  render(h, { props, children }) {\n    if (props.isDiffDiscussion) {\n      return h(\n        'li',\n        {\n          class:\n            'discussion-collapsible gl-border-solid gl-border-default gl-border-1 gl-rounded-base gl-border-t-0',\n        },\n        [h('ul', { class: 'notes' }, children)],\n      );\n    }\n\n    return normalizeChildren(children);\n  },\n};\n</script>\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!./discussion_notes_replies_wrapper.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!./discussion_notes_replies_wrapper.vue?vue&type=script&lang=js\"","export function normalizeChildren(children) {\n  if (typeof children !== 'object' || Array.isArray(children)) {\n    return children;\n  }\n\n  if (typeof children.default === 'function') {\n    return children.default();\n  }\n\n  return children;\n}\n","var render, staticRenderFns\nimport script from \"./discussion_notes_replies_wrapper.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_notes_replies_wrapper.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',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.signedOutText),expression:\"signedOutText\"}],staticClass:\"gl-grow gl-text-center gl-text-subtle\"})\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!./note_signed_out_widget.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!./note_signed_out_widget.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n  directives: {\n    SafeHtml,\n  },\n  computed: {\n    ...mapGetters(['getNotesDataByProp']),\n    registerLink() {\n      return this.getNotesDataByProp('registerPath');\n    },\n    signInLink() {\n      return this.getNotesDataByProp('newSessionPath');\n    },\n    signedOutText() {\n      return sprintf(\n        __(\n          'Please %{startTagRegister}register%{endRegisterTag} or %{startTagSignIn}sign in%{endSignInTag} to reply',\n        ),\n        {\n          startTagRegister: `<a href=\"${this.registerLink}\">`,\n          startTagSignIn: `<a href=\"${this.signInLink}\">`,\n          endRegisterTag: '</a>',\n          endSignInTag: '</a>',\n        },\n        false,\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-safe-html=\"signedOutText\" class=\"gl-grow gl-text-center gl-text-subtle\"></div>\n</template>\n","import { render, staticRenderFns } from \"./note_signed_out_widget.vue?vue&type=template&id=222a8910\"\nimport script from \"./note_signed_out_widget.vue?vue&type=script&lang=js\"\nexport * from \"./note_signed_out_widget.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","export const EVENT_ISSUABLE_VUE_APP_CHANGE = 'issuable_vue_app:change';\n","import * as constants from '../constants';\n\nexport default {\n  computed: {\n    noteableType() {\n      const note = this.discussion ? this.discussion.notes[0] : this.note;\n      return constants.NOTEABLE_TYPE_MAPPING[note.noteable_type];\n    },\n  },\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-text-subtle\"},[_vm._v(\"\\n  \"+_vm._s(_vm.title)+\"\\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!./iteration_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!./iteration_title.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  name: 'IterationTitle',\n  props: {\n    title: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-text-subtle\">\n    {{ title }}\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./iteration_title.vue?vue&type=template&id=be345eea\"\nimport script from \"./iteration_title.vue?vue&type=script&lang=js\"\nexport * from \"./iteration_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:\"gl-text-sm\",class:_vm.className},[(_vm.editedBy)?_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.actionWithAuthor},scopedSlots:_vm._u([{key:\"actionText\",fn:function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.actionText)+\"\\n    \")]},proxy:true},{key:\"actionDetail\",fn:function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.actionDetailText)+\"\\n    \")]},proxy:true},{key:\"timeago\",fn:function(){return [_c('time-ago-tooltip',{attrs:{\"time\":_vm.editedAt,\"tooltip-placement\":\"bottom\"}})]},proxy:true},{key:\"author\",fn:function(){return [_c('gl-link',{staticClass:\"js-user-link author-link hover:gl-underline\",attrs:{\"href\":_vm.editedBy.path,\"data-user-id\":_vm.editedBy.id}},[_vm._v(\"\\n        \"+_vm._s(_vm.editedBy.name)+\"\\n      \")])]},proxy:true}],null,false,3012119528)}):_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.actionWithoutAuthor},scopedSlots:_vm._u([{key:\"actionText\",fn:function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.actionText)+\"\\n    \")]},proxy:true},{key:\"actionDetail\",fn:function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.actionDetailText)+\"\\n    \")]},proxy:true},{key:\"timeago\",fn:function(){return [_c('time-ago-tooltip',{attrs:{\"time\":_vm.editedAt,\"tooltip-placement\":\"bottom\"}})]},proxy:true}])})],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!./note_edited_text.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!./note_edited_text.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlLink } from '@gitlab/ui';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\nimport { EDITED_TEXT } from '../i18n';\n\nexport default {\n  name: 'EditedNoteText',\n  components: {\n    GlSprintf,\n    GlLink,\n    TimeAgoTooltip,\n  },\n  props: {\n    actionText: {\n      type: String,\n      required: true,\n    },\n    actionDetailText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    editedAt: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    editedBy: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    className: {\n      type: String,\n      required: false,\n      default: 'edited-text',\n    },\n  },\n  i18n: EDITED_TEXT,\n};\n</script>\n\n<template>\n  <div :class=\"className\" class=\"gl-text-sm\">\n    <gl-sprintf v-if=\"editedBy\" :message=\"$options.i18n.actionWithAuthor\">\n      <template #actionText>\n        {{ actionText }}\n      </template>\n      <template #actionDetail>\n        {{ actionDetailText }}\n      </template>\n      <template #timeago>\n        <time-ago-tooltip :time=\"editedAt\" tooltip-placement=\"bottom\" />\n      </template>\n      <template #author>\n        <gl-link\n          :href=\"editedBy.path\"\n          :data-user-id=\"editedBy.id\"\n          class=\"js-user-link author-link hover:gl-underline\"\n        >\n          {{ editedBy.name }}\n        </gl-link>\n      </template>\n    </gl-sprintf>\n    <gl-sprintf v-else :message=\"$options.i18n.actionWithoutAuthor\">\n      <template #actionText>\n        {{ actionText }}\n      </template>\n      <template #actionDetail>\n        {{ actionDetailText }}\n      </template>\n      <template #timeago>\n        <time-ago-tooltip :time=\"editedAt\" tooltip-placement=\"bottom\" />\n      </template>\n    </gl-sprintf>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_edited_text.vue?vue&type=template&id=705c5bc8\"\nimport script from \"./note_edited_text.vue?vue&type=script&lang=js\"\nexport * from \"./note_edited_text.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 GlClearIconButton from '../../../shared_components/clear_icon_button/clear_icon_button';\nimport GlIcon from '../../icon/icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxSearchInput',\n  components: {\n    GlClearIconButton,\n    GlIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Search input placeholder text and aria-label\n     */\n    placeholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    }\n  },\n  computed: {\n    hasValue() {\n      return Boolean(this.value.length);\n    },\n    inputListeners() {\n      return {\n        ...this.$listeners,\n        input: event => {\n          this.$emit('input', event.target.value);\n        }\n      };\n    }\n  },\n  methods: {\n    clearInput() {\n      this.$emit('input', '');\n      this.focusInput();\n    },\n    focusInput() {\n      this.$refs.input.focus();\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-listbox-search\"},[_c('gl-icon',{staticClass:\"gl-listbox-search-icon\",attrs:{\"name\":\"search-sm\",\"size\":12}}),_vm._v(\" \"),_c('input',_vm._g({ref:\"input\",staticClass:\"gl-listbox-search-input\",attrs:{\"type\":\"search\",\"aria-label\":_vm.placeholder,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value}},_vm.inputListeners)),_vm._v(\" \"),(_vm.hasValue)?_c('gl-clear-icon-button',{staticClass:\"gl-listbox-search-clear-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)}}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxGroup',\n  props: {\n    name: {\n      type: String,\n      required: true\n    },\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  created() {\n    this.nameId = uniqueId('gl-listbox-group-');\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"gl-mb-0 gl-pl-0\",attrs:{\"role\":\"group\",\"aria-labelledby\":_vm.nameId}},[_c('li',{staticClass:\"gl-pb-2 gl-pl-4 gl-pt-3 gl-text-sm gl-font-bold gl-text-strong\",class:{ 'gl-sr-only': _vm.textSrOnly },attrs:{\"id\":_vm.nameId,\"role\":\"presentation\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.name))]})],2),_vm._v(\" \"),_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport isNil from 'lodash/isNil';\nimport { stopEvent } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, HOME, END, ARROW_UP, ARROW_DOWN } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport GlLoadingIcon from '../../loading_icon/loading_icon';\nimport GlIntersectionObserver from '../../../utilities/intersection_observer/intersection_observer';\nimport GlSearchBoxByType from '../../search_box_by_type/search_box_by_type';\nimport GlBaseDropdown from '../base_dropdown/base_dropdown';\nimport { translatePlural } from '../../../../utils/i18n';\nimport GlListboxItem from './listbox_item';\nimport GlListboxSearchInput from './listbox_search_input';\nimport GlListboxGroup from './listbox_group';\nimport { itemsValidator, isOption, flattenedOptions } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst ITEM_SELECTOR = '[role=\"option\"]';\nconst HEADER_ITEMS_BORDER_CLASSES = ['gl-border-b-1', 'gl-border-b-solid', 'gl-border-b-dropdown'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-border-t-dropdown', 'gl-pt-1', 'gl-mt-2'];\nconst SEARCH_INPUT_SELECTOR = '.gl-listbox-search-input';\nvar script = {\n  name: 'GlCollapsibleListbox',\n  HEADER_ITEMS_BORDER_CLASSES,\n  events: {\n    GL_DROPDOWN_SHOWN,\n    GL_DROPDOWN_HIDDEN\n  },\n  components: {\n    GlBaseDropdown,\n    GlListboxItem,\n    GlListboxGroup,\n    GlButton,\n    GlSearchBoxByType,\n    GlListboxSearchInput,\n    GlLoadingIcon,\n    GlIntersectionObserver\n  },\n  model: {\n    prop: 'selected',\n    event: 'select'\n  },\n  props: {\n    /**\n     * Items to display in the dropdown\n     */\n    items: {\n      type: Array,\n      required: false,\n      default: () => [],\n      validator: itemsValidator\n    },\n    /**\n     * Array of selected items values for multi-select and selected item value for single-select\n     */\n    selected: {\n      type: [Array, String, Number],\n      required: false,\n      default: () => []\n    },\n    /**\n     * Allow multi-selection\n     */\n    multiple: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Toggle button text\n     */\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Toggle text to be read by screen readers only\n     */\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /** The header text */\n    headerText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Styling option - dropdown's toggle category\n     */\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => value in buttonCategoryOptions\n    },\n    /**\n     * Styling option - dropdown's toggle variant\n     */\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => value in dropdownVariantOptions\n    },\n    /**\n     * The size of the dropdown toggle\n     */\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => value in buttonSizeOptions\n    },\n    /**\n     * Icon name that will be rendered in the toggle button\n     */\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Set to \"true\" to disable the dropdown\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when dropdown content (items) is loading\n     * It will render a small loader in the dropdown toggle and make it disabled\n     */\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Additional CSS classes to customize toggle appearance\n     */\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    /**\n     * Set to \"true\" to hide the caret\n     */\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Align listbox menu with respect to the toggle button\n     */\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => Object.keys(dropdownPlacements).includes(value)\n    },\n    /**\n     * Center selected item checkmark\n     */\n    isCheckCentered: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The `aria-labelledby` attribute value for the toggle button\n     * Provide the string of ids seperated by space\n     */\n    toggleAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The `aria-labelledby` attribute value for the list of options\n     * Provide the string of ids seperated by space\n     */\n    listAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Enable search\n     */\n    searchable: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when items search is in progress.\n     * It will display loading icon below the search input\n     */\n    searching: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Enables infinite scroll.\n     * When set to `true`, the `@bottom-reached` event will be fired when\n     * the bottom of the listbox is scrolled to.\n     * Does not support groups.\n     */\n    infiniteScroll: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * This prop is used for infinite scroll.\n     * It represents the total number of items that exist,\n     * even if they have not yet been loaded.\n     * Do not set this prop if the total number of items is unknown.\n     */\n    totalItems: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * This prop is used for infinite scroll.\n     * Set to `true` when more items are being loaded.\n     */\n    infiniteScrollLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Message to be displayed when filtering produced no results\n     */\n    noResultsText: {\n      type: String,\n      required: false,\n      default: 'No results found'\n    },\n    /**\n     * Search input placeholder text and aria-label\n     */\n    searchPlaceholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    /**\n     * The reset button's label, to be rendered in the header. If this is omitted, the button is not\n     * rendered.\n     * The reset button requires a header to be set, so this prop should be used in conjunction with\n     * headerText.\n     */\n    resetButtonLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * The select all button's label, to be rendered in the header. If this is omitted, the button is not\n     * rendered.\n     * The select all button requires a header to be set, so this prop should be used in conjunction with\n     * headerText.\n     */\n    showSelectAllButtonLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Render the toggle button as a block element\n     */\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom offset to be applied to Floating UI's offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    dropdownOffset: {\n      type: [Number, Object],\n      required: false,\n      default: undefined\n    },\n    /**\n     * Lets the dropdown extend to match its content's width, up to a maximum width\n     * defined by the `$gl-new-dropdown-max-width` variable.\n     */\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n     * fit in, setting this to fixed will let it position itself above its container.\n     * https://floating-ui.com/docs/computePosition#strategy\n     */\n    positioningStrategy: {\n      type: String,\n      required: false,\n      default: POSITION_ABSOLUTE,\n      validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n    },\n    /**\n     * Opens dropdown on render\n     */\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    srOnlyResultsLabel: {\n      type: Function,\n      required: false,\n      default: translatePlural('GlCollapsibleListbox.srOnlyResultsLabel', '%d result', '%d results')\n    }\n  },\n  data() {\n    return {\n      selectedValues: [],\n      toggleId: uniqueId('dropdown-toggle-btn-'),\n      listboxId: uniqueId('listbox-'),\n      nextFocusedItemIndex: null,\n      searchStr: '',\n      topBoundaryVisible: true,\n      bottomBoundaryVisible: true\n    };\n  },\n  computed: {\n    listboxTag() {\n      if (!this.hasItems || isOption(this.items[0])) return 'ul';\n      return 'div';\n    },\n    listboxClasses() {\n      return {\n        'top-scrim-visible': !this.topBoundaryVisible,\n        'bottom-scrim-visible': !this.bottomBoundaryVisible,\n        [GL_DROPDOWN_CONTENTS_CLASS]: true\n      };\n    },\n    itemTag() {\n      return this.listboxTag === 'ul' ? 'li' : 'div';\n    },\n    flattenedOptions() {\n      return flattenedOptions(this.items);\n    },\n    hasItems() {\n      return this.items.length > 0;\n    },\n    listboxToggleText() {\n      if (!this.toggleText) {\n        if (!this.multiple && this.selectedValues.length) {\n          var _this$flattenedOption;\n          return (_this$flattenedOption = this.flattenedOptions.find(_ref => {\n            let {\n              value\n            } = _ref;\n            return value === this.selectedValues[0];\n          })) === null || _this$flattenedOption === void 0 ? void 0 : _this$flattenedOption.text;\n        }\n        return '';\n      }\n      return this.toggleText;\n    },\n    selectedIndices() {\n      return this.selectedValues.map(selected => this.flattenedOptions.findIndex(_ref2 => {\n        let {\n          value\n        } = _ref2;\n        return value === selected;\n      })).sort();\n    },\n    showList() {\n      return this.flattenedOptions.length && !this.searching;\n    },\n    showNoResultsText() {\n      return !this.flattenedOptions.length && !this.searching;\n    },\n    announceSRSearchResults() {\n      return this.searchable && !this.showNoResultsText;\n    },\n    headerId() {\n      return this.headerText && uniqueId('listbox-header-');\n    },\n    showResetButton() {\n      if (!this.resetButtonLabel) {\n        return false;\n      }\n\n      /**\n       * if dropdown has no items\n       * reset all should be hidden\n       */\n      if (!this.hasItems) {\n        return false;\n      }\n\n      // hide if no selection\n      if (!this.selected || this.selected.length === 0) {\n        return false;\n      }\n\n      // only show reset button if show all button is not there\n      return !this.showSelectAllButton;\n    },\n    showSelectAllButton() {\n      if (!this.showSelectAllButtonLabel) {\n        return false;\n      }\n      if (!this.multiple) {\n        return false;\n      }\n\n      /**\n       * if dropdown has no items\n       * select all should be hidden\n       */\n      if (!this.hasItems) {\n        return false;\n      }\n      return this.selected.length !== this.flattenedOptions.length;\n    },\n    showIntersectionObserver() {\n      return this.infiniteScroll && !this.infiniteScrollLoading && !this.loading && !this.searching;\n    },\n    hasCustomToggle() {\n      return Boolean(this.$scopedSlots.toggle);\n    },\n    hasSelection() {\n      return Boolean(this.selectedValues.length);\n    },\n    toggleButtonClasses() {\n      const toggleClasses = [this.toggleClass];\n      if (!this.hasSelection) {\n        toggleClasses.push('!gl-text-subtle');\n      }\n      return toggleClasses;\n    },\n    hasHeader() {\n      return this.headerText || this.searchable;\n    },\n    hasFooter() {\n      return Boolean(this.$scopedSlots.footer);\n    }\n  },\n  watch: {\n    selected: {\n      immediate: true,\n      handler(newSelected) {\n        if (Array.isArray(newSelected)) {\n          if (process.env.NODE_ENV !== 'production' && !this.multiple && newSelected.length) {\n            throw new Error('To allow multi-selection, please, set \"multiple\" property to \"true\"');\n          }\n          this.selectedValues = [...newSelected];\n        } else {\n          this.selectedValues = isNil(newSelected) ? [] : [newSelected];\n        }\n      }\n    },\n    items: {\n      handler() {\n        this.$nextTick(() => {\n          /* Every time the list of items changes (on search),\n           * the observed elements are recreated, thus we need to start obesrving them again */\n          this.observeScroll();\n        });\n      }\n    },\n    ...(process.env.NODE_ENV !== 'production' ? {\n      resetButtonLabel: {\n        immediate: true,\n        handler(newResetButtonLabel) {\n          if (newResetButtonLabel && !this.headerText) {\n            throw new Error('The reset button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the resetButtonLabel prop.');\n          }\n        }\n      },\n      showSelectAllButtonLabel: {\n        immediate: true,\n        handler(showSelectAllButtonLabel) {\n          if (showSelectAllButtonLabel && !this.headerText) {\n            throw new Error('The select all button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the showSelectAllButtonLabel prop.');\n          }\n        }\n      },\n      infiniteScroll: {\n        immediate: true,\n        handler(newValue) {\n          if (newValue && this.items.some(item => !isOption(item))) {\n            throw new Error('Infinite scroll does not support groups. Please set the \"infiniteScroll\" prop to \"false\"');\n          }\n        }\n      }\n    } : {})\n  },\n  mounted() {\n    if (this.startOpened) {\n      this.open();\n    }\n    this.observeScroll();\n  },\n  beforeDestroy() {\n    var _this$scrollObserver;\n    (_this$scrollObserver = this.scrollObserver) === null || _this$scrollObserver === void 0 ? void 0 : _this$scrollObserver.disconnect();\n  },\n  methods: {\n    open() {\n      this.$refs.baseDropdown.open();\n    },\n    close() {\n      this.$refs.baseDropdown.close();\n    },\n    groupClasses(index) {\n      return index === 0 ? null : GROUP_TOP_BORDER_CLASSES;\n    },\n    onShow() {\n      if (this.searchable) {\n        this.focusSearchInput();\n      } else {\n        var _this$selectedIndices;\n        this.focusItem((_this$selectedIndices = this.selectedIndices[0]) !== null && _this$selectedIndices !== void 0 ? _this$selectedIndices : 0, this.getFocusableListItemElements());\n      }\n      /**\n       * Emitted when dropdown is shown\n       *\n       * @event shown\n       */\n      this.$emit(GL_DROPDOWN_SHOWN);\n    },\n    onHide() {\n      /**\n       * Emitted when dropdown is hidden\n       *\n       * @event hidden\n       */\n      this.$emit(GL_DROPDOWN_HIDDEN);\n      this.nextFocusedItemIndex = null;\n    },\n    onKeydown(event) {\n      const {\n        code,\n        target\n      } = event;\n      const elements = this.getFocusableListItemElements();\n      if (elements.length < 1) return;\n      let stop = true;\n      const isSearchInput = target.matches(SEARCH_INPUT_SELECTOR);\n      if (code === HOME) {\n        if (isSearchInput) {\n          return;\n        }\n        this.focusItem(0, elements);\n      } else if (code === END) {\n        if (isSearchInput) {\n          return;\n        }\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP) {\n        if (isSearchInput) {\n          return;\n        }\n        if (this.searchable && elements.indexOf(target) === 0) {\n          this.focusSearchInput();\n        } else {\n          this.focusNextItem(event, elements, -1);\n        }\n      } else if (code === ARROW_DOWN) {\n        if (isSearchInput) {\n          this.focusItem(0, elements);\n        } else {\n          this.focusNextItem(event, elements, 1);\n        }\n      } else {\n        stop = false;\n      }\n      if (stop) {\n        stopEvent(event);\n      }\n    },\n    getFocusableListItemElements() {\n      var _this$$refs$list;\n      const items = (_this$$refs$list = this.$refs.list) === null || _this$$refs$list === void 0 ? void 0 : _this$$refs$list.querySelectorAll(ITEM_SELECTOR);\n      return Array.from(items || []);\n    },\n    focusNextItem(event, elements, offset) {\n      const {\n        target\n      } = event;\n      const currentIndex = elements.indexOf(target);\n      const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n      this.focusItem(nextIndex, elements);\n    },\n    focusItem(index, elements) {\n      var _elements$index;\n      this.nextFocusedItemIndex = index;\n      (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n    },\n    focusSearchInput() {\n      this.$refs.searchBox.focusInput();\n    },\n    onSelect(item, isSelected) {\n      if (this.multiple) {\n        this.onMultiSelect(item.value, isSelected);\n      } else {\n        this.onSingleSelect(item.value, isSelected);\n      }\n    },\n    isSelected(item) {\n      return this.selectedValues.some(value => value === item.value);\n    },\n    isFocused(item) {\n      return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n    },\n    onSingleSelect(value, isSelected) {\n      if (isSelected) {\n        /**\n         * Emitted when selection is changed\n         *\n         * @event select\n         */\n        this.$emit('select', value);\n      }\n      this.closeAndFocus();\n    },\n    onMultiSelect(value, isSelected) {\n      if (isSelected) {\n        this.$emit('select', [...this.selectedValues, value]);\n      } else {\n        this.$emit('select', this.selectedValues.filter(selectedValue => selectedValue !== value));\n      }\n    },\n    search(searchTerm) {\n      /**\n       * Emitted when the search query string is changed\n       *\n       * @event search\n       * @type {string}\n       */\n      this.$emit('search', searchTerm);\n    },\n    onResetButtonClicked() {\n      /**\n       * Emitted when the reset button is clicked\n       *\n       * @event reset\n       */\n      this.$emit('reset');\n    },\n    onSelectAllButtonClicked() {\n      /**\n       * Emitted when the select all button is clicked\n       *\n       * @event select-all\n       */\n      this.$emit('select-all');\n    },\n    closeAndFocus() {\n      this.$refs.baseDropdown.closeAndFocus();\n    },\n    onIntersectionObserverAppear() {\n      /**\n       * Emitted when bottom of listbox has been scrolled to.\n       * Used for infinite scroll.\n       *\n       * @event bottom-reached\n       */\n      this.$emit('bottom-reached');\n    },\n    listboxItemMoreItemsAriaAttributes(index) {\n      if (this.totalItems === null) {\n        return {};\n      }\n      return {\n        'aria-setsize': this.totalItems,\n        'aria-posinset': index + 1\n      };\n    },\n    observeScroll() {\n      var _this$scrollObserver2;\n      const root = this.$refs.list;\n      const options = {\n        rootMargin: '8px',\n        root,\n        threshold: 1.0\n      };\n      (_this$scrollObserver2 = this.scrollObserver) === null || _this$scrollObserver2 === void 0 ? void 0 : _this$scrollObserver2.disconnect();\n      const observer = new IntersectionObserver(entries => {\n        entries.forEach(entry => {\n          var _entry$target;\n          this[(_entry$target = entry.target) === null || _entry$target === void 0 ? void 0 : _entry$target.$__visibilityProp] = entry.isIntersecting;\n        });\n      }, options);\n      const topBoundary = this.$refs['top-boundary'];\n      const bottomBoundary = this.$refs['bottom-boundary'];\n      if (topBoundary) {\n        topBoundary.$__visibilityProp = 'topBoundaryVisible';\n        observer.observe(topBoundary);\n      }\n      if (bottomBoundary) {\n        bottomBoundary.$__visibilityProp = 'bottomBoundaryVisible';\n        observer.observe(bottomBoundary);\n      }\n      this.scrollObserver = observer;\n    },\n    isOption\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",attrs:{\"aria-haspopup\":\"listbox\",\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"block\":_vm.block,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.listboxToggleText,\"toggle-class\":_vm.toggleButtonClasses,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.headerText)?_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center !gl-p-4\",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:\"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.headerId,\"data-testid\":\"listbox-header-text\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.headerText)+\"\\n    \")]),_vm._v(\" \"),(_vm.showResetButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-reset-button\"},on:{\"click\":_vm.onResetButtonClicked}},[_vm._v(\"\\n      \"+_vm._s(_vm.resetButtonLabel)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-select-all-button\"},on:{\"click\":_vm.onSelectAllButtonClicked}},[_vm._v(\"\\n      \"+_vm._s(_vm.showSelectAllButtonLabel)+\"\\n    \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:\"searchBox\",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{\"data-testid\":\"listbox-search-input\",\"placeholder\":_vm.searchPlaceholder},on:{\"input\":_vm.search,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:\"searchStr\"}}),_vm._v(\" \"),(_vm.searching)?_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-search-loader\",\"size\":\"md\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showList)?_c(_vm.listboxTag,{ref:\"list\",tag:\"component\",staticClass:\"gl-new-dropdown-contents gl-new-dropdown-contents-with-scrim-overlay\",class:_vm.listboxClasses,attrs:{\"id\":_vm.listboxId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,\"role\":\"listbox\",\"tabindex\":\"0\"},on:{\"keydown\":_vm.onKeydown}},[_c(_vm.itemTag,{tag:\"component\",staticClass:\"top-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"top-scrim\"}},[_c('div',{staticClass:\"top-scrim\",class:{ 'top-scrim-light': !_vm.hasHeader, 'top-scrim-dark': _vm.hasHeader }})]),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"top-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{\"data-testid\":(\"listbox-item-\" + (item.value)),\"is-selected\":_vm.isSelected(item),\"is-focused\":_vm.isFocused(item),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n            \"+_vm._s(item.text)+\"\\n          \")]},{\"item\":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{\"name\":item.text,\"text-sr-only\":item.textSrOnly},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{\"data-testid\":(\"listbox-item-\" + (option.value)),\"is-selected\":_vm.isSelected(option),\"is-focused\":_vm.isFocused(option),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(option, $event)}}},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n              \"+_vm._s(option.text)+\"\\n            \")]},{\"item\":option})],2)})],2)]]}),_vm._v(\" \"),(_vm.infiniteScrollLoading)?_c(_vm.itemTag,{tag:\"component\"},[_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-infinite-scroll-loader\",\"size\":\"md\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showIntersectionObserver)?_c('gl-intersection-observer',{on:{\"appear\":_vm.onIntersectionObserverAppear}}):_vm._e(),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"bottom-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c(_vm.itemTag,{tag:\"component\",staticClass:\"bottom-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"bottom-scrim\"}},[_c('div',{staticClass:\"bottom-scrim\",class:{ '!gl-rounded-none': _vm.hasFooter }})])],2):_vm._e(),_vm._v(\" \"),(_vm.announceSRSearchResults)?_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"listbox-number-of-results\",\"aria-live\":\"assertive\"}},[_vm._t(\"search-summary-sr-only\",function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+\"\\n    \")]})],2):(_vm.showNoResultsText)?_c('div',{staticClass:\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle\",attrs:{\"aria-live\":\"assertive\",\"data-testid\":\"listbox-no-results-text\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.noResultsText)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { ITEM_SELECTOR, SEARCH_INPUT_SELECTOR };\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n  return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-editable-item',{ref:\"editable\",staticClass:\"block confidentiality\",attrs:{\"title\":_vm.__('Confidentiality'),\"tracking\":_vm.$options.tracking,\"loading\":_vm.isLoading,\"data-testid\":\"sidebar-confidentiality\"},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_c('div',[(!_vm.isLoading)?_c('sidebar-confidentiality-content',{class:{ 'gl-mt-3': !_vm.isClassicSidebar },attrs:{\"confidential\":_vm.confidential,\"issuable-type\":_vm.issuableType},on:{\"expandSidebar\":_vm.expandSidebar}}):_vm._e()],1)]},proxy:true},{key:\"default\",fn:function(){return [_c('sidebar-confidentiality-content',{attrs:{\"confidential\":_vm.confidential,\"issuable-type\":_vm.issuableType}}),_vm._v(\" \"),_c('sidebar-confidentiality-form',{attrs:{\"iid\":_vm.iid,\"full-path\":_vm.fullPath,\"confidential\":_vm.confidential,\"issuable-type\":_vm.issuableType},on:{\"closeForm\":_vm.closeForm}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_confidentiality_content.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_confidentiality_content.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlAlert, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { TYPE_EPIC, WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants';\nimport { confidentialityInfoText } from '~/vue_shared/constants';\n\nexport default {\n  components: {\n    GlIcon,\n    GlAlert,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    confidential: {\n      type: Boolean,\n      required: true,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    confidentialBodyText() {\n      return confidentialityInfoText(\n        this.issuableType === TYPE_EPIC ? WORKSPACE_GROUP : WORKSPACE_PROJECT,\n        this.issuableType,\n      );\n    },\n    confidentialIcon() {\n      return this.confidential ? 'eye-slash' : 'eye';\n    },\n    tooltipLabel() {\n      return this.confidential ? __('Confidential') : __('Not confidential');\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div\n      v-gl-tooltip.viewport.left\n      :title=\"tooltipLabel\"\n      class=\"sidebar-collapsed-icon\"\n      data-testid=\"sidebar-collapsed-icon\"\n      @click=\"$emit('expandSidebar')\"\n    >\n      <gl-icon\n        :size=\"16\"\n        :name=\"confidentialIcon\"\n        class=\"sidebar-item-icon gl-inline-block\"\n        :class=\"{ 'is-active': confidential }\"\n      />\n    </div>\n    <gl-icon\n      :size=\"16\"\n      :name=\"confidentialIcon\"\n      class=\"sidebar-item-icon hide-collapsed gl-inline-block\"\n      :class=\"{ 'is-active': confidential }\"\n    />\n    <span class=\"hide-collapsed\" data-testid=\"confidential-text\">\n      {{ tooltipLabel }}\n      <gl-alert\n        v-if=\"confidential\"\n        :show-icon=\"false\"\n        :dismissible=\"false\"\n        variant=\"warning\"\n        class=\"gl-mt-3\"\n      >\n        {{ confidentialBodyText }}\n      </gl-alert>\n    </span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_confidentiality_content.vue?vue&type=template&id=cc3f9314\"\nimport script from \"./sidebar_confidentiality_content.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_confidentiality_content.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',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.tooltipLabel,\"data-testid\":\"sidebar-collapsed-icon\"},on:{\"click\":function($event){return _vm.$emit('expandSidebar')}}},[_c('gl-icon',{staticClass:\"sidebar-item-icon gl-inline-block\",class:{ 'is-active': _vm.confidential },attrs:{\"size\":16,\"name\":_vm.confidentialIcon}})],1),_vm._v(\" \"),_c('gl-icon',{staticClass:\"sidebar-item-icon hide-collapsed gl-inline-block\",class:{ 'is-active': _vm.confidential },attrs:{\"size\":16,\"name\":_vm.confidentialIcon}}),_vm._v(\" \"),_c('span',{staticClass:\"hide-collapsed\",attrs:{\"data-testid\":\"confidential-text\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.tooltipLabel)+\"\\n    \"),(_vm.confidential)?_c('gl-alert',{staticClass:\"gl-mt-3\",attrs:{\"show-icon\":false,\"dismissible\":false,\"variant\":\"warning\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.confidentialBodyText)+\"\\n    \")]):_vm._e()],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!./sidebar_confidentiality_form.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_confidentiality_form.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlButton } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { TYPE_ISSUE, TYPE_TEST_CASE, issuableTypeText } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\nimport { confidentialityQueries } from '../../queries/constants';\n\nexport default {\n  i18n: {\n    confidentialityOnWarning: __(\n      'You are going to turn on confidentiality. Only %{context} members with %{strongStart}%{permissions}%{strongEnd} can view or be notified about this %{issuableType}.',\n    ),\n    confidentialityOffWarning: __(\n      'You are going to turn off the confidentiality. This means %{strongStart}everyone%{strongEnd} will be able to see%{commentText} this %{issuableType}.',\n    ),\n  },\n  components: {\n    GlSprintf,\n    GlButton,\n  },\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    confidential: {\n      required: true,\n      type: Boolean,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      loading: false,\n    };\n  },\n  computed: {\n    toggleButtonText() {\n      if (this.loading) {\n        return __('Applying');\n      }\n      return this.confidential ? __('Turn off') : __('Turn on');\n    },\n    warningMessage() {\n      return this.confidential\n        ? this.$options.i18n.confidentialityOffWarning\n        : this.$options.i18n.confidentialityOnWarning;\n    },\n    isIssue() {\n      return this.issuableType === TYPE_ISSUE;\n    },\n    isTestCase() {\n      return this.issuableType === TYPE_TEST_CASE;\n    },\n    isIssueOrTestCase() {\n      return this.isIssue || this.isTestCase;\n    },\n    context() {\n      return this.isIssueOrTestCase ? __('project') : __('group');\n    },\n    workspacePath() {\n      return this.isIssueOrTestCase\n        ? {\n            projectPath: this.fullPath,\n          }\n        : {\n            groupPath: this.fullPath,\n          };\n    },\n    permissions() {\n      return this.isIssue\n        ? __('at least the Planner role, the author, and assignees')\n        : __('at least the Planner role');\n    },\n    issuableTypeText() {\n      return issuableTypeText[this.issuableType];\n    },\n    commentText() {\n      return this.isTestCase ? '' : __(' and leave a comment on');\n    },\n  },\n  methods: {\n    submitForm() {\n      this.loading = true;\n      this.$apollo\n        .mutate({\n          mutation: confidentialityQueries[this.issuableType].mutation,\n          variables: {\n            input: {\n              ...this.workspacePath,\n              iid: this.iid,\n              confidential: !this.confidential,\n            },\n          },\n        })\n        .then(\n          ({\n            data: {\n              issuableSetConfidential: { errors },\n            },\n          }) => {\n            if (errors.length) {\n              createAlert({\n                message: errors[0],\n              });\n            } else {\n              this.$emit('closeForm');\n            }\n          },\n        )\n        .catch(() => {\n          createAlert({\n            message: sprintf(\n              __('Something went wrong while setting %{issuableType} confidentiality.'),\n              {\n                issuableType: this.issuableTypeText,\n              },\n            ),\n          });\n        })\n        .finally(() => {\n          this.loading = false;\n        });\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"dropdown show\">\n    <div class=\"dropdown-menu sidebar-item-warning-message\">\n      <div>\n        <p data-testid=\"warning-message\">\n          <gl-sprintf :message=\"warningMessage\">\n            <template #strong=\"{ content }\">\n              <strong>\n                <gl-sprintf :message=\"content\">\n                  <template #permissions>{{ permissions }}</template>\n                </gl-sprintf>\n              </strong>\n            </template>\n            <template #context>{{ context }}</template>\n            <template #commentText>{{ commentText }}</template>\n            <template #issuableType>{{ issuableTypeText }}</template>\n          </gl-sprintf>\n        </p>\n        <div class=\"sidebar-item-warning-message-actions\">\n          <gl-button class=\"gl-mr-3\" data-testid=\"confidential-cancel\" @click=\"$emit('closeForm')\">\n            {{ __('Cancel') }}\n          </gl-button>\n          <gl-button\n            category=\"secondary\"\n            variant=\"confirm\"\n            :disabled=\"loading\"\n            :loading=\"loading\"\n            data-testid=\"confidential-toggle\"\n            @click.prevent=\"submitForm\"\n          >\n            {{ toggleButtonText }}\n          </gl-button>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_confidentiality_form.vue?vue&type=template&id=2980d1fb\"\nimport script from \"./sidebar_confidentiality_form.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_confidentiality_form.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:\"dropdown show\"},[_c('div',{staticClass:\"dropdown-menu sidebar-item-warning-message\"},[_c('div',[_c('p',{attrs:{\"data-testid\":\"warning-message\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.warningMessage},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('strong',[_c('gl-sprintf',{attrs:{\"message\":content},scopedSlots:_vm._u([{key:\"permissions\",fn:function(){return [_vm._v(_vm._s(_vm.permissions))]},proxy:true}],null,true)})],1)]}},{key:\"context\",fn:function(){return [_vm._v(_vm._s(_vm.context))]},proxy:true},{key:\"commentText\",fn:function(){return [_vm._v(_vm._s(_vm.commentText))]},proxy:true},{key:\"issuableType\",fn:function(){return [_vm._v(_vm._s(_vm.issuableTypeText))]},proxy:true}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"sidebar-item-warning-message-actions\"},[_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"data-testid\":\"confidential-cancel\"},on:{\"click\":function($event){return _vm.$emit('closeForm')}}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Cancel'))+\"\\n        \")]),_vm._v(\" \"),_c('gl-button',{attrs:{\"category\":\"secondary\",\"variant\":\"confirm\",\"disabled\":_vm.loading,\"loading\":_vm.loading,\"data-testid\":\"confidential-toggle\"},on:{\"click\":function($event){$event.preventDefault();return _vm.submitForm.apply(null, arguments)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.toggleButtonText)+\"\\n        \")])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport produce from 'immer';\nimport Vue from 'vue';\nimport { createAlert } from '~/alert';\nimport { __, sprintf } from '~/locale';\nimport { Tracking } from '../../constants';\nimport { confidentialityQueries } from '../../queries/constants';\nimport SidebarEditableItem from '../sidebar_editable_item.vue';\nimport SidebarConfidentialityContent from './sidebar_confidentiality_content.vue';\nimport SidebarConfidentialityForm from './sidebar_confidentiality_form.vue';\n\nexport const confidentialWidget = Vue.observable({\n  setConfidentiality: null,\n});\n\nconst hideDropdownEvent = new CustomEvent('hiddenGlDropdown', {\n  bubbles: true,\n});\n\nexport default {\n  tracking: {\n    event: Tracking.editEvent,\n    label: Tracking.rightSidebarLabel,\n    property: 'confidentiality',\n  },\n  components: {\n    SidebarEditableItem,\n    SidebarConfidentialityContent,\n    SidebarConfidentialityForm,\n  },\n  inject: {\n    isClassicSidebar: {\n      default: false,\n    },\n  },\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      confidential: false,\n    };\n  },\n  apollo: {\n    confidential: {\n      query() {\n        return confidentialityQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: String(this.iid),\n        };\n      },\n      update(data) {\n        return data.workspace?.issuable?.confidential || false;\n      },\n      skip() {\n        return !this.iid;\n      },\n      result({ data }) {\n        if (!data) {\n          return;\n        }\n        this.$emit('confidentialityUpdated', data.workspace?.issuable?.confidential);\n      },\n      error() {\n        createAlert({\n          message: sprintf(\n            __('Something went wrong while setting %{issuableType} confidentiality.'),\n            {\n              issuableType: this.issuableType,\n            },\n          ),\n        });\n      },\n    },\n  },\n  computed: {\n    isLoading() {\n      return this.$apollo.queries.confidential.loading;\n    },\n  },\n  mounted() {\n    confidentialWidget.setConfidentiality = this.setConfidentiality;\n  },\n  destroyed() {\n    confidentialWidget.setConfidentiality = null;\n  },\n  methods: {\n    closeForm() {\n      this.$refs.editable.collapse();\n      this.$el.dispatchEvent(hideDropdownEvent);\n      this.$emit('closeForm');\n    },\n    // synchronizing the quick action with the sidebar widget\n    // this is a temporary solution until we have confidentiality real-time updates\n    setConfidentiality() {\n      const { defaultClient: client } = this.$apollo.provider.clients;\n      const sourceData = client.readQuery({\n        query: confidentialityQueries[this.issuableType].query,\n        variables: { fullPath: this.fullPath, iid: this.iid },\n      });\n\n      const data = produce(sourceData, (draftData) => {\n        draftData.workspace.issuable.confidential = !this.confidential;\n      });\n\n      client.writeQuery({\n        query: confidentialityQueries[this.issuableType].query,\n        variables: { fullPath: this.fullPath, iid: this.iid },\n        data,\n      });\n    },\n    expandSidebar() {\n      this.$refs.editable.expand();\n      this.$emit('expandSidebar');\n    },\n  },\n};\n</script>\n\n<template>\n  <sidebar-editable-item\n    ref=\"editable\"\n    :title=\"__('Confidentiality')\"\n    :tracking=\"$options.tracking\"\n    :loading=\"isLoading\"\n    class=\"block confidentiality\"\n    data-testid=\"sidebar-confidentiality\"\n  >\n    <template #collapsed>\n      <div>\n        <sidebar-confidentiality-content\n          v-if=\"!isLoading\"\n          :confidential=\"confidential\"\n          :issuable-type=\"issuableType\"\n          :class=\"{ 'gl-mt-3': !isClassicSidebar }\"\n          @expandSidebar=\"expandSidebar\"\n        />\n      </div>\n    </template>\n    <template #default>\n      <sidebar-confidentiality-content :confidential=\"confidential\" :issuable-type=\"issuableType\" />\n      <sidebar-confidentiality-form\n        :iid=\"iid\"\n        :full-path=\"fullPath\"\n        :confidential=\"confidential\"\n        :issuable-type=\"issuableType\"\n        @closeForm=\"closeForm\"\n      />\n    </template>\n  </sidebar-editable-item>\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_confidentiality_widget.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_confidentiality_widget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sidebar_confidentiality_widget.vue?vue&type=template&id=0e1d964c\"\nimport script from \"./sidebar_confidentiality_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_confidentiality_widget.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 GlButton from '../../base/button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlEmptyState',\n  components: {\n    GlButton\n  },\n  props: {\n    /**\n     * The title (heading) of the empty state.\n     */\n    title: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's URL.\n     */\n    svgPath: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's height used to prevent content reflow.\n     */\n    svgHeight: {\n      type: Number,\n      required: false,\n      default: 144\n    },\n    /**\n     * The desciption/body text of the empty state.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's href.\n     */\n    primaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's text. If falsey, the button is not shown.\n     */\n    primaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's href.\n     */\n    secondaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's text. If falsey, the button is not shown.\n     */\n    secondaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Determines whether to render the compact layout.\n     */\n    compact: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    invertInDarkMode: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * CSS classes to add to the content container\n     */\n    contentClass: {\n      type: [Array, String, Object],\n      required: false,\n      default: () => []\n    }\n  },\n  computed: {\n    height() {\n      return this.shouldPreventImageReflow ? this.svgHeight : null;\n    },\n    shouldPreventImageReflow() {\n      return Boolean(this.svgHeight);\n    },\n    shouldRenderPrimaryButton() {\n      return Boolean(this.primaryButtonLink && this.primaryButtonText);\n    },\n    shouldRenderSecondaryButton() {\n      return Boolean(this.secondaryButtonLink && this.secondaryButtonText);\n    },\n    contentClasses() {\n      return [this.compact ? 'gl-grow gl-basis-0 gl-px-4' : 'gl-m-auto gl-p-5', this.contentClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"gl-flex\",class:{\n    'gl-empty-state gl-flex-col gl-text-center': !_vm.compact,\n    'gl-flex-row': _vm.compact,\n  }},[_c('div',{class:{ 'gl-hidden gl-px-4 sm:gl-block': _vm.compact, 'gl-max-w-full': !_vm.compact }},[(_vm.svgPath)?_c('img',{staticClass:\"gl-max-w-full\",class:{ 'gl-dark-invert-keep-hue': _vm.invertInDarkMode },attrs:{\"src\":_vm.svgPath,\"alt\":\"\",\"height\":_vm.height}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"gl-empty-state-content gl-mx-auto gl-my-0\",class:_vm.contentClasses,attrs:{\"data-testid\":\"gl-empty-state-content\"}},[_vm._t(\"title\",function(){return [_c('h1',{staticClass:\"gl-mb-0 gl-mt-0 gl-text-size-h-display gl-leading-36\",class:_vm.compact ? 'h5' : 'h4'},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")])]}),_vm._v(\" \"),(_vm.description || _vm.$scopedSlots.description)?_c('p',{ref:\"description\",staticClass:\"gl-mb-0 gl-mt-4 gl-text-subtle\"},[_vm._t(\"description\",function(){return [_vm._v(\"\\n        \"+_vm._s(_vm.description)+\"\\n      \")]})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-5 gl-flex gl-flex-wrap\",class:{ 'gl-justify-center': !_vm.compact }},[_vm._t(\"actions\",function(){return [(_vm.shouldRenderPrimaryButton)?_c('gl-button',{staticClass:\"gl-mb-3\",class:_vm.compact ? 'gl-mr-3' : 'gl-mx-2',attrs:{\"variant\":\"confirm\",\"href\":_vm.primaryButtonLink}},[_vm._v(_vm._s(_vm.primaryButtonText))]):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderSecondaryButton)?_c('gl-button',{staticClass:\"gl-mb-3 gl-mr-3\",class:{ '!gl-mx-2': !_vm.compact },attrs:{\"href\":_vm.secondaryButtonLink}},[_vm._v(_vm._s(_vm.secondaryButtonText)+\"\\n        \")]):_vm._e()]})],2)],2)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"diffGeneratedSubscription\"},\"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\":\"mergeRequestDiffGenerated\"},\"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\":\"diffStatsSummary\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileCount\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":220}};\n    doc.loc.source = {\"body\":\"subscription diffGeneratedSubscription($issuableId: IssuableID!) {\\n  mergeRequestDiffGenerated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      id\\n      diffStatsSummary {\\n        fileCount\\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[\"diffGeneratedSubscription\"] = oneQuery(doc, \"diffGeneratedSubscription\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"js-issuable-move-block issuable-move-dropdown sidebar-move-issue-dropdown\"},[_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"data-testid\":\"move-collapsed\",\"title\":_vm.dropdownButtonTitle},on:{\"click\":function($event){return _vm.$emit('toggle-collapse')}}},[_c('gl-icon',{attrs:{\"name\":\"arrow-right\"}})],1),_vm._v(\" \"),_c('gl-collapsible-listbox',{ref:\"dropdown\",attrs:{\"items\":_vm.projectsList,\"block\":true,\"multiple\":true,\"searchable\":true,\"searching\":_vm.isSearching,\"search-placeholder\":_vm.__('Search project'),\"no-results-text\":_vm.noResultsText,\"header-text\":_vm.dropdownButtonTitle},on:{\"hidden\":_vm.handleDropdownHide,\"shown\":_vm.triggerSearch,\"search\":_vm.fetchProjects,\"select\":_vm.handleProjectSelect},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('gl-button',{staticClass:\"js-sidebar-dropdown-toggle hide-collapsed gl-w-full\",attrs:{\"loading\":_vm.moveInProgress,\"size\":\"medium\",\"data-testid\":\"dropdown-button\",\"disabled\":_vm.moveInProgress || _vm.disabled}},[_vm._v(_vm._s(_vm.dropdownButtonTitle))])]},proxy:true},{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"gl-p-3\",attrs:{\"data-testid\":\"footer\"}},[_c('gl-button',{staticClass:\"gl-w-full\",attrs:{\"category\":\"primary\",\"variant\":\"confirm\",\"disabled\":!Boolean(_vm.selectedProjects.length),\"data-testid\":\"dropdown-move-button\"},on:{\"click\":_vm.handleMoveClick}},[_vm._v(_vm._s(_vm.__('Move')))])],1)]},proxy:true}]),model:{value:(_vm.selectedProjects),callback:function ($$v) {_vm.selectedProjects=$$v},expression:\"selectedProjects\"}})],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!./issuable_move_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!./issuable_move_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlIcon,\n  GlButton,\n  GlCollapsibleListbox,\n  GlTooltipDirective as GlTooltip,\n} from '@gitlab/ui';\nimport { debounce } from 'lodash';\nimport { __ } from '~/locale';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport axios from '~/lib/utils/axios_utils';\n\nexport default {\n  components: {\n    GlIcon,\n    GlButton,\n    GlCollapsibleListbox,\n  },\n  directives: {\n    GlTooltip,\n  },\n  props: {\n    projectsFetchPath: {\n      type: String,\n      required: true,\n    },\n    dropdownButtonTitle: {\n      type: String,\n      required: true,\n    },\n    dropdownHeaderTitle: {\n      type: String,\n      required: true,\n    },\n    moveInProgress: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      projects: [],\n      projectsList: [],\n      selectedProjects: [],\n      noResultsText: '',\n      isSearching: false,\n    };\n  },\n  mounted() {\n    this.fetchProjects = debounce(this.fetchProjects, DEFAULT_DEBOUNCE_AND_THROTTLE_MS);\n  },\n  methods: {\n    triggerSearch() {\n      this.$refs.dropdown.search();\n    },\n    async fetchProjects(search = '') {\n      this.isSearching = true;\n\n      try {\n        const { data } = await axios.get(this.projectsFetchPath, {\n          params: {\n            search,\n          },\n        });\n        this.projects = data;\n        this.projectsList = data.map((item) => ({\n          value: item.id,\n          text: item.name_with_namespace,\n        }));\n\n        if (!this.projectsList.length) {\n          this.noResultsText = __('No matching results');\n        }\n      } catch (e) {\n        this.noResultsText = __('Failed to load projects');\n      } finally {\n        this.isSearching = false;\n      }\n    },\n    handleProjectSelect(items) {\n      // hack: simulate a single select to prevent the dropdown from closing\n      // todo: switch back to single select when https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2363 is fixed\n      this.selectedProjects = [items[items.length - 1]];\n    },\n    handleMoveClick() {\n      this.$refs.dropdown.close();\n      this.$emit(\n        'move-issuable',\n        this.projects.find((item) => item.id === this.selectedProjects[0]),\n      );\n    },\n    handleDropdownHide() {\n      this.$emit('dropdown-close');\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"js-issuable-move-block issuable-move-dropdown sidebar-move-issue-dropdown\">\n    <div\n      v-gl-tooltip.left.viewport\n      data-testid=\"move-collapsed\"\n      :title=\"dropdownButtonTitle\"\n      class=\"sidebar-collapsed-icon\"\n      @click=\"$emit('toggle-collapse')\"\n    >\n      <gl-icon name=\"arrow-right\" />\n    </div>\n    <gl-collapsible-listbox\n      ref=\"dropdown\"\n      v-model=\"selectedProjects\"\n      :items=\"projectsList\"\n      :block=\"true\"\n      :multiple=\"true\"\n      :searchable=\"true\"\n      :searching=\"isSearching\"\n      :search-placeholder=\"__('Search project')\"\n      :no-results-text=\"noResultsText\"\n      :header-text=\"dropdownButtonTitle\"\n      @hidden=\"handleDropdownHide\"\n      @shown=\"triggerSearch\"\n      @search=\"fetchProjects\"\n      @select=\"handleProjectSelect\"\n    >\n      <template #toggle>\n        <gl-button\n          :loading=\"moveInProgress\"\n          size=\"medium\"\n          class=\"js-sidebar-dropdown-toggle hide-collapsed gl-w-full\"\n          data-testid=\"dropdown-button\"\n          :disabled=\"moveInProgress || disabled\"\n          >{{ dropdownButtonTitle }}</gl-button\n        >\n      </template>\n      <template #footer>\n        <div data-testid=\"footer\" class=\"gl-p-3\">\n          <gl-button\n            category=\"primary\"\n            variant=\"confirm\"\n            :disabled=\"!Boolean(selectedProjects.length)\"\n            class=\"gl-w-full\"\n            data-testid=\"dropdown-move-button\"\n            @click=\"handleMoveClick\"\n            >{{ __('Move') }}</gl-button\n          >\n        </div>\n      </template>\n    </gl-collapsible-listbox>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./issuable_move_dropdown.vue?vue&type=template&id=23d44ad0\"\nimport script from \"./issuable_move_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./issuable_move_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","var baseInverter = require('./_baseInverter');\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n  return function(object, iteratee) {\n    return baseInverter(object, setter, toIteratee(iteratee), {});\n  };\n}\n\nmodule.exports = createInverter;\n","import { s__ } from '~/locale';\nimport vulnerabilityStateMutations from 'ee/security_dashboard/graphql/mutate_vulnerability_state';\nimport dismissFindingMutation from 'ee/security_dashboard/graphql/mutations/dismiss_finding.mutation.graphql';\nimport revertFindingToDetectedMutation from 'ee/security_dashboard/graphql/mutations/revert_finding_to_detected.mutation.graphql';\n\nimport {\n  FEEDBACK_TYPE_ISSUE,\n  FEEDBACK_TYPE_MERGE_REQUEST,\n} from '~/vue_shared/security_reports/constants';\n\n/**\n * Vulnerability severities as provided by the backend on vulnerability\n * objects.\n */\nexport const CRITICAL = 'critical';\nexport const HIGH = 'high';\nexport const MEDIUM = 'medium';\nexport const LOW = 'low';\nexport const INFO = 'info';\nexport const UNKNOWN = 'unknown';\n\n/**\n * All vulnerability severities in decreasing order.\n */\nexport const SEVERITIES = [CRITICAL, HIGH, MEDIUM, LOW, INFO, UNKNOWN];\n\nexport const SEVERITY_COUNT_LIMIT = 1000;\n\nconst falsePositiveMessage = s__('VulnerabilityManagement|Will not fix or a false-positive');\n\nexport const DISMISSAL_REASONS = {\n  acceptable_risk: s__('VulnerabilityDismissalReasons|Acceptable risk'),\n  false_positive: s__('VulnerabilityDismissalReasons|False positive'),\n  mitigating_control: s__('VulnerabilityDismissalReasons|Mitigating control'),\n  used_in_tests: s__('VulnerabilityDismissalReasons|Used in tests'),\n  not_applicable: s__('VulnerabilityDismissalReasons|Not applicable'),\n};\n\nexport const VULNERABILITY_STATES = {\n  detected: s__('VulnerabilityStatusTypes|Needs triage'),\n  confirmed: s__('VulnerabilityStatusTypes|Confirmed'),\n  dismissed: s__('VulnerabilityStatusTypes|Dismissed'),\n  resolved: s__('VulnerabilityStatusTypes|Resolved'),\n};\n\nexport const VULNERABILITY_STATE_OBJECTS = {\n  detected: {\n    action: 'revert',\n    state: 'detected',\n    searchParamValue: 'DETECTED',\n    buttonText: VULNERABILITY_STATES.detected,\n    dropdownText: s__('VulnerabilityStatusTypes|Needs triage'),\n    dropdownDescription: s__('VulnerabilityManagement|Requires assessment'),\n    description: s__('VulnerabilityManagement|An unverified non-confirmed finding'),\n    mutation: vulnerabilityStateMutations.revert,\n    findingMutation: revertFindingToDetectedMutation,\n  },\n  confirmed: {\n    action: 'confirm',\n    state: 'confirmed',\n    searchParamValue: 'CONFIRMED',\n    buttonText: VULNERABILITY_STATES.confirmed,\n    dropdownText: s__('VulnerabilityStatusTypes|Confirmed'),\n    dropdownDescription: s__('VulnerabilityManagement|A true-positive and will fix'),\n    description: s__('VulnerabilityManagement|A verified true-positive vulnerability'),\n    mutation: vulnerabilityStateMutations.confirm,\n  },\n  dismissed: {\n    action: 'dismiss',\n    state: 'dismissed',\n    searchParamValue: 'DISMISSED',\n    buttonText: VULNERABILITY_STATES.dismissed,\n    dropdownText: s__('VulnerabilityStatusTypes|Dismissed'),\n    dropdownDescription: falsePositiveMessage,\n    mutation: vulnerabilityStateMutations.dismiss,\n    findingMutation: dismissFindingMutation,\n  },\n  resolved: {\n    action: 'resolve',\n    state: 'resolved',\n    searchParamValue: 'RESOLVED',\n    buttonText: VULNERABILITY_STATES.resolved,\n    dropdownText: s__('VulnerabilityStatusTypes|Resolved'),\n    dropdownDescription: s__('VulnerabilityManagement|Verified as fixed or mitigated'),\n    description: s__('VulnerabilityManagement|A removed or remediated vulnerability'),\n    mutation: vulnerabilityStateMutations.resolve,\n  },\n};\n\nexport const FEEDBACK_TYPES = {\n  ISSUE: FEEDBACK_TYPE_ISSUE,\n  MERGE_REQUEST: FEEDBACK_TYPE_MERGE_REQUEST,\n};\n\nexport const RELATED_ISSUES_ERRORS = {\n  LINK_ERROR: s__('VulnerabilityManagement|Could not process %{issueReference}: %{errorMessage}.'),\n  UNLINK_ERROR: s__(\n    'VulnerabilityManagement|Something went wrong while trying to unlink the issue. Please try again later.',\n  ),\n  ISSUE_ID_ERROR: s__('VulnerabilityManagement|invalid issue link or ID'),\n};\n\nexport const REGEXES = {\n  ISSUE_FORMAT: /^#?(\\d+)$/, // Matches '123' and '#123'.\n  LINK_FORMAT: /\\/(.+\\/.+)\\/-\\/issues\\/(\\d+)/, // Matches '/username/project/-/issues/123'.\n};\n\nexport const SUPPORTING_MESSAGE_TYPES = {\n  // eslint-disable-next-line @gitlab/require-i18n-strings\n  RECORDED: 'Recorded',\n};\n\nexport const SUPPORTED_IDENTIFIER_TYPE_CWE = 'cwe';\nexport const SUPPORTED_IDENTIFIER_TYPE_OWASP = 'owasp';\n\nexport const VULNERABILITY_TRAINING_HEADING = {\n  title: s__('Vulnerability|Training'),\n};\n\nexport const SECURITY_TRAINING_URL_STATUS_COMPLETED = 'COMPLETED';\nexport const SECURITY_TRAINING_URL_STATUS_PENDING = 'PENDING';\n\nexport const CREATE_MR_ACTION = {\n  name: s__('ciReport|Resolve with merge request'),\n  tagline: s__('ciReport|Automatically apply the patch in a new branch'),\n  action: 'create-merge-request',\n};\n\nexport const DOWNLOAD_PATCH_ACTION = {\n  name: s__('ciReport|Download patch to resolve'),\n  tagline: s__('ciReport|Download the patch to apply it manually'),\n  action: 'download-patch',\n};\n\nexport const CODE_FLOW_TAB_URL = s__('Vulnerability|code_flow');\n\nexport const VULNERABILITY_TAB_NAMES = Object.freeze({\n  DETAILS: s__('Vulnerability|Details'),\n  CODE_FLOW: s__('Vulnerability|Code flow'),\n});\n\nexport const VULNERABILITY_TAB_INDEX_TO_NAME = {\n  1: CODE_FLOW_TAB_URL,\n};\n","export const CLEAR_MODAL = 'CLEAR_MODAL';\n\nexport const SET_BRANCHES_ENDPOINT = 'SET_BRANCHES_ENDPOINT';\nexport const REQUEST_BRANCHES = 'REQUEST_BRANCHES';\nexport const RECEIVE_BRANCHES_SUCCESS = 'RECEIVE_BRANCHES_SUCCESS';\nexport const SET_BRANCH = 'SET_BRANCH';\nexport const SET_SELECTED_BRANCH = 'SET_SELECTED_BRANCH';\n\nexport const SET_SELECTED_PROJECT = 'SET_SELECTED_PROJECT';\n","import { createAlert } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\nimport { PROJECT_BRANCHES_ERROR } from '../constants';\nimport * as types from './mutation_types';\n\nexport const clearModal = ({ commit }) => {\n  commit(types.CLEAR_MODAL);\n};\n\nexport const requestBranches = ({ commit }) => {\n  commit(types.REQUEST_BRANCHES);\n};\n\nexport const setBranchesEndpoint = ({ commit }, endpoint) => {\n  commit(types.SET_BRANCHES_ENDPOINT, endpoint);\n};\n\nexport const fetchBranches = ({ commit, dispatch, state }, query) => {\n  dispatch('requestBranches');\n\n  return axios\n    .get(state.branchesEndpoint, {\n      params: { search: query },\n    })\n    .then(({ data = [] }) => {\n      commit(types.RECEIVE_BRANCHES_SUCCESS, data.Branches?.length ? data.Branches : data);\n    })\n    .catch(() => {\n      createAlert({ message: PROJECT_BRANCHES_ERROR });\n    });\n};\n\nexport const setBranch = ({ commit, dispatch }, branch) => {\n  commit(types.SET_BRANCH, branch);\n  dispatch('setSelectedBranch', branch);\n};\n\nexport const setSelectedBranch = ({ commit }, branch) => {\n  commit(types.SET_SELECTED_BRANCH, branch);\n};\n\nexport const setSelectedProject = ({ commit, dispatch, state }, id) => {\n  let { branchesEndpoint } = state;\n\n  if (state.projects?.length) {\n    branchesEndpoint = state.projects.find((p) => p.id === id).refsUrl;\n  }\n\n  commit(types.SET_SELECTED_PROJECT, id);\n  dispatch('setBranchesEndpoint', branchesEndpoint);\n  dispatch('fetchBranches');\n};\n","import { uniq, uniqBy } from 'lodash';\n\nexport const joinedBranches = (state) => {\n  return uniq(state.branches).sort();\n};\n\nexport const sortedProjects = (state) => uniqBy(state.projects, 'id').sort();\n","import * as types from './mutation_types';\n\nexport default {\n  [types.SET_BRANCHES_ENDPOINT](state, endpoint) {\n    state.branchesEndpoint = endpoint;\n  },\n\n  [types.REQUEST_BRANCHES](state) {\n    state.isFetching = true;\n  },\n\n  [types.RECEIVE_BRANCHES_SUCCESS](state, branches) {\n    state.isFetching = false;\n    state.branches = branches;\n    state.branches.unshift(state.branch);\n  },\n\n  [types.CLEAR_MODAL](state) {\n    state.branch = state.defaultBranch;\n  },\n\n  [types.SET_BRANCH](state, branch) {\n    state.branch = branch;\n  },\n\n  [types.SET_SELECTED_BRANCH](state, branch) {\n    state.selectedBranch = branch;\n  },\n\n  [types.SET_SELECTED_PROJECT](state, projectId) {\n    state.targetProjectId = projectId;\n    state.branch = state.defaultBranch;\n  },\n};\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport * as actions from './actions';\nimport * as getters from './getters';\nimport mutations from './mutations';\nimport state from './state';\n\nVue.use(Vuex);\n\nexport default (initialState = {}) =>\n  new Vuex.Store({\n    actions,\n    mutations,\n    getters,\n    state: {\n      ...state(),\n      ...initialState,\n    },\n  });\n","export default () => ({\n  endpoint: null,\n  branchesEndpoint: null,\n  isFetching: false,\n  branches: [],\n  projects: [],\n  selectedBranch: '',\n  pushCode: false,\n  branchCollaboration: false,\n  modalTitle: '',\n  existingBranch: '',\n  defaultBranch: '',\n  branch: '',\n  targetProjectId: '',\n  targetProjectName: '',\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"},{name:\"gl-resize-observer\",rawName:\"v-gl-resize-observer\",value:(_vm.onResize),expression:\"onResize\"}],staticClass:\"gl-min-w-0\",class:_vm.classes},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlTooltipDirective, GlResizeObserverDirective } from '@gitlab/ui';\nimport { isFunction, debounce } from 'lodash';\nimport { hasHorizontalOverflow } from '~/lib/utils/dom_utils';\n\nconst UPDATE_TOOLTIP_DEBOUNCED_WAIT_MS = 300;\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    GlResizeObserver: GlResizeObserverDirective,\n  },\n  props: {\n    title: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    placement: {\n      type: String,\n      required: false,\n      default: 'top',\n    },\n    boundary: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    truncateTarget: {\n      type: [String, Function],\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      tooltipDisabled: true,\n    };\n  },\n  computed: {\n    classes() {\n      if (this.tooltipDisabled) {\n        return '';\n      }\n      return 'js-show-tooltip';\n    },\n    tooltip() {\n      return {\n        title: this.title,\n        placement: this.placement,\n        disabled: this.tooltipDisabled,\n        // Only set the tooltip boundary if it's truthy\n        ...(this.boundary && { boundary: this.boundary }),\n      };\n    },\n  },\n  watch: {\n    title() {\n      // Wait on $nextTick in case the slot width changes\n      this.$nextTick(this.updateTooltip);\n    },\n  },\n  created() {\n    this.updateTooltipDebounced = debounce(this.updateTooltip, UPDATE_TOOLTIP_DEBOUNCED_WAIT_MS);\n  },\n  mounted() {\n    this.updateTooltip();\n  },\n  methods: {\n    selectTarget() {\n      if (isFunction(this.truncateTarget)) {\n        return this.truncateTarget(this.$el);\n      }\n      if (this.truncateTarget === 'child') {\n        return this.$el.childNodes[0];\n      }\n      return this.$el;\n    },\n    updateTooltip() {\n      this.tooltipDisabled = !hasHorizontalOverflow(this.selectTarget());\n    },\n    onResize() {\n      this.updateTooltipDebounced();\n    },\n  },\n};\n</script>\n\n<template>\n  <span v-gl-tooltip=\"tooltip\" v-gl-resize-observer=\"onResize\" :class=\"classes\" class=\"gl-min-w-0\">\n    <slot></slot>\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!./tooltip_on_truncate.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!./tooltip_on_truncate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./tooltip_on_truncate.vue?vue&type=template&id=50568281\"\nimport script from \"./tooltip_on_truncate.vue?vue&type=script&lang=js\"\nexport * from \"./tooltip_on_truncate.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 memoize from 'lodash/memoize';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst getObserver = memoize(options => new IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    entry.target.$_gl_intersectionHandler(entry);\n  });\n}, options || {}));\nvar script = {\n  name: 'GlIntersectionObserver',\n  props: {\n    /**\n     * Extra options to pass directly to the intersection observer API.\n     */\n    options: {\n      type: Object,\n      required: false,\n      default: null\n    }\n  },\n  mounted() {\n    const observer = getObserver(this.options);\n    this.$el.$_gl_intersectionHandler = entry => {\n      /**\n       * Emitted when the element's visibility changes\n       */\n      this.$emit('update', entry);\n      if (entry.isIntersecting) {\n        /**\n         * Emitted when the element appears on the page\n         */\n        this.$emit('appear');\n      } else {\n        /**\n         * Emitted when the element disappears from the page\n         */\n        this.$emit('disappear');\n      }\n    };\n    this.$el.$_gl_intersectionObserver = observer;\n    observer.observe(this.$el);\n  },\n  destroyed() {\n    this.$el.$_gl_intersectionObserver.unobserve(this.$el);\n    delete this.$el.$_gl_intersectionHandler;\n    delete this.$el.$_gl_intersectionObserver;\n  },\n  // Expose getObserver method for tests\n  getObserver\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-button',{staticClass:\"ml-sm-2 gl-w-full sm:gl-w-auto\",attrs:{\"loading\":_vm.isResolving},on:{\"click\":function($event){return _vm.$emit('onClick')}}},[_vm._v(\"\\n  \"+_vm._s(_vm.buttonTitle)+\"\\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!./discussion_resolve_button.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!./discussion_resolve_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\n\nexport default {\n  name: 'ResolveDiscussionButton',\n  components: {\n    GlButton,\n  },\n  props: {\n    isResolving: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    buttonTitle: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button\n    :loading=\"isResolving\"\n    class=\"ml-sm-2 gl-w-full sm:gl-w-auto\"\n    @click=\"$emit('onClick')\"\n  >\n    {{ buttonTitle }}\n  </gl-button>\n</template>\n","import { render, staticRenderFns } from \"./discussion_resolve_button.vue?vue&type=template&id=f8c074dc\"\nimport script from \"./discussion_resolve_button.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_resolve_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { __, s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport const DASHBOARD_TYPE_PROJECT = 'project';\nexport const DASHBOARD_TYPE_PIPELINE = 'pipeline';\nexport const DASHBOARD_TYPE_GROUP = 'group';\nexport const DASHBOARD_TYPE_INSTANCE = 'instance';\n\nexport const SEVERITY_LEVEL_CRITICAL = 'critical';\nexport const SEVERITY_LEVEL_HIGH = 'high';\nexport const SEVERITY_LEVEL_UNKNOWN = 'unknown';\nexport const SEVERITY_LEVEL_MEDIUM = 'medium';\nexport const SEVERITY_LEVEL_LOW = 'low';\nexport const SEVERITY_LEVEL_INFO = 'info';\n\nexport const SEVERITY_LEVELS = {\n  [SEVERITY_LEVEL_CRITICAL]: s__('severity|Critical'),\n  [SEVERITY_LEVEL_HIGH]: s__('severity|High'),\n  [SEVERITY_LEVEL_MEDIUM]: s__('severity|Medium'),\n  [SEVERITY_LEVEL_LOW]: s__('severity|Low'),\n  [SEVERITY_LEVEL_INFO]: s__('severity|Info'),\n  [SEVERITY_LEVEL_UNKNOWN]: s__('severity|Unknown'),\n};\n\nexport const SEVERITY_LEVELS_KEYS = Object.keys(SEVERITY_LEVELS);\n\n// The GraphQL type (`VulnerabilitySeverity`) for severities is an enum with uppercase values\nexport const SEVERITY_LEVELS_GRAPHQL = Object.keys(SEVERITY_LEVELS).map((k) => k.toUpperCase());\n\nexport const REPORT_TYPES_DEFAULT = {\n  api_fuzzing: s__('ciReport|API Fuzzing'),\n  container_scanning: s__('ciReport|Container Scanning'),\n  coverage_fuzzing: s__('ciReport|Coverage Fuzzing'),\n  dast: s__('ciReport|DAST'),\n  dependency_scanning: s__('ciReport|Dependency Scanning'),\n  sast: s__('ciReport|SAST'),\n  secret_detection: s__('ciReport|Secret Detection'),\n};\n\nexport const REPORT_TYPES_DEFAULT_KEYS = Object.keys(REPORT_TYPES_DEFAULT);\n\nexport const REPORT_TYPES_CONTAINER_SCANNING_FOR_REGISTRY = {\n  container_scanning_for_registry: s__('ciReport|Container Scanning for Registry'),\n};\n\nexport const REPORT_TYPES_WITH_CLUSTER_IMAGE = {\n  ...REPORT_TYPES_DEFAULT,\n  cluster_image_scanning: s__('ciReport|Cluster Image Scanning'),\n};\n\nexport const REPORT_TYPES_WITH_MANUALLY_ADDED = {\n  ...REPORT_TYPES_DEFAULT,\n  generic: s__('ciReport|Manually added'),\n};\n\nexport const REPORT_TYPES_ALL = {\n  ...REPORT_TYPES_DEFAULT,\n  ...REPORT_TYPES_WITH_CLUSTER_IMAGE,\n  ...REPORT_TYPES_WITH_MANUALLY_ADDED,\n};\n\nexport const COLLAPSE_SECURITY_REPORTS_SUMMARY_LOCAL_STORAGE_KEY =\n  'hide_pipelines_security_reports_summary_details';\n\nexport const DEFAULT_SCANNER = 'GitLab';\nexport const SCANNER_ID_PREFIX = 'gid://gitlab/Vulnerabilities::Scanner/';\n\nexport const DOC_PATH_APPLICATION_SECURITY = helpPagePath('user/application_security/index');\nexport const DOC_PATH_VULNERABILITY_DETAILS = helpPagePath(\n  'user/application_security/vulnerabilities/index',\n);\nexport const DOC_PATH_VULNERABILITY_REPORT = helpPagePath(\n  'user/application_security/vulnerability_report/index',\n);\nexport const DOC_PATH_SECURITY_CONFIGURATION = helpPagePath(\n  'user/application_security/configuration/index',\n);\nexport const DOC_PATH_SECURITY_SCANNER_INTEGRATION_REPORT = helpPagePath(\n  'development/integrations/secure',\n  { anchor: 'report' },\n);\nexport const DOC_PATH_SECURITY_SCANNER_INTEGRATION_RETENTION_PERIOD = helpPagePath(\n  'user/application_security/vulnerability_report/pipeline',\n  { anchor: 'retention-period-for-findings' },\n);\n\nexport const DOC_PATH_PROJECT_SECURITY_DASHBOARD = helpPagePath(\n  'user/application_security/security_dashboard/index',\n  { anchor: 'project-security-dashboard' },\n);\n\nexport const SEVERITY_GROUP_F = 'F';\nexport const SEVERITY_GROUP_D = 'D';\nexport const SEVERITY_GROUP_C = 'C';\nexport const SEVERITY_GROUP_B = 'B';\nexport const SEVERITY_GROUP_A = 'A';\n\nexport const SEVERITY_GROUPS = [\n  {\n    type: SEVERITY_GROUP_F,\n    description: __('Projects with critical vulnerabilities'),\n    warning: __('Critical vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_CRITICAL],\n  },\n  {\n    type: SEVERITY_GROUP_D,\n    description: __('Projects with high or unknown vulnerabilities'),\n    warning: __('High or unknown vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_HIGH, SEVERITY_LEVEL_UNKNOWN],\n  },\n  {\n    type: SEVERITY_GROUP_C,\n    description: __('Projects with medium vulnerabilities'),\n    warning: __('Medium vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_MEDIUM],\n  },\n  {\n    type: SEVERITY_GROUP_B,\n    description: __('Projects with low vulnerabilities'),\n    warning: __('Low vulnerabilities present'),\n    severityLevels: [SEVERITY_LEVEL_LOW],\n  },\n  {\n    type: SEVERITY_GROUP_A,\n    description: __('Projects with no vulnerabilities and security scanning enabled'),\n    warning: __('No vulnerabilities present'),\n    severityLevels: [],\n  },\n];\n\nexport const VULNERABILITY_DETAIL_CODE_FLOWS = 'VulnerabilityDetailCodeFlows';\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"position-absolute position-top-0 position-bottom-0 drag-handle\",class:_vm.className,style:(_vm.cursorStyle),on:{\"mousedown\":_vm.startDrag,\"dblclick\":_vm.resetSize}},[_vm._t(\"thumbnail\")],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!./panel_resizer.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!./panel_resizer.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  props: {\n    startSize: {\n      type: Number,\n      required: true,\n    },\n    side: {\n      type: String,\n      required: true,\n    },\n    minSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n    maxSize: {\n      type: Number,\n      required: false,\n      default: Number.MAX_VALUE,\n    },\n    enabled: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    customClass: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      size: this.startSize,\n      isDragging: false,\n    };\n  },\n  computed: {\n    className() {\n      const baseClasses = [`position-${this.side}-0`, { 'is-dragging': this.isDragging }];\n\n      if (this.customClass) {\n        baseClasses.push(this.customClass);\n      }\n\n      return baseClasses;\n    },\n    cursorStyle() {\n      if (this.enabled) {\n        return { cursor: 'ew-resize' };\n      }\n      return {};\n    },\n  },\n  watch: {\n    startSize(newVal) {\n      this.size = newVal;\n    },\n  },\n  methods: {\n    resetSize(e) {\n      e.preventDefault();\n      this.$emit('resize-start', this.size);\n\n      this.size = this.startSize;\n      this.$emit('update:size', this.size);\n      this.$emit('reset-size');\n\n      // End resizing on next tick so that listeners can react to DOM changes\n      this.$nextTick(() => {\n        this.$emit('resize-end', this.size);\n      });\n    },\n    startDrag(e) {\n      if (this.enabled) {\n        e.preventDefault();\n        this.isDragging = true;\n        this.startPos = e.clientX;\n        this.currentStartSize = this.size;\n        document.addEventListener('mousemove', this.drag);\n        document.addEventListener('mouseup', this.endDrag, { once: true });\n        this.$emit('resize-start', this.size);\n      }\n    },\n    drag(e) {\n      e.preventDefault();\n      let moved = e.clientX - this.startPos;\n      if (this.side === 'left') moved = -moved;\n      let newSize = this.currentStartSize + moved;\n      if (newSize < this.minSize) {\n        newSize = this.minSize;\n      } else if (newSize > this.maxSize) {\n        newSize = this.maxSize;\n      }\n      this.size = newSize;\n\n      this.$emit('update:size', newSize);\n    },\n    endDrag(e) {\n      e.preventDefault();\n      this.isDragging = false;\n      document.removeEventListener('mousemove', this.drag);\n      this.$emit('resize-end', this.size);\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    :class=\"className\"\n    :style=\"cursorStyle\"\n    class=\"position-absolute position-top-0 position-bottom-0 drag-handle\"\n    @mousedown=\"startDrag\"\n    @dblclick=\"resetSize\"\n  >\n    <slot name=\"thumbnail\"></slot>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./panel_resizer.vue?vue&type=template&id=d0d7a508\"\nimport script from \"./panel_resizer.vue?vue&type=script&lang=js\"\nexport * from \"./panel_resizer.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 uniqueId from 'lodash/uniqueId';\nimport GlDisclosureDropdownItem from './disclosure_dropdown_item';\nimport { isGroup } from './utils';\nimport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BORDER_CLASSES = {\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top]: 'gl-border-t gl-border-t-dropdown gl-pt-2 gl-mt-2',\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.bottom]: 'gl-border-b gl-border-b-dropdown gl-pb-2 gl-mb-2'\n};\nvar script = {\n  name: DISCLOSURE_DROPDOWN_GROUP_NAME,\n  components: {\n    GlDisclosureDropdownItem\n  },\n  props: {\n    /**\n     * Group of items\n     */\n    group: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isGroup\n    },\n    /**\n     * If 'true', will set top border for the group\n     * to separate from other groups. You can control\n     * the border position using the `borderPosition`\n     * property.\n     */\n    bordered: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Controls the position of the group's border. Valid\n     * values are 'top' and 'bottom'.\n     */\n    borderPosition: {\n      type: String,\n      required: false,\n      default: DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top,\n      validator: value => Object.keys(DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS).includes(value)\n    }\n  },\n  computed: {\n    borderClass() {\n      return this.bordered ? BORDER_CLASSES[this.borderPosition] : null;\n    },\n    showHeader() {\n      var _this$group;\n      return this.$scopedSlots['group-label'] || ((_this$group = this.group) === null || _this$group === void 0 ? void 0 : _this$group.name);\n    },\n    groupLabeledBy() {\n      return this.showHeader ? this.nameId : null;\n    }\n  },\n  created() {\n    this.nameId = uniqueId('gl-disclosure-dropdown-group-');\n  },\n  methods: {\n    handleAction(action) {\n      this.$emit('action', action);\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:_vm.borderClass},[(_vm.showHeader)?_c('div',{staticClass:\"gl-py-2 gl-pl-4 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.nameId,\"aria-hidden\":\"true\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.group.name))]})],2):_vm._e(),_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-list-none gl-pl-0\",attrs:{\"aria-labelledby\":_vm.groupLabeledBy}},[_vm._t(\"default\",function(){return _vm._l((_vm.group.items),function(item){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}],null,true)})})})],2)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { BORDER_CLASSES };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('timeline-entry-item',{staticClass:\"note note-discussion\"},[_c('div',{staticClass:\"timeline-content\"},[_c('div',{staticClass:\"discussion js-discussion-container\",attrs:{\"data-discussion-id\":_vm.discussion.id,\"data-discussion-resolvable\":_vm.discussion.resolvable,\"data-discussion-resolved\":_vm.discussion.resolved,\"data-testid\":\"discussion-content\"}},[(_vm.shouldRenderDiffs)?_c('diff-discussion-header',{attrs:{\"discussion\":_vm.discussion}}):_vm._e(),_vm._v(\" \"),(!_vm.shouldHideDiscussionBody)?_c('div',{staticClass:\"discussion-body\"},[_c(_vm.wrapperComponent,_vm._b({tag:\"component\",staticClass:\"card discussion-wrapper\"},'component',_vm.wrapperComponentProps,false),[_c('discussion-notes',{attrs:{\"discussion\":_vm.discussion,\"diff-line\":_vm.diffLine,\"help-page-path\":_vm.helpPagePath,\"is-expanded\":_vm.isExpanded,\"line\":_vm.line,\"should-group-replies\":_vm.shouldGroupReplies,\"is-overview-tab\":_vm.isOverviewTab,\"should-scroll-to-note\":_vm.shouldScrollToNote},on:{\"startReplying\":_vm.showReplyForm},scopedSlots:_vm._u([{key:\"avatar-badge\",fn:function(){return [_vm._t(\"avatar-badge\")]},proxy:true},{key:\"footer\",fn:function({ showReplies }){return [(_vm.showDraft(_vm.discussion.reply_id))?_c('draft-note',{key:`draft_${_vm.discussion.id}`,attrs:{\"draft\":_vm.draftForDiscussion(_vm.discussion.reply_id),\"line\":_vm.line}}):(_vm.canShowReplyActions && showReplies)?_c('li',{staticClass:\"discussion-reply-holder clearfix gl-bg-subtle\",class:_vm.discussionHolderClass,attrs:{\"data-testid\":\"reply-wrapper\"}},[_c('div',{staticClass:\"flash-container !gl-mt-0 gl-mb-2\"}),_vm._v(\" \"),(!_vm.isReplying && _vm.userCanReply)?_c('discussion-actions',{attrs:{\"discussion\":_vm.discussion,\"is-resolving\":_vm.isResolving,\"resolve-button-title\":_vm.resolveButtonTitle,\"resolve-with-issue-path\":_vm.resolveWithIssuePath,\"should-show-jump-to-next-discussion\":_vm.shouldShowJumpToNextDiscussion},on:{\"showReplyForm\":_vm.showReplyForm,\"resolve\":_vm.resolveHandler}}):_vm._e(),_vm._v(\" \"),(_vm.isReplying)?_c('note-form',{ref:\"noteForm\",attrs:{\"discussion\":_vm.discussion,\"diff-file\":_vm.diffFile,\"line\":_vm.diffLine,\"save-button-title\":_vm.saveButtonTitle,\"autofocus\":!_vm.hasDraft,\"autosave-key\":_vm.autosaveKey},on:{\"handleFormUpdateAddToReview\":_vm.addReplyToReview,\"handleFormUpdate\":_vm.saveReply,\"cancelForm\":_vm.cancelReplyForm}}):_vm._e(),_vm._v(\" \"),(!_vm.isLoggedIn)?_c('note-signed-out-widget'):_vm._e()],1):_vm._e()]}}],null,true)})],1)],1):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./diff_discussion_header.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!./diff_discussion_header.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatar, GlAvatarLink } from '@gitlab/ui';\nimport { escape } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { truncateSha } from '~/lib/utils/text_utility';\nimport { s__, __, sprintf } from '~/locale';\nimport { FILE_DIFF_POSITION_TYPE } from '~/diffs/constants';\nimport NoteEditedText from './note_edited_text.vue';\nimport NoteHeader from './note_header.vue';\nimport ToggleRepliesWidget from './toggle_replies_widget.vue';\n\nexport default {\n  name: 'DiffDiscussionHeader',\n  components: {\n    GlAvatar,\n    GlAvatarLink,\n    NoteEditedText,\n    NoteHeader,\n    ToggleRepliesWidget,\n  },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    discussion: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    notes() {\n      return this.discussion.notes;\n    },\n    firstNote() {\n      return this.notes[0];\n    },\n    lastNote() {\n      return this.notes[this.notes.length - 1];\n    },\n    author() {\n      return this.firstNote.author;\n    },\n    resolvedText() {\n      return this.discussion.resolved_by_push ? __('Automatically resolved') : __('Resolved');\n    },\n    lastUpdatedBy() {\n      return this.notes.length > 1 ? this.lastNote.author : null;\n    },\n    lastUpdatedAt() {\n      return this.notes.length > 1 ? this.lastNote.created_at : null;\n    },\n    headerText() {\n      const linkStart = `<a href=\"${escape(this.discussion.discussion_path)}\">`;\n      const linkEnd = '</a>';\n\n      const { commit_id: commitId } = this.discussion;\n      let commitDisplay = commitId;\n\n      if (commitId) {\n        commitDisplay = `<span class=\"commit-sha\">${truncateSha(commitId)}</span>`;\n      }\n\n      const {\n        for_commit: isForCommit,\n        diff_discussion: isDiffDiscussion,\n        active: isActive,\n        position,\n      } = this.discussion;\n\n      let text = s__('MergeRequests|started a thread');\n      if (isForCommit) {\n        text = s__(\n          'MergeRequests|started a thread on commit %{linkStart}%{commitDisplay}%{linkEnd}',\n        );\n      } else if (isDiffDiscussion && commitId) {\n        text = isActive\n          ? s__('MergeRequests|started a thread on commit %{linkStart}%{commitDisplay}%{linkEnd}')\n          : s__(\n              'MergeRequests|started a thread on an outdated change in commit %{linkStart}%{commitDisplay}%{linkEnd}',\n            );\n      } else if (isDiffDiscussion && position?.position_type === FILE_DIFF_POSITION_TYPE) {\n        text = isActive\n          ? s__('MergeRequests|started a thread on %{linkStart}a file%{linkEnd}')\n          : s__('MergeRequests|started a thread on %{linkStart}an old version of a file%{linkEnd}');\n      } else if (isDiffDiscussion) {\n        text = isActive\n          ? s__('MergeRequests|started a thread on %{linkStart}the diff%{linkEnd}')\n          : s__(\n              'MergeRequests|started a thread on %{linkStart}an old version of the diff%{linkEnd}',\n            );\n      }\n\n      return sprintf(text, { commitDisplay, linkStart, linkEnd }, false);\n    },\n    toggleClass() {\n      return this.discussion.expanded ? 'expanded' : 'collapsed';\n    },\n    replies() {\n      return this.notes.filter((note) => !note.system);\n    },\n  },\n  methods: {\n    ...mapActions(['toggleDiscussion']),\n    toggleDiscussionHandler() {\n      this.toggleDiscussion({ discussionId: this.discussion.id });\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"discussion-header gl-flex gl-items-center\">\n    <div v-once class=\"timeline-avatar gl-shrink-0 gl-self-start\">\n      <gl-avatar-link\n        v-if=\"author\"\n        :href=\"author.path\"\n        :data-user-id=\"author.id\"\n        :data-username=\"author.username\"\n        class=\"js-user-link\"\n      >\n        <gl-avatar :src=\"author.avatar_url\" :alt=\"author.name\" :size=\"32\" />\n      </gl-avatar-link>\n    </div>\n    <div class=\"timeline-content gl-ml-3 gl-w-full\" :class=\"toggleClass\">\n      <note-header :author=\"author\" :created-at=\"firstNote.created_at\" :note-id=\"firstNote.id\">\n        <span v-safe-html=\"headerText\"></span>\n      </note-header>\n      <note-edited-text\n        v-if=\"discussion.resolved\"\n        :edited-at=\"discussion.resolved_at\"\n        :edited-by=\"discussion.resolved_by\"\n        :action-text=\"resolvedText\"\n        class-name=\"discussion-headline-light js-discussion-headline gl-mt-1 gl-pl-3\"\n      />\n      <toggle-replies-widget\n        :collapsed=\"!discussion.expanded\"\n        :replies=\"replies\"\n        class=\"gl-border-t -gl-mx-3 -gl-mb-3 gl-mt-4 !gl-border-x-0 !gl-border-b-0 gl-border-t-subtle dark:gl-border-t-section\"\n        @toggle=\"toggleDiscussionHandler\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_discussion_header.vue?vue&type=template&id=3bf75bc7\"\nimport script from \"./diff_discussion_header.vue?vue&type=script&lang=js\"\nexport * from \"./diff_discussion_header.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:\"discussion-header gl-flex gl-items-center\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"timeline-content gl-ml-3 gl-w-full\",class:_vm.toggleClass},[_c('note-header',{attrs:{\"author\":_vm.author,\"created-at\":_vm.firstNote.created_at,\"note-id\":_vm.firstNote.id}},[_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.headerText),expression:\"headerText\"}]})]),_vm._v(\" \"),(_vm.discussion.resolved)?_c('note-edited-text',{attrs:{\"edited-at\":_vm.discussion.resolved_at,\"edited-by\":_vm.discussion.resolved_by,\"action-text\":_vm.resolvedText,\"class-name\":\"discussion-headline-light js-discussion-headline gl-mt-1 gl-pl-3\"}}):_vm._e(),_vm._v(\" \"),_c('toggle-replies-widget',{staticClass:\"gl-border-t -gl-mx-3 -gl-mb-3 gl-mt-4 !gl-border-x-0 !gl-border-b-0 gl-border-t-subtle dark:gl-border-t-section\",attrs:{\"collapsed\":!_vm.discussion.expanded,\"replies\":_vm.replies},on:{\"toggle\":_vm.toggleDiscussionHandler}})],1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"timeline-avatar gl-shrink-0 gl-self-start\"},[(_vm.author)?_c('gl-avatar-link',{staticClass:\"js-user-link\",attrs:{\"href\":_vm.author.path,\"data-user-id\":_vm.author.id,\"data-username\":_vm.author.username}},[_c('gl-avatar',{attrs:{\"src\":_vm.author.avatar_url,\"alt\":_vm.author.name,\"size\":32}})],1):_vm._e()],1)\n}]\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlSkeletonLoader } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapActions } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport DiffFileHeader from '~/diffs/components/diff_file_header.vue';\nimport ImageDiffOverlay from '~/diffs/components/image_diff_overlay.vue';\nimport { getDiffMode } from '~/diffs/store/utils';\nimport { diffViewerModes } from '~/ide/constants';\nimport DiffViewer from '~/vue_shared/components/diff_viewer/diff_viewer.vue';\nimport { isCollapsed } from '~/diffs/utils/diff_file';\nimport { FILE_DIFF_POSITION_TYPE, IMAGE_DIFF_POSITION_TYPE } from '~/diffs/constants';\n\nconst FIRST_CHAR_REGEX = /^(\\+|-| )/;\n\nexport default {\n  components: {\n    DiffFileHeader,\n    GlSkeletonLoader,\n    DiffViewer,\n    ImageDiffOverlay,\n    GlButton,\n  },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    discussion: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      error: false,\n    };\n  },\n  computed: {\n    ...mapState({\n      projectPath: (state) => state.diffs.projectPath,\n    }),\n    diffMode() {\n      return getDiffMode(this.discussion.diff_file);\n    },\n    diffViewerMode() {\n      return this.discussion.diff_file?.viewer.name;\n    },\n    fileDiffRefs() {\n      return this.discussion.diff_file.diff_refs;\n    },\n    headSha() {\n      return (this.fileDiffRefs ? this.fileDiffRefs.head_sha : this.discussion.commit_id) || '';\n    },\n    baseSha() {\n      return (this.fileDiffRefs ? this.fileDiffRefs.base_sha : this.discussion.commit_id) || '';\n    },\n    isTextFile() {\n      return this.diffViewerMode === diffViewerModes.text;\n    },\n    hasTruncatedDiffLines() {\n      return (\n        this.discussion.truncated_diff_lines && this.discussion.truncated_diff_lines.length !== 0\n      );\n    },\n    isCollapsed() {\n      return isCollapsed(this.discussion.diff_file);\n    },\n    positionType() {\n      return this.discussion.position?.position_type;\n    },\n    isFileDiscussion() {\n      if (!this.discussion.diff_file) {\n        return (\n          this.discussion.original_position.position_type === IMAGE_DIFF_POSITION_TYPE ||\n          this.discussion.original_position.position_type === FILE_DIFF_POSITION_TYPE\n        );\n      }\n\n      return this.positionType === FILE_DIFF_POSITION_TYPE;\n    },\n    showHeader() {\n      if (this.discussion.diff_file) return true;\n\n      return (\n        this.discussion.original_position.position_type === FILE_DIFF_POSITION_TYPE ||\n        this.discussion.original_position.position_type === IMAGE_DIFF_POSITION_TYPE\n      );\n    },\n    backfilledDiffFile() {\n      /*\n       * https://gitlab.com/gitlab-com/gl-infra/production/-/issues/19118\n       *\n       * For the vast majority of cases, this should just be discussion.diff_file,\n       * but due to that defect, there are potentially some file discussions that cannot\n       * be rendered because there is no diff file attached\n       *\n       * This allows the header to display (sans file mode change) to roughly simulate\n       * having an actual diff file.\n       */\n      return (\n        this.discussion.diff_file || {\n          file_path: this.discussion.original_position.new_path,\n        }\n      );\n    },\n  },\n  mounted() {\n    if (this.isTextFile && !this.hasTruncatedDiffLines) {\n      this.fetchDiff();\n    }\n  },\n  methods: {\n    ...mapActions(['fetchDiscussionDiffLines']),\n    fetchDiff() {\n      this.error = false;\n      this.fetchDiscussionDiffLines(this.discussion)\n        .then(this.highlight)\n        .catch(() => {\n          this.error = true;\n        });\n    },\n    trimChar(line) {\n      return line.replace(FIRST_CHAR_REGEX, '');\n    },\n  },\n  userColorSchemeClass: window.gon.user_color_scheme,\n};\n</script>\n\n<template>\n  <div :class=\"{ 'text-file': isTextFile }\" class=\"diff-file file-holder\">\n    <diff-file-header\n      v-if=\"showHeader\"\n      :discussion-path=\"discussion.discussion_path\"\n      :diff-file=\"backfilledDiffFile\"\n      :can-current-user-fork=\"false\"\n      class=\"gl-border gl-border-section\"\n      :expanded=\"!isCollapsed\"\n    />\n    <div v-if=\"isTextFile\" class=\"diff-content\">\n      <table class=\"code js-syntax-highlight\" :class=\"$options.userColorSchemeClass\">\n        <template v-if=\"!isFileDiscussion\">\n          <template v-if=\"hasTruncatedDiffLines\">\n            <tr\n              v-for=\"line in discussion.truncated_diff_lines\"\n              v-once\n              :key=\"line.line_code\"\n              class=\"line_holder\"\n            >\n              <td :class=\"line.type\" class=\"diff-line-num old_line\">{{ line.old_line }}</td>\n              <td :class=\"line.type\" class=\"diff-line-num new_line\">{{ line.new_line }}</td>\n              <td\n                v-safe-html=\"trimChar(line.rich_text)\"\n                :class=\"line.type\"\n                class=\"line_content\"\n              ></td>\n            </tr>\n          </template>\n          <tr v-if=\"!hasTruncatedDiffLines\" class=\"line_holder line-holder-placeholder\">\n            <td class=\"old_line diff-line-num\"></td>\n            <td class=\"new_line diff-line-num\"></td>\n            <td v-if=\"error\" class=\"js-error-lazy-load-diff diff-loading-error-block\">\n              {{ __('Unable to load the diff') }}\n              <gl-button\n                class=\"js-toggle-lazy-diff-retry-button gl-font-regular\"\n                @click=\"fetchDiff\"\n              >\n                {{ __('Try again') }}\n              </gl-button>\n            </td>\n            <td v-else class=\"line_content js-success-lazy-load\">\n              <span></span>\n              <gl-skeleton-loader />\n              <span></span>\n            </td>\n          </tr>\n        </template>\n        <tr class=\"notes_holder\">\n          <td :class=\"{ '!gl-border-t-0': isFileDiscussion }\" class=\"notes-content\" colspan=\"3\">\n            <slot></slot>\n          </td>\n        </tr>\n      </table>\n    </div>\n    <div v-else class=\"diff-content\">\n      <diff-viewer\n        v-if=\"!isFileDiscussion\"\n        :diff-file=\"discussion.diff_file\"\n        :diff-mode=\"diffMode\"\n        :diff-viewer-mode=\"diffViewerMode\"\n        :new-path=\"discussion.diff_file.new_path\"\n        :new-sha=\"headSha\"\n        :old-path=\"discussion.diff_file.old_path\"\n        :old-sha=\"baseSha\"\n        :file-hash=\"discussion.diff_file.file_hash\"\n        :project-path=\"projectPath\"\n      >\n        <template #image-overlay=\"{ renderedWidth, renderedHeight }\">\n          <image-diff-overlay\n            v-if=\"renderedWidth\"\n            :rendered-width=\"renderedWidth\"\n            :rendered-height=\"renderedHeight\"\n            :discussions=\"discussion\"\n            :file-hash=\"discussion.diff_file.file_hash\"\n            :show-comment-icon=\"true\"\n            :should-toggle-discussion=\"false\"\n            badge-class=\"image-comment-badge gl-text-purple-500 gl-bg-white gl-rounded-full gl-border-white gl-border-1 gl-border-solid gl-pointer-events-none gl-shadow-md\"\n          />\n        </template>\n      </diff-viewer>\n      <slot></slot>\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!./diff_with_note.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!./diff_with_note.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./diff_with_note.vue?vue&type=template&id=22f33285\"\nimport script from \"./diff_with_note.vue?vue&type=script&lang=js\"\nexport * from \"./diff_with_note.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:\"diff-file file-holder\",class:{ 'text-file': _vm.isTextFile }},[(_vm.showHeader)?_c('diff-file-header',{staticClass:\"gl-border gl-border-section\",attrs:{\"discussion-path\":_vm.discussion.discussion_path,\"diff-file\":_vm.backfilledDiffFile,\"can-current-user-fork\":false,\"expanded\":!_vm.isCollapsed}}):_vm._e(),_vm._v(\" \"),(_vm.isTextFile)?_c('div',{staticClass:\"diff-content\"},[_c('table',{staticClass:\"code js-syntax-highlight\",class:_vm.$options.userColorSchemeClass},[(!_vm.isFileDiscussion)?[(_vm.hasTruncatedDiffLines)?_vm._m(0):_vm._e(),_vm._v(\" \"),(!_vm.hasTruncatedDiffLines)?_c('tr',{staticClass:\"line_holder line-holder-placeholder\"},[_c('td',{staticClass:\"old_line diff-line-num\"}),_vm._v(\" \"),_c('td',{staticClass:\"new_line diff-line-num\"}),_vm._v(\" \"),(_vm.error)?_c('td',{staticClass:\"js-error-lazy-load-diff diff-loading-error-block\"},[_vm._v(\"\\n            \"+_vm._s(_vm.__('Unable to load the diff'))+\"\\n            \"),_c('gl-button',{staticClass:\"js-toggle-lazy-diff-retry-button gl-font-regular\",on:{\"click\":_vm.fetchDiff}},[_vm._v(\"\\n              \"+_vm._s(_vm.__('Try again'))+\"\\n            \")])],1):_c('td',{staticClass:\"line_content js-success-lazy-load\"},[_c('span'),_vm._v(\" \"),_c('gl-skeleton-loader'),_vm._v(\" \"),_c('span')],1)]):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('tr',{staticClass:\"notes_holder\"},[_c('td',{staticClass:\"notes-content\",class:{ '!gl-border-t-0': _vm.isFileDiscussion },attrs:{\"colspan\":\"3\"}},[_vm._t(\"default\")],2)])],2)]):_c('div',{staticClass:\"diff-content\"},[(!_vm.isFileDiscussion)?_c('diff-viewer',{attrs:{\"diff-file\":_vm.discussion.diff_file,\"diff-mode\":_vm.diffMode,\"diff-viewer-mode\":_vm.diffViewerMode,\"new-path\":_vm.discussion.diff_file.new_path,\"new-sha\":_vm.headSha,\"old-path\":_vm.discussion.diff_file.old_path,\"old-sha\":_vm.baseSha,\"file-hash\":_vm.discussion.diff_file.file_hash,\"project-path\":_vm.projectPath},scopedSlots:_vm._u([{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [(renderedWidth)?_c('image-diff-overlay',{attrs:{\"rendered-width\":renderedWidth,\"rendered-height\":renderedHeight,\"discussions\":_vm.discussion,\"file-hash\":_vm.discussion.diff_file.file_hash,\"show-comment-icon\":true,\"should-toggle-discussion\":false,\"badge-class\":\"image-comment-badge gl-text-purple-500 gl-bg-white gl-rounded-full gl-border-white gl-border-1 gl-border-solid gl-pointer-events-none gl-shadow-md\"}}):_vm._e()]}}],null,false,1973996370)}):_vm._e(),_vm._v(\" \"),_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _vm._l((_vm.discussion.truncated_diff_lines),function(line){return _c('tr',{key:line.line_code,staticClass:\"line_holder\"},[_c('td',{staticClass:\"diff-line-num old_line\",class:line.type},[_vm._v(_vm._s(line.old_line))]),_vm._v(\" \"),_c('td',{staticClass:\"diff-line-num new_line\",class:line.type},[_vm._v(_vm._s(line.new_line))]),_vm._v(\" \"),_c('td',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.trimChar(line.rich_text)),expression:\"trimChar(line.rich_text)\"}],staticClass:\"line_content\",class:line.type})])})\n}]\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!./discussion_resolve_with_issue_button.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!./discussion_resolve_with_issue_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlButton } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nexport default {\n  i18n: {\n    buttonLabel: s__('MergeRequests|Create issue to resolve thread'),\n  },\n  name: 'ResolveWithIssueButton',\n  components: {\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    url: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"btn-group\" role=\"group\">\n    <gl-button\n      v-gl-tooltip\n      :href=\"url\"\n      :title=\"$options.i18n.buttonLabel\"\n      :aria-label=\"$options.i18n.buttonLabel\"\n      class=\"new-issue-for-discussion discussion-create-issue-btn gl-w-full sm:gl-w-auto\"\n      icon=\"issue-new\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./discussion_resolve_with_issue_button.vue?vue&type=template&id=444b6ab3\"\nimport script from \"./discussion_resolve_with_issue_button.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_resolve_with_issue_button.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:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"new-issue-for-discussion discussion-create-issue-btn gl-w-full sm:gl-w-auto\",attrs:{\"href\":_vm.url,\"title\":_vm.$options.i18n.buttonLabel,\"aria-label\":_vm.$options.i18n.buttonLabel,\"icon\":\"issue-new\"}})],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!./discussion_actions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./discussion_actions.vue?vue&type=script&lang=js\"","<script>\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport DiscussionReplyPlaceholder from './discussion_reply_placeholder.vue';\nimport ResolveDiscussionButton from './discussion_resolve_button.vue';\nimport ResolveWithIssueButton from './discussion_resolve_with_issue_button.vue';\n\nexport default {\n  name: 'DiscussionActions',\n  components: {\n    DiscussionReplyPlaceholder,\n    ResolveDiscussionButton,\n    ResolveWithIssueButton,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  props: {\n    discussion: {\n      type: Object,\n      required: true,\n    },\n    isResolving: {\n      type: Boolean,\n      required: true,\n    },\n    resolveButtonTitle: {\n      type: String,\n      required: true,\n    },\n    resolveWithIssuePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    shouldShowJumpToNextDiscussion: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    resolvableNotes() {\n      return this.discussion.notes.filter((x) => x.resolvable);\n    },\n    userCanResolveDiscussion() {\n      return this.resolvableNotes.every((note) => note.current_user?.can_resolve_discussion);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"discussion-with-resolve-btn clearfix\">\n    <discussion-reply-placeholder @focus=\"$emit('showReplyForm')\" />\n\n    <div v-if=\"userCanResolveDiscussion\" class=\"btn-group discussion-actions\" role=\"group\">\n      <div class=\"btn-group\">\n        <resolve-discussion-button\n          v-if=\"discussion.resolvable\"\n          data-testid=\"resolve-discussion-button\"\n          :is-resolving=\"isResolving\"\n          :button-title=\"resolveButtonTitle\"\n          @onClick=\"$emit('resolve')\"\n        />\n      </div>\n      <resolve-with-issue-button\n        v-if=\"discussion.resolvable && resolveWithIssuePath\"\n        :url=\"resolveWithIssuePath\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./discussion_actions.vue?vue&type=template&id=9c3894ac\"\nimport script from \"./discussion_actions.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"discussion-with-resolve-btn clearfix\"},[_c('discussion-reply-placeholder',{on:{\"focus\":function($event){return _vm.$emit('showReplyForm')}}}),_vm._v(\" \"),(_vm.userCanResolveDiscussion)?_c('div',{staticClass:\"btn-group discussion-actions\",attrs:{\"role\":\"group\"}},[_c('div',{staticClass:\"btn-group\"},[(_vm.discussion.resolvable)?_c('resolve-discussion-button',{attrs:{\"data-testid\":\"resolve-discussion-button\",\"is-resolving\":_vm.isResolving,\"button-title\":_vm.resolveButtonTitle},on:{\"onClick\":function($event){return _vm.$emit('resolve')}}}):_vm._e()],1),_vm._v(\" \"),(_vm.discussion.resolvable && _vm.resolveWithIssuePath)?_c('resolve-with-issue-button',{attrs:{\"url\":_vm.resolveWithIssuePath}}):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./discussion_notes.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!./discussion_notes.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions } from 'vuex';\nimport { __ } from '~/locale';\nimport PlaceholderNote from '~/vue_shared/components/notes/placeholder_note.vue';\nimport PlaceholderSystemNote from '~/vue_shared/components/notes/placeholder_system_note.vue';\nimport SystemNote from '~/vue_shared/components/notes/system_note.vue';\nimport { FILE_DIFF_POSITION_TYPE } from '~/diffs/constants';\nimport { SYSTEM_NOTE } from '../constants';\nimport DiscussionNotesRepliesWrapper from './discussion_notes_replies_wrapper.vue';\nimport NoteEditedText from './note_edited_text.vue';\nimport NoteableNote from './noteable_note.vue';\nimport ToggleRepliesWidget from './toggle_replies_widget.vue';\n\nexport default {\n  name: 'DiscussionNotes',\n  components: {\n    ToggleRepliesWidget,\n    NoteEditedText,\n    DiscussionNotesRepliesWrapper,\n  },\n  props: {\n    discussion: {\n      type: Object,\n      required: true,\n    },\n    isExpanded: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    diffLine: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    shouldGroupReplies: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isOverviewTab: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    shouldScrollToNote: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    ...mapGetters(['userCanReply']),\n    hasReplies() {\n      return Boolean(this.replies.length);\n    },\n    replies() {\n      return this.discussion.notes.slice(1);\n    },\n    firstNote() {\n      return this.discussion.notes.slice(0, 1)[0];\n    },\n    resolvedText() {\n      return this.discussion.resolved_by_push ? __('Automatically resolved') : __('Resolved');\n    },\n    commit() {\n      if (!this.discussion.for_commit) {\n        return null;\n      }\n\n      return {\n        id: this.discussion.commit_id,\n        url: this.discussion.discussion_path,\n      };\n    },\n    isDiscussionInternal() {\n      return this.discussion.notes[0]?.internal;\n    },\n    isFileDiscussion() {\n      return this.discussion.position?.position_type === FILE_DIFF_POSITION_TYPE;\n    },\n  },\n  methods: {\n    ...mapActions(['toggleDiscussion', 'setSelectedCommentPositionHover']),\n    componentName(note) {\n      if (note.isPlaceholderNote) {\n        if (note.placeholderType === SYSTEM_NOTE) {\n          return PlaceholderSystemNote;\n        }\n\n        return PlaceholderNote;\n      }\n\n      if (note.system) {\n        return SystemNote;\n      }\n\n      return NoteableNote;\n    },\n    componentData(note) {\n      return note.isPlaceholderNote ? note.notes[0] : note;\n    },\n    handleMouseEnter(discussion) {\n      if (discussion.position) {\n        this.setSelectedCommentPositionHover(discussion.position.line_range);\n      }\n    },\n    handleMouseLeave(discussion) {\n      // Even though position isn't used here we still don't want to unnecessarily call a mutation\n      // The lack of position tells us that highlighting is irrelevant in this context\n      if (discussion.position) {\n        this.setSelectedCommentPositionHover();\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"discussion-notes\">\n    <ul\n      class=\"notes\"\n      @mouseenter=\"handleMouseEnter(discussion)\"\n      @mouseleave=\"handleMouseLeave(discussion)\"\n    >\n      <template v-if=\"shouldGroupReplies\">\n        <component\n          :is=\"componentName(firstNote)\"\n          :note=\"componentData(firstNote)\"\n          :line=\"line || diffLine\"\n          :discussion-file=\"discussion.diff_file\"\n          :commit=\"commit\"\n          :help-page-path=\"helpPagePath\"\n          :show-reply-button=\"userCanReply\"\n          :discussion-root=\"true\"\n          :discussion-resolve-path=\"discussion.resolve_path\"\n          :is-overview-tab=\"isOverviewTab\"\n          :should-scroll-to-note=\"shouldScrollToNote\"\n          :internal-note=\"isDiscussionInternal\"\n          :class=\"{ '!gl-border-t-0': isFileDiscussion }\"\n          @handleDeleteNote=\"$emit('deleteNote')\"\n          @startReplying=\"$emit('startReplying')\"\n        >\n          <template #discussion-resolved-text>\n            <note-edited-text\n              v-if=\"discussion.resolved\"\n              :edited-at=\"discussion.resolved_at\"\n              :edited-by=\"discussion.resolved_by\"\n              :action-text=\"resolvedText\"\n              class-name=\"discussion-headline-light js-discussion-headline discussion-resolved-text -gl-mt-2 gl-mb-3 gl-ml-3\"\n            />\n          </template>\n          <template #avatar-badge>\n            <slot name=\"avatar-badge\"></slot>\n          </template>\n        </component>\n        <discussion-notes-replies-wrapper\n          v-if=\"hasReplies || userCanReply\"\n          :is-diff-discussion=\"discussion.diff_discussion\"\n        >\n          <toggle-replies-widget\n            v-if=\"hasReplies\"\n            :collapsed=\"!isExpanded\"\n            :replies=\"replies\"\n            @toggle=\"toggleDiscussion({ discussionId: discussion.id })\"\n          />\n          <template v-if=\"isExpanded\">\n            <component\n              :is=\"componentName(note)\"\n              v-for=\"note in replies\"\n              :key=\"note.id\"\n              :note=\"componentData(note)\"\n              :help-page-path=\"helpPagePath\"\n              :line=\"line\"\n              :internal-note=\"isDiscussionInternal\"\n              @handleDeleteNote=\"$emit('deleteNote')\"\n            />\n          </template>\n          <slot :show-replies=\"isExpanded || !hasReplies\" name=\"footer\"></slot>\n        </discussion-notes-replies-wrapper>\n      </template>\n      <template v-else>\n        <component\n          :is=\"componentName(note)\"\n          v-for=\"(note, index) in discussion.notes\"\n          :key=\"note.id\"\n          :note=\"componentData(note)\"\n          :discussion-file=\"discussion.diff_file\"\n          :help-page-path=\"helpPagePath\"\n          :line=\"diffLine\"\n          :discussion-root=\"index === 0\"\n          :discussion-resolve-path=\"discussion.resolve_path\"\n          :is-overview-tab=\"isOverviewTab\"\n          :should-scroll-to-note=\"shouldScrollToNote\"\n          :internal-note=\"isDiscussionInternal\"\n          @handleDeleteNote=\"$emit('deleteNote')\"\n        >\n          <template #avatar-badge>\n            <slot v-if=\"index === 0\" name=\"avatar-badge\"></slot>\n          </template>\n        </component>\n        <slot :show-replies=\"isExpanded || !hasReplies\" name=\"footer\"></slot>\n      </template>\n    </ul>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./discussion_notes.vue?vue&type=template&id=199511b7\"\nimport script from \"./discussion_notes.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_notes.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:\"discussion-notes\"},[_c('ul',{staticClass:\"notes\",on:{\"mouseenter\":function($event){return _vm.handleMouseEnter(_vm.discussion)},\"mouseleave\":function($event){return _vm.handleMouseLeave(_vm.discussion)}}},[(_vm.shouldGroupReplies)?[_c(_vm.componentName(_vm.firstNote),{tag:\"component\",class:{ '!gl-border-t-0': _vm.isFileDiscussion },attrs:{\"note\":_vm.componentData(_vm.firstNote),\"line\":_vm.line || _vm.diffLine,\"discussion-file\":_vm.discussion.diff_file,\"commit\":_vm.commit,\"help-page-path\":_vm.helpPagePath,\"show-reply-button\":_vm.userCanReply,\"discussion-root\":true,\"discussion-resolve-path\":_vm.discussion.resolve_path,\"is-overview-tab\":_vm.isOverviewTab,\"should-scroll-to-note\":_vm.shouldScrollToNote,\"internal-note\":_vm.isDiscussionInternal},on:{\"handleDeleteNote\":function($event){return _vm.$emit('deleteNote')},\"startReplying\":function($event){return _vm.$emit('startReplying')}},scopedSlots:_vm._u([{key:\"discussion-resolved-text\",fn:function(){return [(_vm.discussion.resolved)?_c('note-edited-text',{attrs:{\"edited-at\":_vm.discussion.resolved_at,\"edited-by\":_vm.discussion.resolved_by,\"action-text\":_vm.resolvedText,\"class-name\":\"discussion-headline-light js-discussion-headline discussion-resolved-text -gl-mt-2 gl-mb-3 gl-ml-3\"}}):_vm._e()]},proxy:true},{key:\"avatar-badge\",fn:function(){return [_vm._t(\"avatar-badge\")]},proxy:true}],null,true)}),_vm._v(\" \"),(_vm.hasReplies || _vm.userCanReply)?_c('discussion-notes-replies-wrapper',{attrs:{\"is-diff-discussion\":_vm.discussion.diff_discussion}},[(_vm.hasReplies)?_c('toggle-replies-widget',{attrs:{\"collapsed\":!_vm.isExpanded,\"replies\":_vm.replies},on:{\"toggle\":function($event){return _vm.toggleDiscussion({ discussionId: _vm.discussion.id })}}}):_vm._e(),_vm._v(\" \"),(_vm.isExpanded)?_vm._l((_vm.replies),function(note){return _c(_vm.componentName(note),{key:note.id,tag:\"component\",attrs:{\"note\":_vm.componentData(note),\"help-page-path\":_vm.helpPagePath,\"line\":_vm.line,\"internal-note\":_vm.isDiscussionInternal},on:{\"handleDeleteNote\":function($event){return _vm.$emit('deleteNote')}}})}):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\",null,{\"showReplies\":_vm.isExpanded || !_vm.hasReplies})],2):_vm._e()]:[_vm._l((_vm.discussion.notes),function(note,index){return _c(_vm.componentName(note),{key:note.id,tag:\"component\",attrs:{\"note\":_vm.componentData(note),\"discussion-file\":_vm.discussion.diff_file,\"help-page-path\":_vm.helpPagePath,\"line\":_vm.diffLine,\"discussion-root\":index === 0,\"discussion-resolve-path\":_vm.discussion.resolve_path,\"is-overview-tab\":_vm.isOverviewTab,\"should-scroll-to-note\":_vm.shouldScrollToNote,\"internal-note\":_vm.isDiscussionInternal},on:{\"handleDeleteNote\":function($event){return _vm.$emit('deleteNote')}},scopedSlots:_vm._u([{key:\"avatar-badge\",fn:function(){return [(index === 0)?_vm._t(\"avatar-badge\"):_vm._e()]},proxy:true}],null,true)})}),_vm._v(\" \"),_vm._t(\"footer\",null,{\"showReplies\":_vm.isExpanded || !_vm.hasReplies})]],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!./noteable_discussion.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!./noteable_discussion.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlIcon } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters } from 'vuex';\nimport DraftNote from '~/batch_comments/components/draft_note.vue';\nimport { createAlert } from '~/alert';\nimport { clearDraft, getDraft, getAutoSaveKeyFromDiscussion } from '~/lib/utils/autosave';\nimport { isLoggedIn } from '~/lib/utils/common_utils';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { ignoreWhilePending } from '~/lib/utils/ignore_while_pending';\nimport { s__, __, sprintf } from '~/locale';\nimport diffLineNoteFormMixin from '~/notes/mixins/diff_line_note_form';\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\nimport UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';\nimport { detectAndConfirmSensitiveTokens } from '~/lib/utils/secret_detection';\nimport { FILE_DIFF_POSITION_TYPE, IMAGE_DIFF_POSITION_TYPE } from '~/diffs/constants';\nimport eventHub from '../event_hub';\nimport noteable from '../mixins/noteable';\nimport resolvable from '../mixins/resolvable';\nimport { createNoteErrorMessages } from '../utils';\nimport DiffDiscussionHeader from './diff_discussion_header.vue';\nimport DiffWithNote from './diff_with_note.vue';\nimport DiscussionActions from './discussion_actions.vue';\nimport DiscussionNotes from './discussion_notes.vue';\nimport NoteForm from './note_form.vue';\nimport NoteSignedOutWidget from './note_signed_out_widget.vue';\n\nexport default {\n  name: 'NoteableDiscussion',\n  components: {\n    GlIcon,\n    UserAvatarLink,\n    DiffDiscussionHeader,\n    NoteSignedOutWidget,\n    NoteForm,\n    DraftNote,\n    TimelineEntryItem,\n    DiscussionNotes,\n    DiscussionActions,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [noteable, resolvable, diffLineNoteFormMixin],\n  props: {\n    discussion: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    renderDiffFile: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    alwaysExpanded: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    discussionsByDiffOrder: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isOverviewTab: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    shouldScrollToNote: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  data() {\n    return {\n      isReplying: false,\n      isResolving: false,\n      resolveAsThread: true,\n    };\n  },\n  computed: {\n    ...mapGetters([\n      'convertedDisscussionIds',\n      'getNoteableData',\n      'userCanReply',\n      'showJumpToNextDiscussion',\n      'getUserData',\n    ]),\n    diffFile() {\n      const diffFile = this.discussion.diff_file;\n      if (!diffFile) return null;\n\n      return {\n        ...diffFile,\n        view_path: window.location.href.replace(\n          /\\/-\\/merge_requests.*/,\n          `/-/blob/${diffFile.content_sha}/${diffFile.new_path}`,\n        ),\n      };\n    },\n    currentUser() {\n      return this.getUserData;\n    },\n    isLoggedIn() {\n      return isLoggedIn();\n    },\n    commentType() {\n      return this.discussion.internal ? __('internal note') : __('comment');\n    },\n    autosaveKey() {\n      return getAutoSaveKeyFromDiscussion(this.discussion);\n    },\n    newNotePath() {\n      return this.getNoteableData.create_note_path;\n    },\n    saveButtonTitle() {\n      return this.discussion.internal ? __('Reply internally') : __('Reply');\n    },\n    shouldShowJumpToNextDiscussion() {\n      return this.showJumpToNextDiscussion(this.discussionsByDiffOrder ? 'diff' : 'discussion');\n    },\n    shouldRenderDiffs() {\n      return this.discussion.diff_discussion && this.renderDiffFile;\n    },\n    shouldGroupReplies() {\n      return !this.shouldRenderDiffs;\n    },\n    wrapperComponent() {\n      return this.shouldRenderDiffs ? DiffWithNote : 'div';\n    },\n    wrapperComponentProps() {\n      if (this.shouldRenderDiffs) {\n        return { discussion: this.discussion };\n      }\n\n      return {};\n    },\n    isExpanded() {\n      return this.discussion.expanded || this.alwaysExpanded;\n    },\n    shouldHideDiscussionBody() {\n      return this.shouldRenderDiffs && !this.isExpanded;\n    },\n    diffLine() {\n      if (this.line) {\n        return this.line;\n      }\n\n      if (this.discussion.diff_discussion && this.discussion.truncated_diff_lines) {\n        return this.discussion.truncated_diff_lines.slice(-1)[0];\n      }\n\n      return null;\n    },\n    resolveWithIssuePath() {\n      return !this.discussionResolved ? this.discussion.resolve_with_issue_path : '';\n    },\n    canShowReplyActions() {\n      if (this.shouldRenderDiffs) {\n        if (this.discussion.diff_file?.diff_refs) {\n          return true;\n        }\n\n        /*\n         * https://gitlab.com/gitlab-com/gl-infra/production/-/issues/19118\n         *\n         * For most diff discussions we should have a `diff_file`.\n         * However in some cases we might we might not have this object.\n         * In these we need to check if the `original_position.position_type`\n         * is either a file or an image, doing this allows us to still\n         * render the reply actions.\n         */\n        return (\n          this.discussion.original_position?.position_type === FILE_DIFF_POSITION_TYPE ||\n          this.discussion.original_position?.position_type === IMAGE_DIFF_POSITION_TYPE\n        );\n      }\n\n      return true;\n    },\n    isDiscussionInternal() {\n      return this.discussion.notes[0]?.internal;\n    },\n    discussionHolderClass() {\n      return {\n        'is-replying': this.isReplying,\n        'internal-note': this.isDiscussionInternal,\n        '!gl-pt-0': !this.discussion.diff_discussion && this.isReplying,\n      };\n    },\n    hasDraft() {\n      return Boolean(getDraft(this.autosaveKey));\n    },\n  },\n  created() {\n    eventHub.$on('startReplying', this.onStartReplying);\n    if (this.hasDraft) {\n      this.showReplyForm();\n    }\n  },\n  beforeDestroy() {\n    eventHub.$off('startReplying', this.onStartReplying);\n  },\n  methods: {\n    ...mapActions([\n      'saveNote',\n      'removePlaceholderNotes',\n      'toggleResolveNote',\n      'removeConvertedDiscussion',\n      'expandDiscussion',\n    ]),\n    showReplyForm(text) {\n      this.isReplying = true;\n\n      if (!this.discussion.expanded) {\n        this.expandDiscussion({ discussionId: this.discussion.id });\n      }\n\n      if (typeof text !== 'undefined') {\n        this.$nextTick(() => {\n          this.$refs.noteForm.append(text);\n        });\n      }\n    },\n    cancelReplyForm: ignoreWhilePending(async function cancelReplyForm(shouldConfirm, isDirty) {\n      if (shouldConfirm && isDirty) {\n        const msg = sprintf(\n          s__('Notes|Are you sure you want to cancel creating this %{commentType}?'),\n          { commentType: this.commentType },\n        );\n\n        const confirmed = await confirmAction(msg, {\n          primaryBtnText: __('Discard changes'),\n          cancelBtnText: __('Continue editing'),\n        });\n\n        if (!confirmed) {\n          return;\n        }\n      }\n\n      if (this.convertedDisscussionIds.includes(this.discussion.id)) {\n        this.removeConvertedDiscussion(this.discussion.id);\n      }\n\n      this.isReplying = false;\n      clearDraft(this.autosaveKey);\n    }),\n    async saveReply(noteText, form, callback) {\n      if (!noteText) {\n        this.cancelReplyForm();\n        callback();\n        return;\n      }\n\n      const confirmSubmit = await detectAndConfirmSensitiveTokens({ content: noteText });\n\n      if (!confirmSubmit) {\n        callback();\n        return;\n      }\n\n      const postData = {\n        in_reply_to_discussion_id: this.discussion.reply_id,\n        target_type: this.getNoteableData.targetType,\n        note: { note: noteText },\n      };\n\n      if (this.convertedDisscussionIds.includes(this.discussion.id)) {\n        postData.return_discussion = true;\n      }\n\n      if (this.discussion.for_commit) {\n        postData.note_project_id = this.discussion.project_id;\n      }\n\n      const replyData = {\n        endpoint: this.newNotePath,\n        flashContainer: this.$el,\n        data: postData,\n      };\n\n      this.saveNote(replyData)\n        .then(() => {\n          this.isReplying = false;\n          clearDraft(this.autosaveKey);\n\n          callback();\n        })\n        .catch((err) => {\n          this.handleSaveError(err); // The 'err' parameter is being used in JH, don't remove it\n          this.removePlaceholderNotes();\n\n          callback(err);\n        });\n    },\n    handleSaveError({ response }) {\n      const errorMessage = createNoteErrorMessages(response.data, response.status)[0];\n\n      createAlert({\n        message: errorMessage,\n        parent: this.$el,\n      });\n    },\n    onStartReplying(discussionId) {\n      if (this.discussion.id === discussionId) {\n        this.showReplyForm();\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <timeline-entry-item class=\"note note-discussion\">\n    <div class=\"timeline-content\">\n      <div\n        :data-discussion-id=\"discussion.id\"\n        :data-discussion-resolvable=\"discussion.resolvable\"\n        :data-discussion-resolved=\"discussion.resolved\"\n        class=\"discussion js-discussion-container\"\n        data-testid=\"discussion-content\"\n      >\n        <diff-discussion-header v-if=\"shouldRenderDiffs\" :discussion=\"discussion\" />\n        <div v-if=\"!shouldHideDiscussionBody\" class=\"discussion-body\">\n          <component\n            :is=\"wrapperComponent\"\n            v-bind=\"wrapperComponentProps\"\n            class=\"card discussion-wrapper\"\n          >\n            <discussion-notes\n              :discussion=\"discussion\"\n              :diff-line=\"diffLine\"\n              :help-page-path=\"helpPagePath\"\n              :is-expanded=\"isExpanded\"\n              :line=\"line\"\n              :should-group-replies=\"shouldGroupReplies\"\n              :is-overview-tab=\"isOverviewTab\"\n              :should-scroll-to-note=\"shouldScrollToNote\"\n              @startReplying=\"showReplyForm\"\n            >\n              <template #avatar-badge>\n                <slot name=\"avatar-badge\"></slot>\n              </template>\n              <template #footer=\"{ showReplies }\">\n                <draft-note\n                  v-if=\"showDraft(discussion.reply_id)\"\n                  :key=\"`draft_${discussion.id}`\"\n                  :draft=\"draftForDiscussion(discussion.reply_id)\"\n                  :line=\"line\"\n                />\n                <li\n                  v-else-if=\"canShowReplyActions && showReplies\"\n                  data-testid=\"reply-wrapper\"\n                  class=\"discussion-reply-holder clearfix gl-bg-subtle\"\n                  :class=\"discussionHolderClass\"\n                >\n                  <div class=\"flash-container !gl-mt-0 gl-mb-2\"></div>\n                  <discussion-actions\n                    v-if=\"!isReplying && userCanReply\"\n                    :discussion=\"discussion\"\n                    :is-resolving=\"isResolving\"\n                    :resolve-button-title=\"resolveButtonTitle\"\n                    :resolve-with-issue-path=\"resolveWithIssuePath\"\n                    :should-show-jump-to-next-discussion=\"shouldShowJumpToNextDiscussion\"\n                    @showReplyForm=\"showReplyForm\"\n                    @resolve=\"resolveHandler\"\n                  />\n                  <note-form\n                    v-if=\"isReplying\"\n                    ref=\"noteForm\"\n                    :discussion=\"discussion\"\n                    :diff-file=\"diffFile\"\n                    :line=\"diffLine\"\n                    :save-button-title=\"saveButtonTitle\"\n                    :autofocus=\"!hasDraft\"\n                    :autosave-key=\"autosaveKey\"\n                    @handleFormUpdateAddToReview=\"addReplyToReview\"\n                    @handleFormUpdate=\"saveReply\"\n                    @cancelForm=\"cancelReplyForm\"\n                  />\n                  <note-signed-out-widget v-if=\"!isLoggedIn\" />\n                </li>\n              </template>\n            </discussion-notes>\n          </component>\n        </div>\n      </div>\n    </div>\n  </timeline-entry-item>\n</template>\n","import { render, staticRenderFns } from \"./noteable_discussion.vue?vue&type=template&id=704eedcc\"\nimport script from \"./noteable_discussion.vue?vue&type=script&lang=js\"\nexport * from \"./noteable_discussion.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    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableEpicUpdated\"},\"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\":\"issuableEpicUpdated\"},\"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\":\"Issue\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasEpic\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"attribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"epic\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"EpicFragment\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":255}};\n    doc.loc.source = {\"body\":\"#import \\\"./epic.fragment.graphql\\\"\\n\\nsubscription issuableEpicUpdated($issuableId: IssuableID!) {\\n  issuableEpicUpdated(issuableId: $issuableId) {\\n    ... on Issue {\\n      id\\n      hasEpic\\n      attribute: epic {\\n        ...EpicFragment\\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(\"./epic.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[\"issuableEpicUpdated\"] = oneQuery(doc, \"issuableEpicUpdated\");\n        \n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","import Vue from 'vue';\nimport { parseBoolean, convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport CommitFormModal from './components/form_modal.vue';\nimport {\n  I18N_MODAL,\n  I18N_CHERRY_PICK_MODAL,\n  OPEN_CHERRY_PICK_MODAL,\n  CHERRY_PICK_MODAL_ID,\n} from './constants';\nimport createStore from './store';\n\nexport default function initInviteMembersModal(primaryActionEventName) {\n  const el = document.querySelector('.js-cherry-pick-commit-modal');\n  if (!el) {\n    return false;\n  }\n\n  const {\n    title,\n    endpoint,\n    branch,\n    targetProjectId,\n    targetProjectName,\n    pushCode,\n    branchCollaboration,\n    existingBranch,\n    branchesEndpoint,\n    projects,\n  } = el.dataset;\n\n  const store = createStore({\n    endpoint,\n    branchesEndpoint,\n    branch,\n    targetProjectId,\n    targetProjectName,\n    pushCode: parseBoolean(pushCode),\n    branchCollaboration: parseBoolean(branchCollaboration),\n    defaultBranch: branch,\n    modalTitle: title,\n    existingBranch,\n    projects: convertObjectPropsToCamelCase(JSON.parse(projects), { deep: true }),\n  });\n\n  return new Vue({\n    el,\n    store,\n    render: (createElement) =>\n      createElement(CommitFormModal, {\n        props: {\n          i18n: { ...I18N_CHERRY_PICK_MODAL, ...I18N_MODAL },\n          openModal: OPEN_CHERRY_PICK_MODAL,\n          modalId: CHERRY_PICK_MODAL_ID,\n          isCherryPick: true,\n          primaryActionEventName,\n        },\n      }),\n  });\n}\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getIssuesCountEE\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"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\":\"iid\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableSearchableField\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"AssigneeWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MilestoneWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTagWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReleaseTagWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssueType\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EpicWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IterationWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IterationsCadenceID\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WeightWildcardId\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"HealthStatusFilter\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NegatedIssueFilterInput\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"UnionedIssueFilterInput\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Time\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"skip\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"openedIssues\"},\"name\":{\"kind\":\"Name\",\"value\":\"issues\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubepics\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubgroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"opened\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"closedIssues\"},\"name\":{\"kind\":\"Name\",\"value\":\"issues\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubepics\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubgroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"closed\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"allIssues\"},\"name\":{\"kind\":\"Name\",\"value\":\"issues\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubepics\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubgroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"all\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"openedIssues\"},\"name\":{\"kind\":\"Name\",\"value\":\"issues\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubepics\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"opened\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTagWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTagWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"closedIssues\"},\"name\":{\"kind\":\"Name\",\"value\":\"issues\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubepics\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"closed\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTagWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTagWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"allIssues\"},\"name\":{\"kind\":\"Name\",\"value\":\"issues\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeSubepics\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"all\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"assigneeUsernames\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"authorUsername\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"confidential\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"labelName\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneTitle\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"milestoneWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"myReactionEmoji\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTag\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTagWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"releaseTagWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"epicWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadenceId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"weightWildcardId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"healthStatusFilter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmContactId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"crmOrganizationId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"not\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"or\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBefore\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedAfter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"closedBefore\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":7768}};\n    doc.loc.source = {\"body\":\"query getIssuesCountEE(\\n  $isProject: Boolean = false\\n  $fullPath: ID!\\n  $iid: String\\n  $search: String\\n  $in: [IssuableSearchableField!]\\n  $assigneeId: String\\n  $assigneeWildcardId: AssigneeWildcardId\\n  $assigneeUsernames: [String!]\\n  $authorUsername: String\\n  $confidential: Boolean\\n  $labelName: [String]\\n  $milestoneTitle: [String]\\n  $milestoneWildcardId: MilestoneWildcardId\\n  $myReactionEmoji: String\\n  $releaseTag: [String!]\\n  $releaseTagWildcardId: ReleaseTagWildcardId\\n  $types: [IssueType!]\\n  $epicId: String\\n  $epicWildcardId: EpicWildcardId\\n  $iterationId: [ID]\\n  $iterationWildcardId: IterationWildcardId\\n  $iterationCadenceId: [IterationsCadenceID!]\\n  $weight: String\\n  $weightWildcardId: WeightWildcardId\\n  $healthStatusFilter: HealthStatusFilter\\n  $crmContactId: String\\n  $crmOrganizationId: String\\n  $not: NegatedIssueFilterInput\\n  $or: UnionedIssueFilterInput\\n  $createdAfter: Time\\n  $createdBefore: Time\\n  $closedAfter: Time\\n  $closedBefore: Time\\n) {\\n  group(fullPath: $fullPath) @skip(if: $isProject) {\\n    id\\n    openedIssues: issues(\\n      includeSubepics: true\\n      includeSubgroups: true\\n      state: opened\\n      iid: $iid\\n      search: $search\\n      in: $in\\n      assigneeId: $assigneeId\\n      assigneeWildcardId: $assigneeWildcardId\\n      assigneeUsernames: $assigneeUsernames\\n      authorUsername: $authorUsername\\n      confidential: $confidential\\n      labelName: $labelName\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      types: $types\\n      epicId: $epicId\\n      epicWildcardId: $epicWildcardId\\n      iterationId: $iterationId\\n      iterationWildcardId: $iterationWildcardId\\n      iterationCadenceId: $iterationCadenceId\\n      weight: $weight\\n      weightWildcardId: $weightWildcardId\\n      healthStatusFilter: $healthStatusFilter\\n      crmContactId: $crmContactId\\n      crmOrganizationId: $crmOrganizationId\\n      not: $not\\n      or: $or\\n      createdAfter: $createdAfter\\n      createdBefore: $createdBefore\\n      closedAfter: $closedAfter\\n      closedBefore: $closedBefore\\n    ) {\\n      count\\n    }\\n    closedIssues: issues(\\n      includeSubepics: true\\n      includeSubgroups: true\\n      state: closed\\n      iid: $iid\\n      search: $search\\n      in: $in\\n      assigneeId: $assigneeId\\n      assigneeWildcardId: $assigneeWildcardId\\n      assigneeUsernames: $assigneeUsernames\\n      authorUsername: $authorUsername\\n      confidential: $confidential\\n      labelName: $labelName\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      types: $types\\n      epicId: $epicId\\n      epicWildcardId: $epicWildcardId\\n      iterationId: $iterationId\\n      iterationWildcardId: $iterationWildcardId\\n      iterationCadenceId: $iterationCadenceId\\n      weight: $weight\\n      weightWildcardId: $weightWildcardId\\n      healthStatusFilter: $healthStatusFilter\\n      crmContactId: $crmContactId\\n      crmOrganizationId: $crmOrganizationId\\n      not: $not\\n      or: $or\\n      createdAfter: $createdAfter\\n      createdBefore: $createdBefore\\n      closedAfter: $closedAfter\\n      closedBefore: $closedBefore\\n    ) {\\n      count\\n    }\\n    allIssues: issues(\\n      includeSubepics: true\\n      includeSubgroups: true\\n      state: all\\n      iid: $iid\\n      search: $search\\n      in: $in\\n      assigneeId: $assigneeId\\n      assigneeWildcardId: $assigneeWildcardId\\n      assigneeUsernames: $assigneeUsernames\\n      authorUsername: $authorUsername\\n      confidential: $confidential\\n      labelName: $labelName\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      types: $types\\n      epicId: $epicId\\n      epicWildcardId: $epicWildcardId\\n      iterationId: $iterationId\\n      iterationWildcardId: $iterationWildcardId\\n      iterationCadenceId: $iterationCadenceId\\n      weight: $weight\\n      weightWildcardId: $weightWildcardId\\n      healthStatusFilter: $healthStatusFilter\\n      crmContactId: $crmContactId\\n      crmOrganizationId: $crmOrganizationId\\n      not: $not\\n      or: $or\\n      createdAfter: $createdAfter\\n      createdBefore: $createdBefore\\n      closedAfter: $closedAfter\\n      closedBefore: $closedBefore\\n    ) {\\n      count\\n    }\\n  }\\n  project(fullPath: $fullPath) @include(if: $isProject) {\\n    id\\n    openedIssues: issues(\\n      includeSubepics: true\\n      state: opened\\n      iid: $iid\\n      search: $search\\n      in: $in\\n      assigneeId: $assigneeId\\n      assigneeWildcardId: $assigneeWildcardId\\n      assigneeUsernames: $assigneeUsernames\\n      authorUsername: $authorUsername\\n      confidential: $confidential\\n      labelName: $labelName\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      releaseTag: $releaseTag\\n      releaseTagWildcardId: $releaseTagWildcardId\\n      types: $types\\n      epicId: $epicId\\n      epicWildcardId: $epicWildcardId\\n      iterationId: $iterationId\\n      iterationWildcardId: $iterationWildcardId\\n      iterationCadenceId: $iterationCadenceId\\n      weight: $weight\\n      weightWildcardId: $weightWildcardId\\n      healthStatusFilter: $healthStatusFilter\\n      crmContactId: $crmContactId\\n      crmOrganizationId: $crmOrganizationId\\n      not: $not\\n      or: $or\\n      createdAfter: $createdAfter\\n      createdBefore: $createdBefore\\n      closedAfter: $closedAfter\\n      closedBefore: $closedBefore\\n    ) {\\n      count\\n    }\\n    closedIssues: issues(\\n      includeSubepics: true\\n      state: closed\\n      iid: $iid\\n      search: $search\\n      in: $in\\n      assigneeId: $assigneeId\\n      assigneeWildcardId: $assigneeWildcardId\\n      assigneeUsernames: $assigneeUsernames\\n      authorUsername: $authorUsername\\n      confidential: $confidential\\n      labelName: $labelName\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      releaseTag: $releaseTag\\n      releaseTagWildcardId: $releaseTagWildcardId\\n      types: $types\\n      epicId: $epicId\\n      epicWildcardId: $epicWildcardId\\n      iterationId: $iterationId\\n      iterationWildcardId: $iterationWildcardId\\n      iterationCadenceId: $iterationCadenceId\\n      weight: $weight\\n      weightWildcardId: $weightWildcardId\\n      healthStatusFilter: $healthStatusFilter\\n      crmContactId: $crmContactId\\n      crmOrganizationId: $crmOrganizationId\\n      not: $not\\n      or: $or\\n      createdAfter: $createdAfter\\n      createdBefore: $createdBefore\\n      closedAfter: $closedAfter\\n      closedBefore: $closedBefore\\n    ) {\\n      count\\n    }\\n    allIssues: issues(\\n      includeSubepics: true\\n      state: all\\n      iid: $iid\\n      search: $search\\n      in: $in\\n      assigneeId: $assigneeId\\n      assigneeWildcardId: $assigneeWildcardId\\n      assigneeUsernames: $assigneeUsernames\\n      authorUsername: $authorUsername\\n      confidential: $confidential\\n      labelName: $labelName\\n      milestoneTitle: $milestoneTitle\\n      milestoneWildcardId: $milestoneWildcardId\\n      myReactionEmoji: $myReactionEmoji\\n      releaseTag: $releaseTag\\n      releaseTagWildcardId: $releaseTagWildcardId\\n      types: $types\\n      epicId: $epicId\\n      epicWildcardId: $epicWildcardId\\n      iterationId: $iterationId\\n      iterationWildcardId: $iterationWildcardId\\n      iterationCadenceId: $iterationCadenceId\\n      weight: $weight\\n      weightWildcardId: $weightWildcardId\\n      healthStatusFilter: $healthStatusFilter\\n      crmContactId: $crmContactId\\n      crmOrganizationId: $crmOrganizationId\\n      not: $not\\n      or: $or\\n      createdAfter: $createdAfter\\n      createdBefore: $createdBefore\\n      closedAfter: $closedAfter\\n      closedBefore: $closedBefore\\n    ) {\\n      count\\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[\"getIssuesCountEE\"] = oneQuery(doc, \"getIssuesCountEE\");\n        \n","import $ from 'jquery';\nimport Api from '~/api';\nimport { humanize } from '~/lib/utils/text_utility';\n\nexport default class CreateLabelDropdown {\n  constructor($el, namespacePath, projectPath) {\n    this.$el = $el;\n    this.namespacePath = namespacePath;\n    this.projectPath = projectPath;\n    this.$dropdownBack = $('.dropdown-menu-back', this.$el.closest('.dropdown'));\n    this.$cancelButton = $('.js-cancel-label-btn', this.$el);\n    this.$newLabelField = $('#new_label_name', this.$el);\n    this.$newColorField = $('#new_label_color', this.$el);\n    this.$colorPreview = $('.js-dropdown-label-color-preview', this.$el);\n    this.$addList = $('.js-add-list', this.$el);\n    this.$newLabelError = $('.js-label-error', this.$el);\n    this.$newLabelErrorContent = $('.gl-alert-content', this.$newLabelError);\n    this.$newLabelCreateButton = $('.js-new-label-btn', this.$el);\n    this.$colorSuggestions = $('.suggest-colors-dropdown a', this.$el);\n\n    this.$newLabelError.hide();\n    this.$newLabelCreateButton.disable();\n\n    this.addListDefault = this.$addList.is(':checked');\n\n    this.cleanBinding();\n    this.addBinding();\n  }\n\n  cleanBinding() {\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    this.$colorSuggestions.off('click');\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    this.$newLabelField.off('keyup change');\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    this.$newColorField.off('keyup change');\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    this.$colorPreview.off('keyup change');\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    this.$dropdownBack.off('click');\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    this.$cancelButton.off('click');\n    // eslint-disable-next-line @gitlab/no-global-event-off\n    this.$newLabelCreateButton.off('click');\n  }\n\n  addBinding() {\n    const self = this;\n\n    // eslint-disable-next-line func-names\n    this.$colorSuggestions.on('click', function (e) {\n      const $this = $(this);\n      self.addColorValue(e, $this);\n    });\n\n    this.$newLabelField.on('keyup change', this.enableLabelCreateButton.bind(this));\n    this.$newColorField.on('keyup change', this.enableLabelCreateButton.bind(this));\n    this.$colorPreview.on('keyup change', this.enableLabelCreateButton.bind(this));\n\n    this.$newColorField.on('input', this.updateColorPreview.bind(this));\n    this.$colorPreview.on('input', this.updateColorPickerPreview.bind(this));\n\n    this.$dropdownBack.on('click', this.resetForm.bind(this));\n\n    this.$cancelButton.on('click', (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n\n      self.resetForm();\n      self.$dropdownBack.trigger('click');\n    });\n\n    this.$newLabelCreateButton.on('click', this.saveLabel.bind(this));\n  }\n\n  addColorValue(e, $this) {\n    e.preventDefault();\n    e.stopPropagation();\n\n    this.$newColorField.val($this.data('color')).trigger('change');\n    this.$colorPreview.val($this.data('color')).trigger('change');\n  }\n\n  updateColorPreview() {\n    const previewColor = this.$newColorField.val();\n    return this.$colorPreview.val(previewColor);\n    // Updates the preview color with the hex-color input\n  }\n\n  updateColorPickerPreview() {\n    const previewColor = this.$colorPreview.val();\n    return this.$newColorField.val(previewColor);\n    // Updates the input color with the hex-color from the picker\n  }\n\n  enableLabelCreateButton() {\n    if (this.$newLabelField.val() !== '' && this.$newColorField.val() !== '') {\n      this.$newLabelError.hide();\n      this.$newLabelCreateButton.enable();\n    } else {\n      this.$newLabelCreateButton.disable();\n    }\n  }\n\n  resetForm() {\n    this.$newLabelField.val('').trigger('change');\n\n    this.$newColorField.val('').trigger('change');\n\n    this.$addList.prop('checked', this.addListDefault);\n\n    this.$colorPreview.val('');\n  }\n\n  saveLabel(e) {\n    e.preventDefault();\n    e.stopPropagation();\n\n    Api.newLabel(\n      this.namespacePath,\n      this.projectPath,\n      {\n        title: this.$newLabelField.val(),\n        color: this.$newColorField.val(),\n      },\n      (label) => {\n        this.$newLabelCreateButton.enable();\n\n        if (label.message) {\n          let errors;\n\n          if (typeof label.message === 'string') {\n            errors = label.message;\n          } else {\n            errors = Object.keys(label.message)\n              .map((key) => `${humanize(key)} ${label.message[key].join(', ')}`)\n              .join('<br/>');\n          }\n\n          this.$newLabelErrorContent.html(errors);\n          this.$newLabelError.show();\n        } else {\n          const addNewList = this.$addList.is(':checked');\n          this.$dropdownBack.trigger('click');\n          $(document).trigger('created.label', [label, addNewList]);\n        }\n      },\n    );\n  }\n}\n","/* eslint-disable func-names, no-underscore-dangle, no-new, consistent-return, no-shadow, no-param-reassign, no-lonely-if, no-empty */\n/* global Issuable */\n\nimport $ from 'jquery';\nimport { difference, isEqual, escape, sortBy, template, union } from 'lodash';\nimport initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown';\nimport IssuableBulkUpdateActions from '~/issuable/issuable_bulk_update_actions';\nimport { isScopedLabel } from '~/lib/utils/common_utils';\nimport { createAlert } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\nimport { sprintf, __ } from '~/locale';\nimport CreateLabelDropdown from './create_label_dropdown';\n\nexport default class LabelsSelect {\n  constructor(els, options = {}) {\n    const _this = this;\n\n    let $els = $(els);\n\n    if (!els) {\n      $els = $('.js-label-select');\n    }\n\n    $els.each((i, dropdown) => {\n      const $dropdown = $(dropdown);\n      const $dropdownContainer = $dropdown.closest('.labels-filter');\n      const namespacePath = $dropdown.data('namespacePath');\n      const projectPath = $dropdown.data('projectPath');\n      const issueUpdateURL = $dropdown.data('issueUpdate');\n      let selectedLabel = $dropdown.data('selected');\n      if (selectedLabel != null && !$dropdown.hasClass('js-multiselect')) {\n        selectedLabel = selectedLabel.split(',');\n      }\n      const showNo = $dropdown.data('showNo');\n      const showAny = $dropdown.data('showAny');\n      const showMenuAbove = $dropdown.data('showMenuAbove');\n      const defaultLabel = $dropdown.data('defaultLabel') || __('Label');\n      const abilityName = $dropdown.data('abilityName');\n      const $selectbox = $dropdown.closest('.selectbox');\n      const $block = $selectbox.closest('.block');\n      const $form = $dropdown.closest('form, .js-issuable-update');\n      const $sidebarCollapsedValue = $block.find('.sidebar-collapsed-icon span');\n      const $value = $block.find('.value');\n      const $loading = $block.find('.block-loading').addClass('gl-hidden');\n      const fieldName = $dropdown.data('fieldName');\n      let initialSelected = $selectbox\n        .find(`input[name=\"${$dropdown.data('fieldName')}\"]`)\n        .map(function () {\n          return this.value;\n        })\n        .get();\n      const scopedLabels = $dropdown.data('scopedLabels');\n      const { handleClick } = options;\n\n      if ($dropdown.closest('.dropdown').find('.dropdown-new-label').length) {\n        new CreateLabelDropdown(\n          $dropdown.closest('.dropdown').find('.dropdown-new-label'),\n          namespacePath,\n          projectPath,\n        );\n      }\n\n      const saveLabelData = function () {\n        const selected = $dropdown\n          .closest('.selectbox')\n          .find(`input[name='${fieldName}']`)\n          .map(function () {\n            return this.value;\n          })\n          .get();\n\n        if (isEqual(initialSelected, selected)) return;\n        initialSelected = selected;\n\n        const data = {};\n        data[abilityName] = {};\n        data[abilityName].label_ids = selected;\n        if (!selected.length) {\n          data[abilityName].label_ids = [''];\n        }\n        $loading.removeClass('gl-hidden');\n        $dropdown.trigger('loading.gl.dropdown');\n        axios\n          .put(issueUpdateURL, data)\n          .then(({ data }) => {\n            let template;\n            $loading.addClass('gl-hidden');\n            $dropdown.trigger('loaded.gl.dropdown');\n            $selectbox.hide();\n            data.issueUpdateURL = issueUpdateURL;\n            let labelCount = 0;\n            if (data.labels.length && issueUpdateURL) {\n              template = LabelsSelect.getLabelTemplate({\n                labels: sortBy(data.labels, 'title'),\n                issueUpdateURL,\n                enableScopedLabels: scopedLabels,\n              });\n              labelCount = data.labels.length;\n\n              // EE Specific\n              if (IS_EE) {\n                /**\n                 * For Scoped labels, the last label selected with the\n                 * same key will be applied to the current issuable.\n                 *\n                 * If these are the labels - priority::1, priority::2; and if\n                 * we apply them in the same order, only priority::2 will stick\n                 * with the issuable.\n                 *\n                 * In the current dropdown implementation, we keep track of all\n                 * the labels selected via a hidden DOM element. Since a User\n                 * can select priority::1 and priority::2 at the same time, the\n                 * DOM will have 2 hidden input and the dropdown will show both\n                 * the items selected but in reality server only applied\n                 * priority::2.\n                 *\n                 * We find all the labels then find all the labels server accepted\n                 * and then remove the excess ones.\n                 */\n                const toRemoveIds = Array.from(\n                  $form.find(`input[type=\"hidden\"][name=\"${fieldName}\"]`),\n                )\n                  .map((el) => el.value)\n                  .map(Number);\n\n                data.labels.forEach((label) => {\n                  const index = toRemoveIds.indexOf(label.id);\n                  toRemoveIds.splice(index, 1);\n                });\n\n                toRemoveIds.forEach((id) => {\n                  $form\n                    .find(`input[type=\"hidden\"][name=\"${fieldName}\"][value=\"${id}\"]`)\n                    .last()\n                    .remove();\n                });\n              }\n            } else {\n              template = `<span class=\"no-value\">${__('None')}</span>`;\n            }\n            $value.removeAttr('style').html(template);\n            $sidebarCollapsedValue.text(labelCount);\n\n            $('.has-tooltip', $value).tooltip({\n              container: 'body',\n            });\n          })\n          .catch(() =>\n            createAlert({\n              message: __('Error saving label update.'),\n            }),\n          );\n      };\n      initDeprecatedJQueryDropdown($dropdown, {\n        showMenuAbove,\n        data(term, callback) {\n          const labelUrl = $dropdown.attr('data-labels');\n          axios\n            .get(labelUrl)\n            .then((res) => {\n              let { data } = res;\n              if ($dropdown.hasClass('js-extra-options')) {\n                const extraData = [];\n                if (showNo) {\n                  extraData.unshift({\n                    id: 0,\n                    title: __('No label'),\n                  });\n                }\n                if (showAny) {\n                  extraData.unshift({\n                    isAny: true,\n                    title: __('Any label'),\n                  });\n                }\n                if (extraData.length) {\n                  extraData.push({ type: 'divider' });\n                  data = extraData.concat(data);\n                }\n              }\n\n              callback(data);\n              if (showMenuAbove) {\n                $dropdown.data('deprecatedJQueryDropdown').positionMenuAbove();\n              }\n            })\n            .catch(() =>\n              createAlert({\n                message: __('Error fetching labels.'),\n              }),\n            );\n        },\n        renderRow(label) {\n          let colorEl;\n\n          const selectedClass = [];\n          const removesAll = label.id <= 0 || label.id == null;\n\n          if ($dropdown.hasClass('js-filter-bulk-update')) {\n            const indeterminate = $dropdown.data('indeterminate') || [];\n            const marked = $dropdown.data('marked') || [];\n\n            if (indeterminate.indexOf(label.id) !== -1) {\n              selectedClass.push('is-indeterminate');\n            }\n\n            if (marked.indexOf(label.id) !== -1) {\n              // Remove is-indeterminate class if the item will be marked as active\n              const i = selectedClass.indexOf('is-indeterminate');\n              if (i !== -1) {\n                selectedClass.splice(i, 1);\n              }\n              selectedClass.push('is-active');\n            }\n          } else {\n            if (this.id(label)) {\n              const dropdownValue = this.id(label).toString().replace(/'/g, \"\\\\'\");\n\n              if (\n                $form.find(\n                  `input[type='hidden'][name='${this.fieldName}'][value='${dropdownValue}']`,\n                ).length\n              ) {\n                selectedClass.push('is-active');\n              }\n            }\n\n            if (this.multiSelect && removesAll) {\n              selectedClass.push('dropdown-clear-active');\n            }\n          }\n\n          if (label.color) {\n            colorEl = `<span class='dropdown-label-box' style='background: ${label.color}'></span>`;\n          } else {\n            colorEl = '';\n          }\n\n          const linkEl = document.createElement('a');\n          linkEl.href = '#';\n\n          // We need to identify which items are actually labels\n          if (label.id) {\n            const selectedLayoutClasses = ['gl-flex', 'flex-row', 'gl-break-all'];\n            selectedClass.push('label-item', ...selectedLayoutClasses);\n            linkEl.dataset.labelId = label.id;\n          }\n\n          linkEl.className = selectedClass.join(' ');\n          // eslint-disable-next-line no-unsanitized/property\n          linkEl.innerHTML = `${colorEl} ${escape(label.title)}`;\n\n          const listItemEl = document.createElement('li');\n          listItemEl.appendChild(linkEl);\n\n          return listItemEl;\n        },\n        search: {\n          fields: ['title'],\n        },\n        selectable: true,\n        filterable: true,\n        selected: $dropdown.data('selected') || [],\n        toggleLabel(selected, el) {\n          const $dropdownParent = $dropdown.parent();\n          const $dropdownInputField = $dropdownParent.find('.dropdown-input-field');\n          const isSelected = el !== null ? el.hasClass('is-active') : false;\n\n          const title = selected ? selected.title : null;\n          const selectedLabels = this.selected;\n\n          if ($dropdownInputField.length && $dropdownInputField.val().length) {\n            $dropdownParent.find('.dropdown-input-clear').trigger('click');\n          }\n\n          if (selected && selected.id === 0) {\n            this.selected = [];\n            return __('No label');\n          }\n          if (isSelected) {\n            this.selected.push(title);\n          } else if (!isSelected && title) {\n            const index = this.selected.indexOf(title);\n            this.selected.splice(index, 1);\n          }\n\n          if (selectedLabels.length === 1) {\n            return selectedLabels;\n          }\n          if (selectedLabels.length) {\n            return sprintf(__('%{firstLabel} +%{labelCount} more'), {\n              firstLabel: selectedLabels[0],\n              labelCount: selectedLabels.length - 1,\n            });\n          }\n          return defaultLabel;\n        },\n        fieldName: $dropdown.data('fieldName'),\n        id(label) {\n          if (label.id <= 0) return label.title;\n\n          if ($dropdown.hasClass('js-issuable-form-dropdown')) {\n            return label.id;\n          }\n\n          if ($dropdown.hasClass('js-filter-submit') && label.isAny == null) {\n            return label.title;\n          }\n          return label.id;\n        },\n        hidden() {\n          const page = $('body').attr('data-page');\n          const isIssueIndex = page === 'projects:issues:index';\n          const isMRIndex = page === 'projects:merge_requests:index';\n          $selectbox.hide();\n          // display:block overrides the hide-collapse rule\n          $value.removeAttr('style');\n\n          if ($dropdown.hasClass('js-issuable-form-dropdown')) {\n            return;\n          }\n\n          if (\n            $('html')\n              .attr('class')\n              .match(/issue-boards-page|epic-boards-page/)\n          ) {\n            return;\n          }\n          if ($dropdown.hasClass('js-multiselect')) {\n            if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {\n              Issuable.filterResults($dropdown.closest('form'));\n            } else if ($dropdown.hasClass('js-filter-submit')) {\n              $dropdown.closest('form').submit();\n            } else {\n              if (!$dropdown.hasClass('js-filter-bulk-update')) {\n                saveLabelData();\n                $dropdown.data('deprecatedJQueryDropdown').clearMenu();\n              }\n            }\n          }\n        },\n        multiSelect: $dropdown.hasClass('js-multiselect'),\n        vue: false,\n        clicked(clickEvent) {\n          const { e, isMarking } = clickEvent;\n          const label = clickEvent.selectedObj;\n\n          const page = $('body').attr('data-page');\n          const isIssueIndex = page === 'projects:issues:index';\n          const isMRIndex = page === 'projects:merge_requests:index';\n\n          if ($dropdown.parent().find('.is-active:not(.dropdown-clear-active)').length) {\n            $dropdown.parent().find('.dropdown-clear-active').removeClass('is-active');\n          }\n\n          if ($dropdown.hasClass('js-issuable-form-dropdown')) {\n            return;\n          }\n\n          if ($dropdown.hasClass('js-filter-bulk-update')) {\n            _this.enableBulkLabelDropdown();\n            _this.setDropdownData($dropdown, isMarking, label.id);\n            return;\n          }\n\n          if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {\n            if (!$dropdown.hasClass('js-multiselect')) {\n              selectedLabel = label.title;\n              return Issuable.filterResults($dropdown.closest('form'));\n            }\n          } else if ($dropdown.hasClass('js-filter-submit')) {\n            return $dropdown.closest('form').submit();\n          } else if (handleClick) {\n            e.preventDefault();\n            handleClick(label);\n          } else {\n            if ($dropdown.hasClass('js-multiselect')) {\n            } else {\n              return saveLabelData();\n            }\n          }\n        },\n        preserveContext: true,\n      });\n\n      // Set dropdown data\n      _this.setOriginalDropdownData($dropdownContainer, $dropdown);\n    });\n    this.bindEvents();\n  }\n\n  static getLabelTemplate(tplData) {\n    // We could use ES6 template string here\n    // and properly indent markup for readability\n    // but that also introduces unintended white-space\n    // so best approach is to use traditional way of\n    // concatenation\n    // see: http://2ality.com/2016/05/template-literal-whitespace.html#joining-arrays\n\n    const linkOpenTag =\n      '<a href=\"<%- issueUpdateURL.slice(0, issueUpdateURL.lastIndexOf(\"/\")) %>?label_name[]=<%- encodeURIComponent(label.title) %>\" class=\"gl-link gl-label-link has-tooltip\" <%= linkAttrs %> title=\"<%= tooltipTitleTemplate({ label, isScopedLabel, enableScopedLabels, escapeStr }) %>\">';\n    const labelTemplate = template(\n      [\n        '<span class=\"gl-label\">',\n        linkOpenTag,\n        '<span class=\"gl-label-text <%= labelTextClass({ label, escapeStr }) %>\" style=\"background-color: <%= escapeStr(label.color) %>;\">',\n        '<%- label.title %>',\n        '</span>',\n        '</a>',\n        '</span>',\n      ].join(''),\n    );\n\n    const labelTextClass = ({ label, escapeStr }) => {\n      return escapeStr(\n        label.text_color === '#FFFFFF' ? 'gl-label-text-light' : 'gl-label-text-dark',\n      );\n    };\n\n    const rightLabelTextClass = ({ label, escapeStr }) => {\n      return escapeStr(label.text_color === '#333333' ? labelTextClass({ label, escapeStr }) : '');\n    };\n\n    const scopedLabelTemplate = template(\n      [\n        '<span class=\"gl-label gl-label-scoped\" style=\"color: <%= escapeStr(label.color) %>; --label-inset-border: inset 0 0 0 2px <%= escapeStr(label.color) %>;\">',\n        linkOpenTag,\n        '<span class=\"gl-label-text <%= labelTextClass({ label, escapeStr }) %>\" style=\"background-color: <%= escapeStr(label.color) %>;\">',\n        '<%- label.title.slice(0, label.title.lastIndexOf(\"::\")) %>',\n        '</span>',\n        '<span class=\"gl-label-text <%= rightLabelTextClass({ label, escapeStr }) %>\">',\n        '<%- label.title.slice(label.title.lastIndexOf(\"::\") + 2) %>',\n        '</span>',\n        '</a>',\n        '</span>',\n      ].join(''),\n    );\n\n    const tooltipTitleTemplate = template(\n      [\n        '<% if (isScopedLabel(label) && enableScopedLabels) { %>',\n        \"<span class='font-weight-bold'>Scoped label</span>\",\n        '<br>',\n        '<%= escapeStr(label.description) %>',\n        '<% } else { %>',\n        '<%= escapeStr(label.description) %>',\n        '<% } %>',\n      ].join(''),\n    );\n\n    const tpl = template(\n      [\n        '<% labels.forEach(function(label){ %>',\n        '<% if (isScopedLabel(label) && enableScopedLabels) { %>',\n        '<%= scopedLabelTemplate({ label, issueUpdateURL, isScopedLabel, enableScopedLabels, labelTextClass, rightLabelTextClass, tooltipTitleTemplate, escapeStr, linkAttrs: \\'data-html=\"true\"\\' }) %>',\n        '<% } else { %>',\n        '<%= labelTemplate({ label, issueUpdateURL, isScopedLabel, enableScopedLabels, labelTextClass, tooltipTitleTemplate, escapeStr, linkAttrs: \"\" }) %>',\n        '<% } %>',\n        '<% }); %>',\n      ].join(''),\n    );\n\n    return tpl({\n      ...tplData,\n      labelTemplate,\n      labelTextClass,\n      rightLabelTextClass,\n      scopedLabelTemplate,\n      tooltipTitleTemplate,\n      isScopedLabel,\n      escapeStr: escape,\n    });\n  }\n\n  bindEvents() {\n    return $('body').on(\n      'change',\n      '.issuable-list input[type=\"checkbox\"]',\n      this.onSelectCheckboxIssue,\n    );\n  }\n  // eslint-disable-next-line class-methods-use-this\n  onSelectCheckboxIssue() {\n    if ($('.issuable-list input[type=\"checkbox\"]:checked').length) {\n      return;\n    }\n    return $('.issues-bulk-update .labels-filter .dropdown-toggle-text').text(__('Label'));\n  }\n  // eslint-disable-next-line class-methods-use-this\n  enableBulkLabelDropdown() {\n    IssuableBulkUpdateActions.willUpdateLabels = true;\n  }\n  // eslint-disable-next-line class-methods-use-this\n  setDropdownData($dropdown, isMarking, labelId) {\n    let userCheckedIds = $dropdown.data('user-checked') || [];\n    let userUncheckedIds = $dropdown.data('user-unchecked') || [];\n\n    if (isMarking) {\n      userCheckedIds = union(userCheckedIds, [labelId]);\n      userUncheckedIds = difference(userUncheckedIds, [labelId]);\n    } else {\n      userUncheckedIds = union(userUncheckedIds, [labelId]);\n      userCheckedIds = difference(userCheckedIds, [labelId]);\n    }\n\n    $dropdown.data('user-checked', userCheckedIds);\n    $dropdown.data('user-unchecked', userUncheckedIds);\n  }\n  // eslint-disable-next-line class-methods-use-this\n  setOriginalDropdownData($container, $dropdown) {\n    const labels = [];\n    $container.find('[name=\"label_name[]\"]').map(function () {\n      return labels.push(this.value);\n    });\n    $dropdown.data('marked', labels);\n  }\n}\n","// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions, mapState } from 'vuex';\nimport { scrollToElement, contentTop } from '~/lib/utils/common_utils';\n\nfunction isOverviewPage() {\n  return window.mrTabs?.currentAction === 'show';\n}\n\nfunction getAllDiscussionElements() {\n  const containerEl = isOverviewPage() ? '.tab-pane.notes' : '.diffs';\n  return Array.from(\n    document.querySelectorAll(\n      `${containerEl} div[data-discussion-id][data-discussion-resolvable]:not([data-discussion-resolved])`,\n    ),\n  );\n}\n\nfunction hasReachedPageEnd() {\n  return document.body.scrollHeight <= Math.ceil(window.scrollY + window.innerHeight);\n}\n\nfunction findNextClosestVisibleDiscussion(discussionElements) {\n  const offsetHeight = contentTop();\n  let isActive;\n  const index = discussionElements.findIndex((element) => {\n    const { y } = element.getBoundingClientRect();\n    const visibleHorizontalOffset = Math.ceil(y) - offsetHeight;\n    // handle rect rounding errors\n    isActive = visibleHorizontalOffset < 2;\n    return visibleHorizontalOffset >= 0;\n  });\n  return [discussionElements[index], index, isActive];\n}\n\nfunction getNextDiscussion() {\n  const discussionElements = getAllDiscussionElements();\n  const firstDiscussion = discussionElements[0];\n  if (hasReachedPageEnd()) {\n    return firstDiscussion;\n  }\n  const [nextClosestDiscussion, index, isActive] =\n    findNextClosestVisibleDiscussion(discussionElements);\n  if (nextClosestDiscussion && !isActive) {\n    return nextClosestDiscussion;\n  }\n  const nextDiscussion = discussionElements[index + 1];\n  if (!nextClosestDiscussion || !nextDiscussion) {\n    return firstDiscussion;\n  }\n  return nextDiscussion;\n}\n\nfunction getPreviousDiscussion() {\n  const discussionElements = getAllDiscussionElements();\n  const lastDiscussion = discussionElements[discussionElements.length - 1];\n  const [, index] = findNextClosestVisibleDiscussion(discussionElements);\n  const previousDiscussion = discussionElements[index - 1];\n  if (previousDiscussion) {\n    return previousDiscussion;\n  }\n  return lastDiscussion;\n}\n\n// eslint-disable-next-line max-params\nfunction handleJumpForBothPages(getDiscussion, ctx, fn, scrollOptions) {\n  const discussion = getDiscussion();\n\n  if (!isOverviewPage() && !discussion) {\n    window.mrTabs?.eventHub.$once('NotesAppReady', () => {\n      handleJumpForBothPages(getDiscussion, ctx, fn, scrollOptions);\n    });\n    window.mrTabs?.setCurrentAction('show');\n    window.mrTabs?.tabShown('show', undefined, false);\n    return;\n  }\n\n  if (discussion) {\n    const id = discussion.dataset.discussionId;\n    ctx.expandDiscussion({ discussionId: id });\n    scrollToElement(discussion, scrollOptions);\n  }\n}\n\nexport default {\n  computed: {\n    ...mapGetters([\n      'nextUnresolvedDiscussionId',\n      'previousUnresolvedDiscussionId',\n      'getDiscussion',\n    ]),\n    ...mapState({\n      currentDiscussionId: (state) => state.notes.currentDiscussionId,\n    }),\n  },\n  methods: {\n    ...mapActions(['expandDiscussion', 'setCurrentDiscussionId']),\n    ...mapActions('diffs', ['scrollToFile', 'disableVirtualScroller']),\n\n    async jumpToNextDiscussion(scrollOptions) {\n      await this.disableVirtualScroller();\n\n      handleJumpForBothPages(\n        getNextDiscussion,\n        this,\n        this.nextUnresolvedDiscussionId,\n        scrollOptions,\n      );\n    },\n\n    async jumpToPreviousDiscussion(scrollOptions) {\n      await this.disableVirtualScroller();\n\n      handleJumpForBothPages(\n        getPreviousDiscussion,\n        this,\n        this.previousUnresolvedDiscussionId,\n        scrollOptions,\n      );\n    },\n\n    jumpToFirstUnresolvedDiscussion() {\n      this.setCurrentDiscussionId(null)\n        .then(() => {\n          this.jumpToNextDiscussion();\n        })\n        .catch(() => {});\n    },\n  },\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('timeline-entry-item',{staticClass:\"system-note\",class:{\n    target: _vm.isTargetNote,\n    'pr-0': _vm.shouldShowDescriptionVersion,\n  },attrs:{\"id\":_vm.noteAnchorId}},[_c('div',{staticClass:\"gl-relative gl-float-left gl-flex gl-items-center gl-justify-center gl-rounded-full\",class:[\n      _vm.iconBgClass,\n      {\n        'system-note-icon -gl-mt-1 gl-ml-2 gl-h-6 gl-w-6': _vm.isAllowedIcon,\n        'system-note-dot -gl-top-1 gl-ml-4 gl-mt-3 gl-h-3 gl-w-3 gl-border-2 gl-border-solid gl-border-subtle gl-bg-gray-900':\n          !_vm.isAllowedIcon,\n      },\n    ]},[(_vm.isAllowedIcon)?_c('gl-icon',{attrs:{\"name\":_vm.systemNoteIconName,\"size\":14,\"data-testid\":\"timeline-icon\"}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-ml-7\"},[_c('div',{staticClass:\"gl-flex gl-items-start gl-justify-between\"},[_c('note-header',{attrs:{\"author\":_vm.note.author,\"created-at\":_vm.note.created_at,\"note-id\":_vm.note.id,\"is-system-note\":true,\"is-imported\":_vm.note.imported},scopedSlots:_vm._u([(_vm.canSeeDescriptionVersion || _vm.note.outdated_line_change_path)?{key:\"extra-controls\",fn:function(){return [(_vm.canSeeDescriptionVersion)?_c('gl-button',{staticClass:\"gl-ml-3 gl-align-text-bottom !gl-text-sm\",attrs:{\"variant\":\"link\",\"icon\":_vm.descriptionVersionToggleIcon,\"data-testid\":\"compare-btn\"},on:{\"click\":_vm.toggleDescriptionVersion}},[_vm._v(_vm._s(_vm.__('Compare with previous version')))]):_vm._e(),_vm._v(\" \"),(_vm.note.outdated_line_change_path)?_c('gl-button',{staticClass:\"gl-align-text-bottom !gl-text-sm\",attrs:{\"icon\":_vm.showLines ? 'chevron-up' : 'chevron-down',\"variant\":\"link\",\"data-testid\":\"outdated-lines-change-btn\"},on:{\"click\":_vm.toggleDiff}},[_vm._v(\"\\n            \"+_vm._s(_vm.__('Compare changes'))+\"\\n          \")]):_vm._e()]},proxy:true}:null],null,true)},[_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.actionTextHtml),expression:\"actionTextHtml\"}],ref:\"gfm-content\"})])],1),_vm._v(\" \"),_c('div',{staticClass:\"note-body gl-pb-3 gl-pl-3\"},[_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.note.note_html),expression:\"note.note_html\"}],staticClass:\"note-text md\",class:{\n          'gl-block gl-overflow-hidden': _vm.hasMoreCommits,\n          'system-note-commit-list': _vm.hasMoreCommits && !_vm.expanded,\n        }}),_vm._v(\" \"),(_vm.hasMoreCommits)?_c('div',{staticClass:\"flex-list\"},[_c('div',{staticClass:\"flex-row gl-relative gl-z-2 gl-cursor-pointer gl-pl-4 gl-pt-3 gl-text-link hover:gl-underline\",on:{\"click\":function($event){_vm.expanded = !_vm.expanded}}},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":_vm.toggleIcon,\"size\":12}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.__('Toggle commit list')))])],1)]):_vm._e(),_vm._v(\" \"),(_vm.shouldShowDescriptionVersion)?_c('div',{staticClass:\"gl-relative !gl-pt-3\",attrs:{\"data-testid\":\"description-version\"}},[(_vm.isLoadingDescriptionVersion)?_c('pre',{staticClass:\"loading-state\"},[_vm._v(\"          \"),_c('gl-skeleton-loader'),_vm._v(\"\\n        \")],1):_c('pre',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.descriptionVersion),expression:\"descriptionVersion\"}],staticClass:\"gl-mt-3 gl-whitespace-pre-wrap gl-pr-7\"}),_vm._v(\" \"),(_vm.displayDeleteButton)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-absolute\",class:_vm.deleteButtonClasses,attrs:{\"title\":_vm.$options.i18n.deleteButtonLabel,\"aria-label\":_vm.$options.i18n.deleteButtonLabel,\"variant\":\"default\",\"category\":\"tertiary\",\"icon\":\"remove\",\"data-testid\":\"delete-description-version-button\"},on:{\"click\":_vm.deleteDescriptionVersion}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.lines.length && _vm.showLines)?_c('div',{staticClass:\"gl-my-2 gl-mr-5 gl-overflow-hidden gl-overflow-visible gl-rounded-small gl-border-1 gl-border-solid gl-border-strong gl-pl-0\"},[_c('table',{staticClass:\"code js-syntax-highlight\",class:_vm.$options.userColorSchemeClass,attrs:{\"data-testid\":\"outdated-lines\"}},_vm._m(0),0)]):(_vm.showLines)?_c('div',{staticClass:\"gl-mt-4\"},[_c('gl-skeleton-loader')],1):_vm._e()])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _vm._l((_vm.lines),function(line){return _c('tr',{key:line.line_code,staticClass:\"line_holder\"},[_c('td',{staticClass:\"diff-line-num old_line !gl-rounded-none !gl-border-0 !gl-border-b-0 !gl-border-t-0\",class:line.type},[_vm._v(\"\\n              \"+_vm._s(line.old_line)+\"\\n            \")]),_vm._v(\" \"),_c('td',{staticClass:\"diff-line-num new_line !gl-border-b-0 !gl-border-t-0\",class:line.type},[_vm._v(\"\\n              \"+_vm._s(line.new_line)+\"\\n            \")]),_vm._v(\" \"),_c('td',{staticClass:\"line_content !gl-table-cell !gl-rounded-none !gl-border-0\",class:line.type,domProps:{\"innerHTML\":_vm._s(line.rich_text /* eslint-disable-line vue/no-v-html */)}})])})\n}]\n\nexport { render, staticRenderFns }","export default {\n  data() {\n    return {\n      isDescriptionVersionExpanded: false,\n      deleteInProgress: false,\n    };\n  },\n  computed: {\n    canSeeDescriptionVersion() {\n      return Boolean(\n        this.note.description_diff_path &&\n          this.note.description_version_id &&\n          !this.note.description_version_deleted,\n      );\n    },\n    displayDeleteButton() {\n      return (\n        this.note.can_delete_description_version &&\n        !this.deleteInProgress &&\n        !this.note.description_version_deleted\n      );\n    },\n    shouldShowDescriptionVersion() {\n      return this.canSeeDescriptionVersion && this.isDescriptionVersionExpanded;\n    },\n    descriptionVersionToggleIcon() {\n      return this.isDescriptionVersionExpanded ? 'chevron-up' : 'chevron-down';\n    },\n  },\n  methods: {\n    toggleDescriptionVersion() {\n      this.isDescriptionVersionExpanded = !this.isDescriptionVersionExpanded;\n      const versionId = this.note.description_version_id;\n\n      if (this.descriptionVersions?.[versionId]) {\n        return false;\n      }\n\n      const endpoint = this.note.description_diff_path;\n      const startingVersion = this.note.start_description_version_id;\n\n      return this.fetchDescriptionVersion({ endpoint, startingVersion, versionId });\n    },\n    deleteDescriptionVersion() {\n      const endpoint = this.note.delete_description_version_path;\n      const startingVersion = this.note.start_description_version_id;\n      const versionId = this.note.description_version_id;\n      this.deleteInProgress = true;\n      return this.softDeleteDescriptionVersion({ endpoint, startingVersion, versionId }).catch(\n        () => {\n          this.deleteInProgress = false;\n        },\n      );\n    },\n  },\n};\n","<script>\n/**\n * Common component to render a system note, icon and user information.\n *\n * This component needs to be used with a vuex store.\n * That vuex store needs to have a `targetNoteHash` getter\n *\n * @example\n * <system-note\n *   :note=\"{\n *     id: String,\n *     author: Object,\n *     createdAt: String,\n *     note_html: String,\n *     system_note_icon_name: String\n *    }\"\n *   />\n */\nimport { GlButton, GlSkeletonLoader, GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport $ from 'jquery';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions, mapState } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport descriptionVersionHistoryMixin from 'ee_else_ce/notes/mixins/description_version_history';\nimport axios from '~/lib/utils/axios_utils';\nimport { __ } from '~/locale';\nimport NoteHeader from '~/notes/components/note_header.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport TimelineEntryItem from './timeline_entry_item.vue';\n\nconst MAX_VISIBLE_COMMIT_LIST_COUNT = 3;\nconst ICON_COLORS = {\n  check: 'system-note-icon-success',\n  'merge-request-close': 'system-note-icon-danger',\n  merge: 'system-note-icon-info',\n  'issue-close': 'system-note-icon-info',\n  issues: 'system-note-icon-success',\n  error: 'system-note-icon-danger',\n};\n\nexport default {\n  i18n: {\n    deleteButtonLabel: __('Remove description history'),\n  },\n  name: 'SystemNote',\n  components: {\n    GlIcon,\n    NoteHeader,\n    TimelineEntryItem,\n    GlButton,\n    GlSkeletonLoader,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    SafeHtml,\n  },\n  mixins: [descriptionVersionHistoryMixin, glFeatureFlagsMixin()],\n  props: {\n    note: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      expanded: false,\n      lines: [],\n      showLines: false,\n      loadingDiff: false,\n    };\n  },\n  computed: {\n    ...mapGetters(['targetNoteHash', 'descriptionVersions', 'getNoteableData']),\n    ...mapState(['isLoadingDescriptionVersion']),\n    noteAnchorId() {\n      return `note_${this.note.id}`;\n    },\n    isAllowedIcon() {\n      return Object.keys(ICON_COLORS).includes(this.note.system_note_icon_name);\n    },\n    isTargetNote() {\n      return this.targetNoteHash === this.noteAnchorId;\n    },\n    toggleIcon() {\n      return this.expanded ? 'chevron-up' : 'chevron-down';\n    },\n    // following 2 methods taken from code in `collapseLongCommitList` of notes.js:\n    actionTextHtml() {\n      return $(this.note.note_html).unwrap().html();\n    },\n    hasMoreCommits() {\n      return $(this.note.note_html).filter('ul').children().length > MAX_VISIBLE_COMMIT_LIST_COUNT;\n    },\n    descriptionVersion() {\n      return this.descriptionVersions[this.note.description_version_id];\n    },\n    singleLineDescription() {\n      return !this.descriptionVersion?.match(/\\n/g);\n    },\n    deleteButtonClasses() {\n      return this.singleLineDescription ? 'gl-top-5 gl-right-2 gl-mt-2' : 'gl-top-6 gl-right-3';\n    },\n    isMergeRequest() {\n      return this.getNoteableData.noteableType === 'MergeRequest';\n    },\n    iconBgClass() {\n      return ICON_COLORS[this.note.system_note_icon_name] || 'gl-bg-gray-50 gl-text-subtle';\n    },\n    systemNoteIconName() {\n      let icon = this.note.system_note_icon_name;\n      if (this.note.system_note_icon_name === 'issues') {\n        // eslint-disable-next-line @gitlab/require-i18n-strings\n        if (this.note.noteable_type === 'Issue') {\n          icon = 'issue-open-m';\n        } else if (this.note.noteable_type === 'MergeRequest') {\n          icon = 'merge-request';\n        }\n      }\n      return icon;\n    },\n  },\n  mounted() {\n    renderGFM(this.$refs['gfm-content']);\n  },\n  methods: {\n    ...mapActions(['fetchDescriptionVersion', 'softDeleteDescriptionVersion']),\n    async toggleDiff() {\n      this.showLines = !this.showLines;\n\n      if (!this.lines.length) {\n        this.loadingDiff = true;\n        const { data } = await axios.get(this.note.outdated_line_change_path);\n\n        this.lines = data.map((l) => ({\n          ...l,\n          rich_text: l.rich_text.replace(/^[+ -]/, ''),\n        }));\n        this.loadingDiff = false;\n      }\n    },\n  },\n  userColorSchemeClass: window.gon.user_color_scheme,\n};\n</script>\n\n<template>\n  <timeline-entry-item\n    :id=\"noteAnchorId\"\n    :class=\"{\n      target: isTargetNote,\n      'pr-0': shouldShowDescriptionVersion,\n    }\"\n    class=\"system-note\"\n  >\n    <div\n      :class=\"[\n        iconBgClass,\n        {\n          'system-note-icon -gl-mt-1 gl-ml-2 gl-h-6 gl-w-6': isAllowedIcon,\n          'system-note-dot -gl-top-1 gl-ml-4 gl-mt-3 gl-h-3 gl-w-3 gl-border-2 gl-border-solid gl-border-subtle gl-bg-gray-900':\n            !isAllowedIcon,\n        },\n      ]\"\n      class=\"gl-relative gl-float-left gl-flex gl-items-center gl-justify-center gl-rounded-full\"\n    >\n      <gl-icon\n        v-if=\"isAllowedIcon\"\n        :name=\"systemNoteIconName\"\n        :size=\"14\"\n        data-testid=\"timeline-icon\"\n      />\n    </div>\n    <div class=\"gl-ml-7\">\n      <div class=\"gl-flex gl-items-start gl-justify-between\">\n        <note-header\n          :author=\"note.author\"\n          :created-at=\"note.created_at\"\n          :note-id=\"note.id\"\n          :is-system-note=\"true\"\n          :is-imported=\"note.imported\"\n        >\n          <span ref=\"gfm-content\" v-safe-html=\"actionTextHtml\"></span>\n          <template\n            v-if=\"canSeeDescriptionVersion || note.outdated_line_change_path\"\n            #extra-controls\n          >\n            <gl-button\n              v-if=\"canSeeDescriptionVersion\"\n              variant=\"link\"\n              :icon=\"descriptionVersionToggleIcon\"\n              data-testid=\"compare-btn\"\n              class=\"gl-ml-3 gl-align-text-bottom !gl-text-sm\"\n              @click=\"toggleDescriptionVersion\"\n              >{{ __('Compare with previous version') }}</gl-button\n            >\n            <gl-button\n              v-if=\"note.outdated_line_change_path\"\n              :icon=\"showLines ? 'chevron-up' : 'chevron-down'\"\n              variant=\"link\"\n              data-testid=\"outdated-lines-change-btn\"\n              class=\"gl-align-text-bottom !gl-text-sm\"\n              @click=\"toggleDiff\"\n            >\n              {{ __('Compare changes') }}\n            </gl-button>\n          </template>\n        </note-header>\n      </div>\n      <div class=\"note-body gl-pb-3 gl-pl-3\">\n        <div\n          v-safe-html=\"note.note_html\"\n          :class=\"{\n            'gl-block gl-overflow-hidden': hasMoreCommits,\n            'system-note-commit-list': hasMoreCommits && !expanded,\n          }\"\n          class=\"note-text md\"\n        ></div>\n        <div v-if=\"hasMoreCommits\" class=\"flex-list\">\n          <div\n            class=\"flex-row gl-relative gl-z-2 gl-cursor-pointer gl-pl-4 gl-pt-3 gl-text-link hover:gl-underline\"\n            @click=\"expanded = !expanded\"\n          >\n            <gl-icon :name=\"toggleIcon\" :size=\"12\" class=\"gl-mr-2\" />\n            <span>{{ __('Toggle commit list') }}</span>\n          </div>\n        </div>\n        <div\n          v-if=\"shouldShowDescriptionVersion\"\n          class=\"gl-relative !gl-pt-3\"\n          data-testid=\"description-version\"\n        >\n          <pre v-if=\"isLoadingDescriptionVersion\" class=\"loading-state\">\n            <gl-skeleton-loader />\n          </pre>\n          <pre\n            v-else\n            v-safe-html=\"descriptionVersion\"\n            class=\"gl-mt-3 gl-whitespace-pre-wrap gl-pr-7\"\n          ></pre>\n          <gl-button\n            v-if=\"displayDeleteButton\"\n            v-gl-tooltip\n            :title=\"$options.i18n.deleteButtonLabel\"\n            :aria-label=\"$options.i18n.deleteButtonLabel\"\n            variant=\"default\"\n            category=\"tertiary\"\n            icon=\"remove\"\n            class=\"gl-absolute\"\n            :class=\"deleteButtonClasses\"\n            data-testid=\"delete-description-version-button\"\n            @click=\"deleteDescriptionVersion\"\n          />\n        </div>\n        <div\n          v-if=\"lines.length && showLines\"\n          class=\"gl-my-2 gl-mr-5 gl-overflow-hidden gl-overflow-visible gl-rounded-small gl-border-1 gl-border-solid gl-border-strong gl-pl-0\"\n        >\n          <table\n            :class=\"$options.userColorSchemeClass\"\n            class=\"code js-syntax-highlight\"\n            data-testid=\"outdated-lines\"\n          >\n            <tr v-for=\"line in lines\" v-once :key=\"line.line_code\" class=\"line_holder\">\n              <td\n                :class=\"line.type\"\n                class=\"diff-line-num old_line !gl-rounded-none !gl-border-0 !gl-border-b-0 !gl-border-t-0\"\n              >\n                {{ line.old_line }}\n              </td>\n              <td :class=\"line.type\" class=\"diff-line-num new_line !gl-border-b-0 !gl-border-t-0\">\n                {{ line.new_line }}\n              </td>\n              <td\n                :class=\"line.type\"\n                class=\"line_content !gl-table-cell !gl-rounded-none !gl-border-0\"\n                v-html=\"line.rich_text /* eslint-disable-line vue/no-v-html */\"\n              ></td>\n            </tr>\n          </table>\n        </div>\n        <div v-else-if=\"showLines\" class=\"gl-mt-4\">\n          <gl-skeleton-loader />\n        </div>\n      </div>\n    </div>\n  </timeline-entry-item>\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!./system_note.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!./system_note.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./system_note.vue?vue&type=template&id=61beba08\"\nimport script from \"./system_note.vue?vue&type=script&lang=js\"\nexport * from \"./system_note.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('RecycleScroller',_vm._g(_vm._b({ref:\"scroller\",attrs:{\"items\":_vm.itemsWithSize,\"min-item-size\":_vm.minItemSize,\"direction\":_vm.direction,\"key-field\":\"id\"},on:{\"resize\":_vm.onScrollerResize,\"visible\":_vm.onScrollerVisible},scopedSlots:_vm._u([{key:\"default\",fn:function({ item: itemWithSize, index, active }){return [_vm._t(\"default\",null,null,{\n        item: itemWithSize.item,\n        index,\n        active,\n        itemWithSize\n      })]}},{key:\"before\",fn:function(){return [_vm._t(\"before\")]},proxy:true},{key:\"after\",fn:function(){return [_vm._t(\"after\")]},proxy:true}],null,true)},'RecycleScroller',_vm.$attrs,false),_vm.listeners))\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!./DynamicScroller.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!./DynamicScroller.vue?vue&type=script&lang=js\"","<template>\n  <RecycleScroller\n    ref=\"scroller\"\n    :items=\"itemsWithSize\"\n    :min-item-size=\"minItemSize\"\n    :direction=\"direction\"\n    key-field=\"id\"\n    v-bind=\"$attrs\"\n    @resize=\"onScrollerResize\"\n    @visible=\"onScrollerVisible\"\n    v-on=\"listeners\"\n  >\n    <template #default=\"{ item: itemWithSize, index, active }\">\n      <slot\n        v-bind=\"{\n          item: itemWithSize.item,\n          index,\n          active,\n          itemWithSize\n        }\"\n      />\n    </template>\n    <template #before>\n      <slot name=\"before\" />\n    </template>\n    <template #after>\n      <slot name=\"after\" />\n    </template>\n  </RecycleScroller>\n</template>\n\n<script>\nimport RecycleScroller from './RecycleScroller.vue'\nimport { props, simpleArray } from './common'\n\nexport default {\n  name: 'DynamicScroller',\n\n  components: {\n    RecycleScroller,\n  },\n\n  inheritAttrs: false,\n\n  provide () {\n    if (typeof ResizeObserver !== 'undefined') {\n      this.$_resizeObserver = new ResizeObserver(entries => {\n        requestAnimationFrame(() => {\n          for (const entry of entries) {\n            if (entry.target) {\n              const event = new CustomEvent(\n                'resize',\n                {\n                  detail: {\n                    contentRect: entry.contentRect,\n                  },\n                },\n              )\n              entry.target.dispatchEvent(event)\n            }\n          }\n        });\n      })\n    }\n\n    return {\n      vscrollData: this.vscrollData,\n      vscrollParent: this,\n      vscrollResizeObserver: this.$_resizeObserver,\n    }\n  },\n\n  props: {\n    ...props,\n\n    minItemSize: {\n      type: [Number, String],\n      required: true,\n    },\n  },\n\n  data () {\n    return {\n      vscrollData: {\n        active: true,\n        sizes: {},\n        validSizes: {},\n        keyField: this.keyField,\n        simpleArray: false,\n      },\n    }\n  },\n\n  computed: {\n    simpleArray,\n\n    itemsWithSize () {\n      const result = []\n      const { items, keyField, simpleArray } = this\n      const sizes = this.vscrollData.sizes\n      for (let i = 0; i < items.length; i++) {\n        const item = items[i]\n        const id = simpleArray ? i : item[keyField]\n        let size = sizes[id]\n        if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n          size = 0\n        }\n        result.push({\n          item,\n          id,\n          size,\n        })\n      }\n      return result\n    },\n\n    listeners () {\n      const listeners = {}\n      for (const key in this.$listeners) {\n        if (key !== 'resize' && key !== 'visible') {\n          listeners[key] = this.$listeners[key]\n        }\n      }\n      return listeners\n    },\n  },\n\n  watch: {\n    items () {\n      this.forceUpdate(false)\n    },\n\n    simpleArray: {\n      handler (value) {\n        this.vscrollData.simpleArray = value\n      },\n      immediate: true,\n    },\n\n    direction (value) {\n      this.forceUpdate(true)\n    },\n  },\n\n  created () {\n    this.$_updates = []\n    this.$_undefinedSizes = 0\n    this.$_undefinedMap = {}\n  },\n\n  activated () {\n    this.vscrollData.active = true\n  },\n\n  deactivated () {\n    this.vscrollData.active = false\n  },\n\n  methods: {\n    onScrollerResize () {\n      const scroller = this.$refs.scroller\n      if (scroller) {\n        this.forceUpdate()\n      }\n      this.$emit('resize')\n    },\n\n    onScrollerVisible () {\n      this.$emit('vscroll:update', { force: false })\n      this.$emit('visible')\n    },\n\n    forceUpdate (clear = true) {\n      if (clear || this.simpleArray) {\n        this.vscrollData.validSizes = {}\n      }\n      this.$emit('vscroll:update', { force: true })\n    },\n\n    scrollToItem (index) {\n      const scroller = this.$refs.scroller\n      if (scroller) scroller.scrollToItem(index)\n    },\n\n    getItemSize (item, index = undefined) {\n      const id = this.simpleArray ? (index != null ? index : this.items.indexOf(item)) : item[this.keyField]\n      return this.vscrollData.sizes[id] || 0\n    },\n\n    scrollToBottom () {\n      if (this.$_scrollingToBottom) return\n      this.$_scrollingToBottom = true\n      const el = this.$el\n      // Item is inserted to the DOM\n      this.$nextTick(() => {\n        el.scrollTop = el.scrollHeight + 5000\n        // Item sizes are computed\n        const cb = () => {\n          el.scrollTop = el.scrollHeight + 5000\n          requestAnimationFrame(() => {\n            el.scrollTop = el.scrollHeight + 5000\n            if (this.$_undefinedSizes === 0) {\n              this.$_scrollingToBottom = false\n            } else {\n              requestAnimationFrame(cb)\n            }\n          })\n        }\n        requestAnimationFrame(cb)\n      })\n    },\n  },\n}\n</script>\n","import { render, staticRenderFns } from \"./DynamicScroller.vue?vue&type=template&id=7f2fdb9b\"\nimport script from \"./DynamicScroller.vue?vue&type=script&lang=js\"\nexport * from \"./DynamicScroller.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-form-input',{staticClass:\"reply-placeholder-input-field js-discussion-reply-field-placeholder\",attrs:{\"data-testid\":\"discussion-reply-tab\",\"placeholder\":_vm.placeholderText,\"aria-label\":_vm.labelText},on:{\"focus\":function($event){return _vm.$emit('focus')}}})\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!./discussion_reply_placeholder.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!./discussion_reply_placeholder.vue?vue&type=script&lang=js\"","<script>\nimport { GlFormInput } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  name: 'ReplyPlaceholder',\n  components: {\n    GlFormInput,\n  },\n  props: {\n    placeholderText: {\n      type: String,\n      required: false,\n      default: __('Reply…'),\n    },\n    labelText: {\n      type: String,\n      required: false,\n      default: __('Reply to comment'),\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-form-input\n    class=\"reply-placeholder-input-field js-discussion-reply-field-placeholder\"\n    data-testid=\"discussion-reply-tab\"\n    :placeholder=\"placeholderText\"\n    :aria-label=\"labelText\"\n    @focus=\"$emit('focus')\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./discussion_reply_placeholder.vue?vue&type=template&id=3b8db008\"\nimport script from \"./discussion_reply_placeholder.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_reply_placeholder.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    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"IterationFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Iteration\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startDate\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dueDate\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationCadence\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":130}};\n    doc.loc.source = {\"body\":\"fragment IterationFragment on Iteration {\\n  id\\n  title\\n  startDate\\n  dueDate\\n  webUrl\\n  iterationCadence {\\n    id\\n    title\\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[\"IterationFragment\"] = oneQuery(doc, \"IterationFragment\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityDismiss\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityDismissalReason\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityDismiss\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":439}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityDismiss(\\n  $id: VulnerabilityID!\\n  $comment: String\\n  $dismissalReason: VulnerabilityDismissalReason\\n) {\\n  vulnerabilityDismiss(input: { id: $id, comment: $comment, dismissalReason: $dismissalReason }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      dismissedAt\\n      dismissedBy {\\n        id\\n      }\\n      ...LastStateTransition\\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/last_state_transition.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[\"vulnerabilityDismiss\"] = oneQuery(doc, \"vulnerabilityDismiss\");\n        \n","import { normalizeHeaders } from './common_utils';\nimport { HTTP_STATUS_ABORTED, successCodes } from './http_status';\n\n/**\n * Polling utility for handling realtime updates.\n * Requirements: Promise based HTTP client\n *\n * Service for promise based http client and method need to be provided as props\n *\n * @example\n * new Poll({\n *   resource: resource,\n *   method: 'name',\n *   data: {page: 1, scope: 'all'}, // optional\n *   successCallback: () => {},\n *   errorCallback: () => {},\n *   notificationCallback: () => {}, // optional\n * }).makeRequest();\n *\n * Usage in pipelines table with visibility lib:\n *\n * const poll = new Poll({\n *  resource: this.service,\n *  method: 'getPipelines',\n *  data: { page: pageNumber, scope },\n *  successCallback: this.successCallback,\n *  errorCallback: this.errorCallback,\n *  notificationCallback: this.updateLoading,\n * });\n *\n * if (!Visibility.hidden()) {\n *  poll.makeRequest();\n *  }\n *\n * Visibility.change(() => {\n *  if (!Visibility.hidden()) {\n *   poll.restart();\n *  } else {\n *   poll.stop();\n *  }\n * });\n *\n * 1. Checks for response and headers before start polling\n * 2. Interval is provided by `Poll-Interval` header.\n * 3. If `Poll-Interval` is -1, we stop polling\n * 4. If HTTP response is 200, we poll.\n * 5. If HTTP response is different from 200, we stop polling.\n *\n * @example\n * // With initial delay (for, for example, reducing unnecessary requests)\n *\n * const poll = new Poll({\n *  resource: this.service,\n *  method: 'fetchNotes',\n *  successCallback: () => {},\n *  errorCallback: () => {},\n * });\n *\n * // Performs the first request in 2.5s and then uses the `Poll-Interval` header.\n * poll.makeDelayedRequest(2500);\n *\n */\nexport default class Poll {\n  constructor(options = {}) {\n    this.options = options;\n    this.options.data = options.data || {};\n    this.options.notificationCallback =\n      options.notificationCallback || function notificationCallback() {};\n\n    this.intervalHeader = 'POLL-INTERVAL';\n    this.timeoutID = null;\n    this.canPoll = true;\n  }\n\n  checkConditions(response) {\n    const headers = normalizeHeaders(response.headers);\n    const pollInterval = parseInt(headers[this.intervalHeader], 10);\n    if (pollInterval > 0 && successCodes.indexOf(response.status) !== -1 && this.canPoll) {\n      if (this.timeoutID) {\n        clearTimeout(this.timeoutID);\n      }\n\n      this.timeoutID = setTimeout(() => {\n        this.makeRequest();\n      }, pollInterval);\n    }\n    this.options.successCallback(response);\n  }\n\n  makeDelayedRequest(delay = 0) {\n    // So we don't make our specs artificially slower\n    this.timeoutID = setTimeout(\n      () => this.makeRequest(),\n      process.env.NODE_ENV !== 'test' ? delay : 1,\n    );\n  }\n\n  makeRequest() {\n    const { resource, method, data, errorCallback, notificationCallback } = this.options;\n\n    // It's called everytime a new request is made. Useful to update the status.\n    notificationCallback(true);\n\n    return resource[method](data)\n      .then((response) => {\n        this.checkConditions(response);\n        notificationCallback(false);\n      })\n      .catch((error) => {\n        notificationCallback(false);\n        if (error.status === HTTP_STATUS_ABORTED) {\n          return;\n        }\n        errorCallback(error);\n      });\n  }\n\n  /**\n   * Stops the polling recursive chain\n   * and guarantees if the timeout is already running it won't make another request by\n   * cancelling the previously established timeout.\n   */\n  stop() {\n    this.canPoll = false;\n    clearTimeout(this.timeoutID);\n  }\n\n  /**\n   * Enables polling after it has been stopped\n   */\n  enable(options) {\n    if (options && options.data) {\n      this.options.data = options.data;\n    }\n\n    this.canPoll = true;\n\n    if (options && options.response) {\n      this.checkConditions(options.response);\n    }\n  }\n\n  /**\n   * Restarts polling after it has been stopped and makes a request\n   */\n  restart(options) {\n    this.enable(options);\n    this.makeRequest();\n  }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(!_vm.isLoading)?_c('clipboard-button',_vm._b({attrs:{\"css-class\":\"sidebar-collapsed-icon js-dont-change-state !gl-rounded-none hover:gl-bg-transparent\"}},'clipboard-button',_vm.clipboardProps,false)):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed gl-flex gl-items-center gl-justify-between\"},[_c('span',{staticClass:\"gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap\",attrs:{\"title\":_vm.value}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.templateText},scopedSlots:_vm._u([{key:\"name\",fn:function(){return [_vm._v(_vm._s(_vm.name))]},proxy:true},{key:\"value\",fn:function(){return [_vm._v(_vm._s(_vm.value))]},proxy:true}])})],1),_vm._v(\" \"),(_vm.isLoading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"inline\":\"\",\"label\":_vm.loadingIconLabel}}):_c('clipboard-button',_vm._b({attrs:{\"size\":\"small\"}},'clipboard-button',_vm.clipboardProps,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!./copyable_field.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!./copyable_field.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon, GlSprintf } from '@gitlab/ui';\nimport { s__, __, sprintf } from '~/locale';\nimport ClipboardButton from '~/vue_shared/components/clipboard_button.vue';\n\n/**\n * Renders an inline field, whose value can be copied to the clipboard,\n * for use in the GitLab sidebar (issues, MRs, etc.).\n */\nexport default {\n  name: 'CopyableField',\n  components: {\n    ClipboardButton,\n    GlLoadingIcon,\n    GlSprintf,\n  },\n  props: {\n    value: {\n      type: String,\n      required: true,\n    },\n    name: {\n      type: String,\n      required: true,\n    },\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    clipboardTooltipText: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n  },\n  computed: {\n    clipboardProps() {\n      return {\n        category: 'tertiary',\n        tooltipBoundary: 'viewport',\n        tooltipPlacement: 'left',\n        text: this.value,\n        title:\n          this.clipboardTooltipText ||\n          sprintf(this.$options.i18n.clipboardTooltip, { name: this.name }),\n      };\n    },\n    loadingIconLabel() {\n      return sprintf(this.$options.i18n.loadingIconLabel, { name: this.name });\n    },\n  },\n  i18n: {\n    loadingIconLabel: __('Loading %{name}'),\n    clipboardTooltip: __('Copy %{name}'),\n    templateText: s__('Sidebar|%{name}: %{value}'),\n  },\n};\n</script>\n\n<template>\n  <div>\n    <clipboard-button\n      v-if=\"!isLoading\"\n      css-class=\"sidebar-collapsed-icon js-dont-change-state !gl-rounded-none hover:gl-bg-transparent\"\n      v-bind=\"clipboardProps\"\n    />\n\n    <div class=\"hide-collapsed gl-flex gl-items-center gl-justify-between\">\n      <span class=\"gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap\" :title=\"value\">\n        <gl-sprintf :message=\"$options.i18n.templateText\">\n          <template #name>{{ name }}</template>\n          <template #value>{{ value }}</template>\n        </gl-sprintf>\n      </span>\n\n      <gl-loading-icon v-if=\"isLoading\" size=\"sm\" inline :label=\"loadingIconLabel\" />\n      <clipboard-button v-else size=\"small\" v-bind=\"clipboardProps\" />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./copyable_field.vue?vue&type=template&id=05f82842\"\nimport script from \"./copyable_field.vue?vue&type=script&lang=js\"\nexport * from \"./copyable_field.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-button',_vm._b({class:{ 'btn-icon': _vm.isIconButton },attrs:{\"aria-label\":_vm.buttonLabel},on:{\"click\":function($event){return _vm.onToggle($event)}}},'gl-button',_vm.$attrs,false),[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.buttonLabel))]})],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!./todo_button.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!./todo_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { todoLabel, updateGlobalTodoCount } from '../../utils';\n\nexport default {\n  components: {\n    GlButton,\n  },\n  props: {\n    isTodo: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    isIconButton: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    buttonLabel() {\n      return todoLabel(this.isTodo);\n    },\n  },\n  methods: {\n    incrementGlobalTodoCount() {\n      updateGlobalTodoCount(1);\n    },\n    decrementGlobalTodoCount() {\n      updateGlobalTodoCount(-1);\n    },\n    onToggle(event) {\n      if (this.isTodo) {\n        this.decrementGlobalTodoCount();\n      } else {\n        this.incrementGlobalTodoCount();\n      }\n      this.$emit('click', event);\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button\n    v-bind=\"$attrs\"\n    :aria-label=\"buttonLabel\"\n    :class=\"{ 'btn-icon': isIconButton }\"\n    @click=\"onToggle($event)\"\n  >\n    <slot>{{ buttonLabel }}</slot>\n  </gl-button>\n</template>\n","import { render, staticRenderFns } from \"./todo_button.vue?vue&type=template&id=1d8cd8ea\"\nimport script from \"./todo_button.vue?vue&type=script&lang=js\"\nexport * from \"./todo_button.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","function getFileReviewsKey(mrPath) {\n  return `${mrPath}-file-reviews`;\n}\n\nexport function isFileReviewed(reviews, file) {\n  const fileReviews = reviews[file.file_identifier_hash];\n\n  return file?.id && fileReviews?.length ? new Set(fileReviews).has(file.id) : false;\n}\n\nexport function reviewStatuses(files, reviews) {\n  return files.reduce((flat, file) => {\n    return {\n      ...flat,\n      [file.id]: isFileReviewed(reviews, file),\n    };\n  }, {});\n}\n\nexport function getReviewsForMergeRequest(mrPath) {\n  const reviewsForMr = localStorage.getItem(getFileReviewsKey(mrPath));\n  let reviews = {};\n\n  if (reviewsForMr) {\n    try {\n      reviews = JSON.parse(reviewsForMr);\n    } catch (err) {\n      reviews = {};\n    }\n  }\n\n  return reviews;\n}\n\nexport function setReviewsForMergeRequest(mrPath, reviews) {\n  localStorage.setItem(getFileReviewsKey(mrPath), JSON.stringify(reviews));\n\n  return reviews;\n}\n\nexport function reviewable(file) {\n  return Boolean(file.id) && Boolean(file.file_identifier_hash);\n}\n\nexport function markFileReview(reviews, file, reviewed = true) {\n  const usableReviews = { ...reviews };\n  const updatedReviews = usableReviews;\n  let fileReviews;\n\n  if (reviewable(file)) {\n    fileReviews = new Set(usableReviews[file.file_identifier_hash] || []);\n\n    if (reviewed) {\n      fileReviews.add(file.id);\n      fileReviews.add(`hash:${file.file_hash}`);\n    } else {\n      fileReviews.delete(file.id);\n      fileReviews.delete(`hash:${file.file_hash}`);\n    }\n\n    updatedReviews[file.file_identifier_hash] = Array.from(fileReviews);\n\n    if (updatedReviews[file.file_identifier_hash].length === 0) {\n      delete updatedReviews[file.file_identifier_hash];\n    }\n  }\n\n  return updatedReviews;\n}\n","/* eslint-disable func-names, consistent-return, no-param-reassign */\n\nimport $ from 'jquery';\nimport { setCookie } from '~/lib/utils/common_utils';\nimport { hide, fixTitle } from '~/tooltips';\nimport { __ } from './locale';\n\nconst updateSidebarClasses = (layoutPage, rightSidebar, windowSize = window.innerWidth) => {\n  if (windowSize >= 992) {\n    layoutPage.classList.remove('right-sidebar-expanded', 'right-sidebar-collapsed');\n    rightSidebar.classList.remove('right-sidebar-collapsed');\n    rightSidebar.classList.add('right-sidebar-expanded');\n  } else {\n    layoutPage.classList.add('right-sidebar-collapsed', 'is-merge-request');\n    rightSidebar.classList.add('right-sidebar-collapsed');\n    rightSidebar.classList.remove('right-sidebar-expanded');\n  }\n};\n\nfunction Sidebar() {\n  this.sidebar = $('aside');\n\n  this.isMR = /projects:merge_requests:/.test(document.body.dataset.page);\n\n  this.removeListeners();\n  this.addEventListeners();\n}\n\nSidebar.initialize = function () {\n  if (!this.instance) {\n    this.instance = new Sidebar();\n  }\n};\n\nSidebar.prototype.removeListeners = function () {\n  this.sidebar.off('click', '.sidebar-collapsed-icon');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  this.sidebar.off('hidden.gl.dropdown');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  this.sidebar.off('hiddenGlDropdown');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  $('.dropdown').off('loading.gl.dropdown');\n  // eslint-disable-next-line @gitlab/no-global-event-off\n  $('.dropdown').off('loaded.gl.dropdown');\n  $(document).off('click', '.js-sidebar-toggle');\n};\n\nSidebar.prototype.addEventListeners = function () {\n  const $document = $(document);\n\n  this.sidebar.on('click', '.sidebar-collapsed-icon', this, this.sidebarCollapseClicked);\n  this.sidebar.on('hidden.gl.dropdown', this, this.onSidebarDropdownHidden);\n  this.sidebar.on('hiddenGlDropdown', this, this.onSidebarDropdownHidden);\n\n  $document.on('click', '.js-sidebar-toggle', this.sidebarToggleClicked);\n\n  const layoutPage = document.querySelector('.layout-page');\n  const rightSidebar = document.querySelector('.js-right-sidebar');\n\n  if (rightSidebar.classList.contains('right-sidebar-merge-requests')) {\n    updateSidebarClasses(layoutPage, rightSidebar);\n\n    const resizeHandler = new ResizeObserver((entries) => {\n      for (const entry of entries) {\n        updateSidebarClasses(layoutPage, rightSidebar, entry.contentRect.width);\n      }\n    });\n    resizeHandler.observe(document.querySelector('html'));\n  }\n};\n\nSidebar.prototype.sidebarToggleClicked = function (e, triggered) {\n  const $toggleButtons = $('.js-sidebar-toggle');\n  const $collapseIcon = $('.js-sidebar-collapse');\n  const $expandIcon = $('.js-sidebar-expand');\n  const $toggleContainer = $('.js-sidebar-toggle-container');\n  const isExpanded = $toggleContainer.data('is-expanded');\n  const tooltipLabel = isExpanded ? __('Expand sidebar') : __('Collapse sidebar');\n  e.preventDefault();\n\n  if (isExpanded) {\n    $toggleContainer.data('is-expanded', false);\n    $collapseIcon.addClass('hidden');\n    $expandIcon.removeClass('hidden');\n    $('aside.right-sidebar')\n      .removeClass('right-sidebar-expanded')\n      .addClass('right-sidebar-collapsed');\n\n    if (!this.isMR) {\n      $('.layout-page').removeClass('right-sidebar-expanded').addClass('right-sidebar-collapsed');\n    }\n  } else {\n    $toggleContainer.data('is-expanded', true);\n    $expandIcon.addClass('hidden');\n    $collapseIcon.removeClass('hidden');\n    $('aside.right-sidebar')\n      .removeClass('right-sidebar-collapsed')\n      .addClass('right-sidebar-expanded');\n\n    if (!this.isMR) {\n      $('.layout-page').removeClass('right-sidebar-collapsed').addClass('right-sidebar-expanded');\n    }\n  }\n\n  $toggleButtons.attr('data-original-title', tooltipLabel);\n  $toggleButtons.attr('title', tooltipLabel);\n  fixTitle($toggleButtons);\n  hide($toggleButtons);\n\n  if (!triggered) {\n    setCookie('collapsed_gutter', $('.right-sidebar').hasClass('right-sidebar-collapsed'));\n  }\n};\n\nSidebar.prototype.sidebarCollapseClicked = function (e) {\n  if ($(e.currentTarget).hasClass('js-dont-change-state')) {\n    return;\n  }\n  const sidebar = e.data;\n  e.preventDefault();\n  const $block = $(this).closest('.block');\n  return sidebar.openDropdown($block);\n};\n\nSidebar.prototype.openDropdown = function (blockOrName) {\n  const $block = typeof blockOrName === 'string' ? this.getBlock(blockOrName) : blockOrName;\n  if (!this.isOpen()) {\n    this.setCollapseAfterUpdate($block);\n    this.toggleSidebar('open');\n  }\n};\n\nSidebar.prototype.setCollapseAfterUpdate = function ($block) {\n  $block.addClass('collapse-after-update');\n  return $('.layout-page').addClass('with-overlay');\n};\n\nSidebar.prototype.onSidebarDropdownHidden = function (e) {\n  const sidebar = e.data;\n  e.preventDefault();\n  const $block = $(e.target).closest('.block');\n  return sidebar.sidebarDropdownHidden($block);\n};\n\nSidebar.prototype.sidebarDropdownHidden = function ($block) {\n  if ($block.hasClass('collapse-after-update')) {\n    $block.removeClass('collapse-after-update');\n    $('.layout-page').removeClass('with-overlay');\n    return this.toggleSidebar('hide');\n  }\n};\n\nSidebar.prototype.triggerOpenSidebar = function () {\n  return this.sidebar.find('.js-sidebar-toggle').trigger('click');\n};\n\nSidebar.prototype.toggleSidebar = function (action) {\n  if (action == null) {\n    action = 'toggle';\n  }\n  if (action === 'toggle') {\n    this.triggerOpenSidebar();\n  }\n  if (action === 'open') {\n    if (!this.isOpen()) {\n      this.triggerOpenSidebar();\n    }\n  }\n  if (action === 'hide') {\n    if (this.isOpen()) {\n      return this.triggerOpenSidebar();\n    }\n  }\n};\n\nSidebar.prototype.isOpen = function () {\n  return this.sidebar.is('.right-sidebar-expanded');\n};\n\nSidebar.prototype.getBlock = function (name) {\n  return this.sidebar.find(`.block.${name}`);\n};\n\nexport default Sidebar;\n","import { differenceWith, isEqual } from 'lodash';\nimport {\n  linesPadding,\n  numMarkerIdPrefix,\n  selectedInlineItemMark,\n  selectedInlineNumberMark,\n  selectedInlineSectionMarker,\n  textMarkerIdPrefix,\n  textSpanMarkerIdPrefix,\n  unselectedInlineNumberMark,\n} from 'ee/vue_shared/components/code_flow/utils/constants';\nimport { splitByLineBreaks } from '~/vue_shared/components/source_viewer/workers/highlight_utils';\n\n/**\n * Sorts and merges code blocks based on their start and end lines.\n * @param {Array} codeBlocks - An array of code block objects. Each object should have\n *                             the following properties:\n *                             - blockStartLine {number}: The starting line of the block\n *                             - blockEndLine {number}: The ending line of the block\n *                             - highlightInfo {Array}: An array of highlight information\n * @returns {Array} An array of sorted and merged code block objects. Each object in the\n *                  returned array will have the same structure as the input, but with\n *                  potentially merged blocks and combined highlightInfo.\n */\nexport const sortCodeBlocks = (codeBlocks) => {\n  // Ensure the method is pure by not mutating the original array\n  const updatedCodeBlock = [...codeBlocks].sort((a, b) => a.blockStartLine - b.blockStartLine);\n  return updatedCodeBlock.reduce(\n    (acc, block) => {\n      const lastMergedBlock = acc.at(-1);\n      if (block.blockStartLine <= lastMergedBlock.blockEndLine + 1) {\n        lastMergedBlock.blockEndLine = Math.max(lastMergedBlock.blockEndLine, block.blockEndLine);\n        const uniqueHighlightInfo = differenceWith(\n          block.highlightInfo,\n          lastMergedBlock.highlightInfo,\n          isEqual,\n        );\n        lastMergedBlock.highlightInfo.push(...uniqueHighlightInfo);\n      } else {\n        acc.push(block);\n      }\n      return acc;\n    },\n    [updatedCodeBlock[0]],\n  );\n};\n\n/**\n * Updates and merges code blocks, adding step numbers to highlight information.\n * @param {Array} codeBlocks - An array of code block objects. Each object should have a\n *                             'highlightInfo' property which is an array of highlight items.\n * @returns {Array} An array of updated code block objects. Each object in the returned array\n *                  will have the same structure as the input, but with merged blocks and\n *                  updated highlight information. If the input array is empty, an empty array\n *                  is returned.\n */\nexport const updateCodeBlocks = (codeBlocks) => {\n  if (!codeBlocks.length) {\n    return [];\n  }\n\n  const mergedBlocks = sortCodeBlocks(codeBlocks);\n\n  return mergedBlocks.map((block) => {\n    const updatedHighlightInfo = block.highlightInfo.map((item) => {\n      return {\n        ...item,\n        stepNumber: item.index + 1,\n      };\n    });\n\n    return {\n      ...block,\n      highlightInfo: updatedHighlightInfo,\n    };\n  });\n};\n\n/**\n * Creates a mapping of line numbers to highlight information based on code blocks.\n * @param {Array} codeBlocks - An array of code block objects. Each object should have\n *                             a 'highlightInfo' property, which is an array of objects\n *                             containing at least 'startLine' and optionally 'endLine'.\n * @returns {Object} An object mapping line numbers to their respective highlight information.\n *                   Each key is a line number, and each value is the highlight info object\n *                   that corresponds to that line.\n */\nexport const updateLinesToMarker = (codeBlocks) => {\n  return codeBlocks.reduce((acc, { highlightInfo }) => {\n    highlightInfo.forEach((item) => {\n      const endLine = item.endLine || item.startLine;\n      for (let k = item.startLine; k <= endLine; k += 1) {\n        (acc[k] || (acc[k] = [])).push(item);\n      }\n    });\n    return acc;\n  }, {});\n};\n\n/**\n * Normalizes code flow information from details.\n * @param {Object} details - The details object containing code flow items.\n * @returns {Object} Normalized code flows grouped by file name.\n */\nexport const normalizeCodeFlowsInfo = (details) => {\n  const firstCodeFlow = details?.items[0] || [];\n  return firstCodeFlow.reduce((acc, curr, index) => {\n    const { fileLocation } = curr;\n    const name = fileLocation.fileName;\n    if (!acc[name]) {\n      acc[name] = [];\n    }\n    acc[name].push({ index, fileLocation });\n    return acc;\n  }, {});\n};\n\n/**\n * Creates source block highlight information for a single block.\n * @param {number} index - The index of the block.\n * @param {Object} fileLocation - The file location information.\n * @param {string} rawTextBlob - The raw text content of the file.\n * @returns {Object} Source block highlight information.\n */\nexport const createSourceBlockHighlightInfo = (index, fileLocation, rawTextBlob) => {\n  const fileLen = splitByLineBreaks(rawTextBlob).length || 0;\n  const calcStartLine = fileLocation.lineStart - linesPadding;\n  const calcEndLine = (fileLocation.lineEnd || fileLocation.lineStart) + linesPadding;\n  return {\n    blockStartLine: calcStartLine > 0 ? calcStartLine : 1,\n    blockEndLine: calcEndLine > fileLen ? fileLen : calcEndLine,\n    highlightInfo: [\n      {\n        index,\n        startLine: fileLocation.lineStart,\n        endLine: fileLocation.lineEnd,\n      },\n    ],\n  };\n};\n\n/**\n * Creates highlight sources information from normalized code flows.\n * @param {Object} normalizedCodeFlows - Normalized code flows grouped by file name.\n * @param {Object} rawTextBlobs - Raw text content of files.\n * @returns {Object} Highlight sources information grouped by file name.\n */\nexport const createHighlightSourcesInfo = (normalizedCodeFlows, rawTextBlobs) => {\n  if (!normalizedCodeFlows || !rawTextBlobs) return {};\n  return Object.entries(normalizedCodeFlows).reduce((acc, [fileName, flows]) => {\n    acc[fileName] = flows.map(({ index, fileLocation }) =>\n      createSourceBlockHighlightInfo(index, fileLocation, rawTextBlobs[fileLocation.fileName]),\n    );\n    return acc;\n  }, {});\n};\n\n/**\n * Generates an array of CSS selector strings for identifying elements based on a prefix and step number.\n * @param {string} idPrefix - The prefix of the ID to match.\n * @param {number} selectedStepNumber - The selected step number to include in the selectors.\n * @returns {string[]} An array of three CSS selector strings.\n */\nconst getIdSelectors = (idPrefix, selectedStepNumber) => {\n  // Examples of ID: '<idPrefix>-<selectedStepNumber>>,2-L8', '<idPrefix>-<selectedStepNumber>-L7'\n  // Examples of ID: 'NUM-MARKER-1,2-L8', 'NUM-MARKER-3-L7'\n  // Examples of ID: 'TEXT-MARKER-1,2-L8', 'TEXT-MARKER-3-L7'\n  return [\n    `[id^=\"${idPrefix}\"][id*=\"${selectedStepNumber}-L\"]`,\n    `[id^=\"${idPrefix}\"][id*=\",${selectedStepNumber}-L\"]`,\n    `[id^=\"${idPrefix}\"][id*=\"${selectedStepNumber},\"][id*=\"-L\"]`,\n  ];\n};\n\n/**\n * Highlights the content of the selected markdown row and unhighlights others.\n * @param {number} selectedStepNumber - The step number corresponding to the row to highlight.\n */\nexport const markdownRowContent = (selectedStepNumber) => {\n  // Highlights the selected markdown row content\n  const textMarkerElements = document.querySelectorAll(`[id^=${textMarkerIdPrefix}]`);\n  textMarkerElements.forEach((el) => {\n    el.classList.remove(selectedInlineSectionMarker);\n  });\n\n  const textMarkerSelectors = getIdSelectors(textMarkerIdPrefix, selectedStepNumber);\n  const selector = textMarkerSelectors.join(', ');\n  const allTextMarkerElements = document.querySelectorAll(selector);\n  if (allTextMarkerElements.length > 0) {\n    allTextMarkerElements.forEach((el) => el.classList.add(selectedInlineSectionMarker));\n  }\n};\n\n/**\n * Highlights the selected step number in the markdown and unhighlights others.\n * @param {number} selectedStepNumber - The step number to highlight.\n */\nexport const markdownStepNumber = (selectedStepNumber) => {\n  // Highlights the step number in the markdown\n  const textMarkerElements = document.querySelectorAll(`[id^=${textMarkerIdPrefix}]`);\n  textMarkerElements.forEach((el) => {\n    const spans = el.querySelectorAll('span.inline-item-mark');\n    spans.forEach((span) => {\n      span.classList.remove(selectedInlineItemMark);\n    });\n  });\n  const textSpanMarkerElements = document.querySelectorAll(\n    `[id^=\"${textSpanMarkerIdPrefix}${selectedStepNumber}\"]`,\n  );\n  if (textSpanMarkerElements.length > 0) {\n    textSpanMarkerElements.forEach((el) => el.classList.add(selectedInlineItemMark, 'gs'));\n  }\n};\n\n/**\n * Highlights the selected row number in the markdown and unhighlights others.\n * @param {number} selectedStepNumber - The step number to highlight.\n */\nexport const markdownRowNumber = (selectedStepNumber) => {\n  // Highlights the row number in the markdown\n  const numMarkerElements = document.querySelectorAll(`[id^=\"${numMarkerIdPrefix}\"]`);\n  numMarkerElements.forEach((el) => {\n    el.classList.remove(selectedInlineNumberMark);\n    el.classList.add(unselectedInlineNumberMark);\n  });\n\n  const numMarkerSelectors = getIdSelectors(numMarkerIdPrefix, selectedStepNumber);\n  const selector = numMarkerSelectors.join(', ');\n  const allNumMarkerElements = document.querySelectorAll(selector);\n\n  if (allNumMarkerElements.length > 0) {\n    allNumMarkerElements.forEach((el) => {\n      el.classList.add(selectedInlineNumberMark);\n      el.classList.remove(unselectedInlineNumberMark);\n    });\n  }\n};\n\n/**\n * call the markdown functions when the step is selected\n * @param {Number} selectedStepNumber - The selected step number.\n */\nexport const markdownBlobData = (selectedStepNumber) => {\n  markdownRowContent(selectedStepNumber);\n  markdownStepNumber(selectedStepNumber);\n  markdownRowNumber(selectedStepNumber);\n};\n\n/**\n * Scrolls to a specific code flow element within a container.\n * @param {number} selectedStepNumber - The number of the step to scroll to.\n */\nexport const scrollToSpecificCodeFlow = (selectedStepNumber) => {\n  const element = document.querySelector(`[id^=${textMarkerIdPrefix}${selectedStepNumber}]`);\n  if (element) {\n    const subScroller = document.getElementById('code-flows-container');\n    const subScrollerRect = subScroller.getBoundingClientRect();\n    const elementRect = element.getBoundingClientRect();\n    const offsetTop = elementRect.top - subScrollerRect.top + subScroller.scrollTop;\n    subScroller.scrollTo({\n      top: offsetTop - subScroller.clientHeight / 2 + element.clientHeight / 2,\n      behavior: 'smooth',\n    });\n  }\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-participants',{staticClass:\"block participants\",attrs:{\"loading\":_vm.isLoading,\"participants\":_vm.participants,\"number-of-less-participants\":8,\"lazy\":false},on:{\"toggleSidebar\":function($event){return _vm.$emit('toggleSidebar')}}})\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!./sidebar_participants.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_participants.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { n__, sprintf } from '~/locale';\nimport Participants from './participants.vue';\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlIcon,\n    GlLoadingIcon,\n    Participants,\n  },\n  props: {\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    participants: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    numberOfLessParticipants: {\n      type: Number,\n      required: false,\n      default: 8,\n    },\n    showParticipantLabel: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    lazy: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    participantLabel() {\n      return sprintf(\n        n__('%{count} Participant', '%{count} Participants', this.participants.length),\n        { count: this.loading ? '' : this.participantCount },\n      );\n    },\n    participantCount() {\n      return this.participants.length;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div\n      v-if=\"showParticipantLabel\"\n      v-gl-tooltip.left.viewport\n      :title=\"participantLabel\"\n      class=\"sidebar-collapsed-icon\"\n      @click=\"$emit('toggleSidebar')\"\n    >\n      <gl-icon name=\"users\" />\n      <gl-loading-icon v-if=\"loading\" size=\"sm\" />\n      <span v-else class=\"gl-px-3 gl-pt-2 gl-text-sm\">\n        {{ participantCount }}\n      </span>\n    </div>\n    <participants\n      class=\"hide-collapsed\"\n      :lazy=\"lazy\"\n      :loading=\"loading\"\n      :number-of-less-participants=\"numberOfLessParticipants\"\n      :participants=\"participants\"\n      :show-participant-label=\"showParticipantLabel\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_participants.vue?vue&type=template&id=515b3a1e\"\nimport script from \"./sidebar_participants.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_participants.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',[(_vm.showParticipantLabel)?_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.participantLabel},on:{\"click\":function($event){return _vm.$emit('toggleSidebar')}}},[_c('gl-icon',{attrs:{\"name\":\"users\"}}),_vm._v(\" \"),(_vm.loading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}):_c('span',{staticClass:\"gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(\"\\n      \"+_vm._s(_vm.participantCount)+\"\\n    \")])],1):_vm._e(),_vm._v(\" \"),_c('participants',{staticClass:\"hide-collapsed\",attrs:{\"lazy\":_vm.lazy,\"loading\":_vm.loading,\"number-of-less-participants\":_vm.numberOfLessParticipants,\"participants\":_vm.participants,\"show-participant-label\":_vm.showParticipantLabel}})],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!./sidebar_participants_widget.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_participants_widget.vue?vue&type=script&lang=js\"","<script>\nimport { __ } from '~/locale';\nimport { participantsQueries } from '../../queries/constants';\nimport SidebarParticipants from './sidebar_participants.vue';\n\nexport default {\n  i18n: {\n    fetchingError: __('An error occurred while fetching participants'),\n  },\n  components: {\n    SidebarParticipants,\n  },\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      participants: [],\n    };\n  },\n  apollo: {\n    participants: {\n      query() {\n        return participantsQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: this.iid,\n        };\n      },\n      update(data) {\n        return data.workspace?.issuable?.participants.nodes || [];\n      },\n      skip() {\n        return !this.iid;\n      },\n      error(error) {\n        this.$emit('fetch-error', {\n          message: this.$options.i18n.fetchingError,\n          error,\n        });\n      },\n    },\n  },\n  computed: {\n    isLoading() {\n      return this.$apollo.queries.participants.loading;\n    },\n  },\n};\n</script>\n\n<template>\n  <sidebar-participants\n    :loading=\"isLoading\"\n    :participants=\"participants\"\n    :number-of-less-participants=\"8\"\n    :lazy=\"false\"\n    class=\"block participants\"\n    @toggleSidebar=\"$emit('toggleSidebar')\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./sidebar_participants_widget.vue?vue&type=template&id=a1edfb52\"\nimport script from \"./sidebar_participants_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_participants_widget.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.componentType,{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],tag:\"component\",staticClass:\"ci-icon gl-inline-flex gl-items-center gl-text-sm\",class:`ci-icon-variant-${_vm.variant}`,attrs:{\"variant\":_vm.variant,\"title\":_vm.title,\"aria-label\":_vm.ariaLabel,\"href\":_vm.href,\"data-testid\":\"ci-icon\"},on:{\"click\":function($event){return _vm.$emit('ciStatusBadgeClick')}}},[_c('span',{staticClass:\"ci-icon-gl-icon-wrapper\"},[_c('gl-icon',{attrs:{\"name\":_vm.icon}})],1),(_vm.showStatusText)?_c('span',{staticClass:\"gl-ml-2 gl-mr-3 gl-self-center gl-whitespace-nowrap gl-leading-1\",attrs:{\"data-testid\":\"ci-icon-text\"}},[_vm._v(_vm._s(_vm.status.text))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ci_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport { sprintf, __ } from '~/locale';\n\n/**\n * Renders CI icon based on API response shared between all places where it is used.\n *\n * Receives status object containing:\n * status: {\n *   icon: \"status_running\" // used to render the icon and CSS class\n *   text: \"Running\",\n *   detailsPath: '/project1/jobs/1' // can also be details_path\n * }\n *\n * You may use ~/graphql_shared/fragments/ci_icon.fragment.graphql to fetch this\n * from the GraphQL API.\n *\n */\n\nexport default {\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    status: {\n      type: Object,\n      required: true,\n      validator(status) {\n        const { icon } = status;\n        return typeof icon === 'string' && icon.startsWith('status');\n      },\n    },\n    showStatusText: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showTooltip: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    useLink: {\n      type: Boolean,\n      default: true,\n      required: false,\n    },\n  },\n  computed: {\n    componentType() {\n      return this.href ? 'a' : 'span';\n    },\n    title() {\n      if (this.showTooltip) {\n        // show tooltip only when not showing text already\n        return !this.showStatusText ? this.status?.text : null;\n      }\n      return null;\n    },\n    ariaLabel() {\n      return sprintf(__('Status: %{status}'), { status: this.status?.text });\n    },\n    href() {\n      // href can come from GraphQL (camelCase) or REST API (snake_case)\n      if (this.useLink) {\n        return this.status.detailsPath || this.status.details_path;\n      }\n      return null;\n    },\n    icon() {\n      if (this.status.icon) {\n        return `${this.status.icon}_borderless`;\n      }\n      return null;\n    },\n    variant() {\n      switch (this.status.icon) {\n        case 'status_success':\n          return 'success';\n        case 'status_warning':\n        case 'status_pending':\n          return 'warning';\n        case 'status_failed':\n          return 'danger';\n        case 'status_running':\n          return 'info';\n        // default covers the styles for the remainder of CI\n        // statuses that are not explicitly stated here\n        default:\n          return 'neutral';\n      }\n    },\n  },\n};\n</script>\n<template>\n  <component\n    :is=\"componentType\"\n    v-gl-tooltip.viewport.left\n    class=\"ci-icon gl-inline-flex gl-items-center gl-text-sm\"\n    :class=\"`ci-icon-variant-${variant}`\"\n    :variant=\"variant\"\n    :title=\"title\"\n    :aria-label=\"ariaLabel\"\n    :href=\"href\"\n    data-testid=\"ci-icon\"\n    @click=\"$emit('ciStatusBadgeClick')\"\n  >\n    <span class=\"ci-icon-gl-icon-wrapper\"><gl-icon :name=\"icon\" /></span\n    ><span\n      v-if=\"showStatusText\"\n      class=\"gl-ml-2 gl-mr-3 gl-self-center gl-whitespace-nowrap gl-leading-1\"\n      data-testid=\"ci-icon-text\"\n      >{{ status.text }}</span\n    >\n  </component>\n</template>\n","import { render, staticRenderFns } from \"./ci_icon.vue?vue&type=template&id=884042fa\"\nimport script from \"./ci_icon.vue?vue&type=script&lang=js\"\nexport * from \"./ci_icon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlSearchboxByType',\n  components: {\n    GlClearIconButton,\n    GlIcon,\n    GlFormInput,\n    GlLoadingIcon\n  },\n  inheritAttrs: false,\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    borderless: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    clearButtonTitle: {\n      type: String,\n      required: false,\n      default: () => translate('GlSearchBoxByType.clearButtonTitle', 'Clear')\n    },\n    /**\n     * If provided and true, disables the input and controls\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Puts search box into loading state, rendering spinner\n     */\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Container for tooltip. Valid values: DOM node, selector string or `false` for default\n     */\n    tooltipContainer: {\n      required: false,\n      default: false,\n      validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n    }\n  },\n  computed: {\n    inputAttributes() {\n      const attributes = {\n        type: 'search',\n        placeholder: translate('GlSearchBoxByType.input.placeholder', 'Search'),\n        ...this.$attrs\n      };\n      if (!attributes['aria-label']) {\n        attributes['aria-label'] = attributes.placeholder;\n      }\n      return attributes;\n    },\n    hasValue() {\n      return Boolean(this.value.length);\n    },\n    inputListeners() {\n      return {\n        ...this.$listeners,\n        input: this.onInput,\n        focusin: this.onFocusin,\n        focusout: this.onFocusout\n      };\n    },\n    showClearButton() {\n      return this.hasValue && !this.disabled;\n    }\n  },\n  methods: {\n    isInputOrClearButton(element) {\n      var _this$$refs$input, _this$$refs$clearButt;\n      return element === ((_this$$refs$input = this.$refs.input) === null || _this$$refs$input === void 0 ? void 0 : _this$$refs$input.$el) || element === ((_this$$refs$clearButt = this.$refs.clearButton) === null || _this$$refs$clearButt === void 0 ? void 0 : _this$$refs$clearButt.$el);\n    },\n    clearInput() {\n      this.onInput('');\n      this.focusInput();\n    },\n    focusInput() {\n      this.$refs.input.$el.focus();\n    },\n    onInput(value) {\n      this.$emit('input', value);\n    },\n    onFocusout(event) {\n      const {\n        relatedTarget\n      } = event;\n      if (this.isInputOrClearButton(relatedTarget)) {\n        return;\n      }\n      this.$emit('focusout', event);\n    },\n    onFocusin(event) {\n      const {\n        relatedTarget\n      } = event;\n      if (this.isInputOrClearButton(relatedTarget)) {\n        return;\n      }\n      this.$emit('focusin', event);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-search-box-by-type\"},[_c('gl-icon',{staticClass:\"gl-search-box-by-type-search-icon\",attrs:{\"name\":\"search\",\"variant\":\"subtle\"}}),_vm._v(\" \"),_c('gl-form-input',_vm._g(_vm._b({ref:\"input\",class:{\n      'gl-search-box-by-type-input': !_vm.borderless,\n      'gl-search-box-by-type-input-borderless': _vm.borderless,\n    },attrs:{\"value\":_vm.value,\"disabled\":_vm.disabled}},'gl-form-input',_vm.inputAttributes,false),_vm.inputListeners)),_vm._v(\" \"),(_vm.isLoading || _vm.showClearButton)?_c('div',{staticClass:\"gl-search-box-by-type-right-icons\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-search-box-by-type-loading-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.showClearButton)?_c('gl-clear-icon-button',{ref:\"clearButton\",staticClass:\"gl-search-box-by-type-clear gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)},\"focusin\":_vm.onFocusin,\"focusout\":_vm.onFocusout}}):_vm._e()],1):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"sidebarSeverity\",staticClass:\"block\",attrs:{\"data-testid\":\"severity-block-container\"}},[_c('sidebar-editable-item',{ref:\"toggle\",attrs:{\"loading\":_vm.isUpdating,\"title\":_vm.$options.i18n.SEVERITY,\"can-edit\":_vm.canUpdate},on:{\"open\":_vm.showDropdown},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_c('div',{ref:\"severity\",staticClass:\"sidebar-collapsed-icon\"},[_c('severity-token',{attrs:{\"severity\":_vm.selectedItem,\"icon-size\":14,\"icon-only\":true}}),_vm._v(\" \"),_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.severity,\"boundary\":\"viewport\",\"placement\":\"left\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.SEVERITY_VALUE},scopedSlots:_vm._u([{key:\"severity\",fn:function(){return [_vm._v(\"\\n              \"+_vm._s(_vm.selectedItem.label)+\"\\n            \")]},proxy:true}])})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed\",attrs:{\"data-testid\":\"incident-severity\"}},[_c('severity-token',{attrs:{\"severity\":_vm.selectedItem}})],1)]},proxy:true},{key:\"default\",fn:function(){return [_c('gl-collapsible-listbox',{ref:\"dropdown\",staticClass:\"gl-mt-3\",attrs:{\"block\":\"\",\"header-text\":_vm.__('Assign severity'),\"toggle-text\":_vm.selectedItem.label,\"items\":_vm.dropdownItems,\"selected\":_vm.severity},on:{\"select\":_vm.updateSeverity},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('severity-token',{attrs:{\"severity\":item.severity}})]}}])})]},proxy:true}])})],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!./sidebar_severity_widget.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_severity_widget.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox, GlTooltip, GlSprintf } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { TYPE_INCIDENT } from '~/issues/constants';\nimport SidebarEditableItem from '~/sidebar/components/sidebar_editable_item.vue';\nimport updateIssuableSeverity from '../../queries/update_issuable_severity.mutation.graphql';\nimport { INCIDENT_SEVERITY, SEVERITY_I18N as I18N } from '../../constants';\nimport SeverityToken from './severity.vue';\n\nexport default {\n  i18n: I18N,\n  components: {\n    GlTooltip,\n    GlSprintf,\n    GlCollapsibleListbox,\n    SeverityToken,\n    SidebarEditableItem,\n  },\n  inject: ['canUpdate'],\n  props: {\n    projectPath: {\n      type: String,\n      required: true,\n    },\n    iid: {\n      type: String,\n      required: true,\n    },\n    initialSeverity: {\n      type: String,\n      required: false,\n      default: INCIDENT_SEVERITY.UNKNOWN.value,\n    },\n    issuableType: {\n      type: String,\n      required: false,\n      default: TYPE_INCIDENT,\n      validator: (value) => {\n        // currently severity is supported only for incidents, but this list might be extended\n        return [TYPE_INCIDENT].includes(value);\n      },\n    },\n  },\n  data() {\n    return {\n      isUpdating: false,\n      severity: this.initialSeverity,\n    };\n  },\n  computed: {\n    severitiesList() {\n      switch (this.issuableType) {\n        case TYPE_INCIDENT:\n          return Object.values(INCIDENT_SEVERITY);\n        default:\n          return [];\n      }\n    },\n    dropdownItems() {\n      return this.severitiesList.map((severity) => ({\n        text: severity.label,\n        value: severity.value,\n        severity,\n      }));\n    },\n    selectedItem() {\n      return this.severitiesList.find((severity) => severity.value === this.severity);\n    },\n  },\n  methods: {\n    updateSeverity(value) {\n      this.$refs.toggle.collapse();\n      this.isUpdating = true;\n      this.$apollo\n        .mutate({\n          mutation: updateIssuableSeverity,\n          variables: {\n            iid: this.iid,\n            severity: value,\n            projectPath: this.projectPath,\n          },\n        })\n        .then((resp) => {\n          const {\n            data: {\n              issueSetSeverity: {\n                errors = [],\n                issue: { severity },\n              },\n            },\n          } = resp;\n\n          if (errors[0]) {\n            throw errors[0];\n          }\n          this.severity = severity;\n        })\n        .catch(() =>\n          createAlert({\n            message: `${this.$options.i18n.UPDATE_SEVERITY_ERROR} ${this.$options.i18n.TRY_AGAIN}`,\n          }),\n        )\n        .finally(() => {\n          this.isUpdating = false;\n        });\n    },\n    showDropdown() {\n      this.$refs.dropdown.open();\n    },\n  },\n};\n</script>\n\n<template>\n  <div ref=\"sidebarSeverity\" class=\"block\" data-testid=\"severity-block-container\">\n    <sidebar-editable-item\n      ref=\"toggle\"\n      :loading=\"isUpdating\"\n      :title=\"$options.i18n.SEVERITY\"\n      :can-edit=\"canUpdate\"\n      @open=\"showDropdown\"\n    >\n      <template #collapsed>\n        <div ref=\"severity\" class=\"sidebar-collapsed-icon\">\n          <severity-token :severity=\"selectedItem\" :icon-size=\"14\" :icon-only=\"true\" />\n          <gl-tooltip :target=\"() => $refs.severity\" boundary=\"viewport\" placement=\"left\">\n            <gl-sprintf :message=\"$options.i18n.SEVERITY_VALUE\">\n              <template #severity>\n                {{ selectedItem.label }}\n              </template>\n            </gl-sprintf>\n          </gl-tooltip>\n        </div>\n        <div class=\"hide-collapsed\" data-testid=\"incident-severity\">\n          <severity-token :severity=\"selectedItem\" />\n        </div>\n      </template>\n\n      <template #default>\n        <gl-collapsible-listbox\n          ref=\"dropdown\"\n          class=\"gl-mt-3\"\n          block\n          :header-text=\"__('Assign severity')\"\n          :toggle-text=\"selectedItem.label\"\n          :items=\"dropdownItems\"\n          :selected=\"severity\"\n          @select=\"updateSeverity\"\n        >\n          <template #list-item=\"{ item }\">\n            <severity-token :severity=\"item.severity\" />\n          </template>\n        </gl-collapsible-listbox>\n      </template>\n    </sidebar-editable-item>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_severity_widget.vue?vue&type=template&id=292f05fb\"\nimport script from \"./sidebar_severity_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_severity_widget.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    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getBlobInfo\"},\"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\":\"filePath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"refType\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"RefType\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"shouldFetchRawText\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"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\":\"projectPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"repository\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"empty\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"paths\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"refType\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"refType\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"__typename\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"size\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rawSize\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rawTextBlob\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"shouldFetchRawText\"}}}]}]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"language\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blamePath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"editBlobPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"gitpodBlobUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ideEditPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"forkAndEditPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ideForkAndEditPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"codeNavigationPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"projectBlobPathRoot\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"forkAndViewPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentFormattedExternalUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentExternalUrlForRouteMap\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canModifyBlob\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canModifyBlobWithWebIde\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canCurrentUserPushToBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"archived\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"storedExternally\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalStorage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"externalStorageUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rawPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"replacePath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipelineEditorPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"simpleViewer\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooLarge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"renderError\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"richViewer\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooLarge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"renderError\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1393}};\n    doc.loc.source = {\"body\":\"query getBlobInfo(\\n  $projectPath: ID!\\n  $filePath: [String!]!\\n  $ref: String!\\n  $refType: RefType\\n  $shouldFetchRawText: Boolean!\\n) {\\n  project(fullPath: $projectPath) {\\n    __typename\\n    id\\n    repository {\\n      __typename\\n      empty\\n      blobs(paths: $filePath, ref: $ref, refType: $refType) {\\n        __typename\\n        nodes {\\n          __typename\\n          id\\n          webPath\\n          name\\n          size\\n          rawSize\\n          rawTextBlob @include(if: $shouldFetchRawText)\\n          fileType\\n          language\\n          path\\n          blamePath\\n          editBlobPath\\n          gitpodBlobUrl\\n          ideEditPath\\n          forkAndEditPath\\n          ideForkAndEditPath\\n          codeNavigationPath\\n          projectBlobPathRoot\\n          forkAndViewPath\\n          environmentFormattedExternalUrl\\n          environmentExternalUrlForRouteMap\\n          canModifyBlob\\n          canModifyBlobWithWebIde\\n          canCurrentUserPushToBranch\\n          archived\\n          storedExternally\\n          externalStorage\\n          externalStorageUrl\\n          rawPath\\n          replacePath\\n          pipelineEditorPath\\n          simpleViewer {\\n            fileType\\n            tooLarge\\n            type\\n            renderError\\n          }\\n          richViewer {\\n            fileType\\n            tooLarge\\n            type\\n            renderError\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getBlobInfo\"] = oneQuery(doc, \"getBlobInfo\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"projectEscalationPolicies\"},\"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\":\"title\"}},\"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\":\"attributes\"},\"name\":{\"kind\":\"Name\",\"value\":\"incidentManagementEscalationPolicies\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"EscalationPolicyFragment\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":304}};\n    doc.loc.source = {\"body\":\"#import \\\"./escalation_policy.fragment.graphql\\\"\\n\\nquery projectEscalationPolicies($fullPath: ID!, $title: String) {\\n  workspace: project(fullPath: $fullPath) {\\n    id\\n    attributes: incidentManagementEscalationPolicies(name: $title) {\\n      nodes {\\n        ...EscalationPolicyFragment\\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(\"./escalation_policy.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[\"projectEscalationPolicies\"] = oneQuery(doc, \"projectEscalationPolicies\");\n        \n","import uniqueId from 'lodash/uniqueId';\nimport { toggleLabelPosition } from '../../../utils/constants';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nlet uuid = 0;\nvar script = {\n  name: 'GlToggle',\n  components: {\n    GlIcon,\n    GlLoadingIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'change'\n  },\n  props: {\n    name: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The toggle's state.\n     * @model\n     */\n    value: {\n      type: Boolean,\n      required: false,\n      default: null\n    },\n    /**\n     * Whether the toggle should be disabled.\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Whether the toggle is in the loading state.\n     */\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The toggle's label.\n     */\n    label: {\n      type: String,\n      required: true\n    },\n    /**\n     * The toggle's description.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: undefined\n    },\n    /**\n     * A help text to be shown below the toggle.\n     */\n    help: {\n      type: String,\n      required: false,\n      default: undefined\n    },\n    /**\n     * The label's position relative to the toggle. If 'hidden', the toggle will add the .gl-sr-only class so the label is still accessible to screen readers.\n     */\n    labelPosition: {\n      type: String,\n      required: false,\n      default: 'top',\n      validator(position) {\n        return Object.values(toggleLabelPosition).includes(position);\n      }\n    }\n  },\n  data() {\n    return {\n      labelId: uniqueId('toggle-label-')\n    };\n  },\n  computed: {\n    shouldRenderDescription() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$scopedSlots.description || this.description) && this.isVerticalLayout;\n    },\n    shouldRenderHelp() {\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return Boolean(this.$slots.help || this.help) && this.isVerticalLayout;\n    },\n    toggleClasses() {\n      return [{\n        'gl-sr-only': this.labelPosition === 'hidden'\n      }, this.shouldRenderDescription ? 'gl-mb-2' : 'gl-mb-3'];\n    },\n    icon() {\n      return this.value ? 'check-xs' : 'close-xs';\n    },\n    helpId() {\n      return this.shouldRenderHelp ? `toggle-help-${this.uuid}` : undefined;\n    },\n    isChecked() {\n      return this.value ? 'true' : 'false';\n    },\n    isVerticalLayout() {\n      return this.labelPosition === 'top' || this.labelPosition === 'hidden';\n    }\n  },\n  beforeCreate() {\n    this.uuid = uuid;\n    uuid += 1;\n  },\n  methods: {\n    toggleFeature() {\n      if (!this.disabled) {\n        /**\n         * Emitted when the state changes.\n         *\n         * @event change\n         * @property {boolean} value Whether the toggle is enabled.\n         */\n        this.$emit('change', !this.value);\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-toggle-wrapper gl-mb-0 gl-flex\",class:{\n    'gl-flex-col': _vm.isVerticalLayout,\n    'gl-toggle-label-inline': !_vm.isVerticalLayout,\n    'is-disabled': _vm.disabled,\n  },attrs:{\"data-testid\":\"toggle-wrapper\"}},[_c('span',{staticClass:\"gl-toggle-label gl-shrink-0\",class:_vm.toggleClasses,attrs:{\"id\":_vm.labelId,\"data-testid\":\"toggle-label\"}},[_vm._t(\"label\",function(){return [_vm._v(_vm._s(_vm.label))]})],2),_vm._v(\" \"),(_vm.shouldRenderDescription)?_c('span',{staticClass:\"gl-description-label gl-mb-3\",attrs:{\"data-testid\":\"toggle-description\"}},[_vm._t(\"description\",function(){return [_vm._v(_vm._s(_vm.description))]})],2):_vm._e(),_vm._v(\" \"),(_vm.name)?_c('input',{attrs:{\"name\":_vm.name,\"type\":\"hidden\"},domProps:{\"value\":_vm.value}}):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"gl-toggle gl-shrink-0\",class:{\n      'is-checked': _vm.value,\n      'is-disabled': _vm.disabled || _vm.isLoading,\n    },attrs:{\"role\":\"switch\",\"aria-checked\":_vm.isChecked,\"aria-labelledby\":_vm.labelId,\"aria-describedby\":_vm.helpId,\"aria-disabled\":_vm.disabled,\"type\":\"button\",\"disabled\":_vm.disabled},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleFeature.apply(null, arguments)}}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"toggle-loading\",attrs:{\"color\":\"dark\"}}):_c('span',{staticClass:\"toggle-icon\"},[_c('gl-icon',{attrs:{\"name\":_vm.icon,\"size\":12}})],1)],1),_vm._v(\" \"),(_vm.shouldRenderHelp)?_c('span',{staticClass:\"gl-help-label\",attrs:{\"id\":_vm.helpId,\"data-testid\":\"toggle-help\"}},[_vm._t(\"help\",function(){return [_vm._v(_vm._s(_vm.help))]})],2):_vm._e()])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { delay } from 'lodash';\nimport api from '~/api';\nimport { DEFER_DURATION, TRACKING_CAP_KEY, TRACKING_CAP_LENGTH } from '../constants';\n\nfunction shouldDispatchEvent() {\n  const timestamp = parseInt(localStorage.getItem(TRACKING_CAP_KEY), 10);\n\n  if (Number.isNaN(timestamp)) {\n    return true;\n  }\n\n  return timestamp + TRACKING_CAP_LENGTH < Date.now();\n}\n\nexport function dispatchRedisHllUserEvent(event, deferDuration = 0) {\n  delay(() => api.trackRedisHllUserEvent(event), deferDuration);\n}\n\nexport function queueRedisHllEvents(events, { verifyCap = false } = {}) {\n  if (verifyCap) {\n    if (!shouldDispatchEvent()) {\n      return;\n    }\n\n    localStorage.setItem(TRACKING_CAP_KEY, Date.now());\n  }\n\n  events.forEach((event, index) => {\n    dispatchRedisHllUserEvent(event, DEFER_DURATION * (index + 1));\n  });\n}\n","var arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","import { labelColorOptions } from '../../../utils/constants';\nimport { colorFromBackground } from '../../../utils/utils';\nimport GlButton from '../button/button';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport GlTooltip from '../tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlLabel',\n  components: {\n    GlButton,\n    GlIcon,\n    GlLink,\n    GlTooltip\n  },\n  props: {\n    backgroundColor: {\n      type: String,\n      required: true,\n      validator: value => /^(#|rgb|rgba)/.test(value)\n    },\n    title: {\n      type: String,\n      required: true,\n      default: ''\n    },\n    description: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top'\n    },\n    target: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    scoped: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    showCloseButton: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      splitScopedLabelIndex: this.title.lastIndexOf('::')\n    };\n  },\n  computed: {\n    cssClasses() {\n      const textColorVariant = colorFromBackground(this.backgroundColor);\n      return {\n        'gl-label-scoped': this.scoped,\n        'gl-label-text-dark': textColorVariant === labelColorOptions.dark,\n        'gl-label-text-light': textColorVariant === labelColorOptions.light\n      };\n    },\n    cssVariables() {\n      return {\n        '--label-background-color': this.backgroundColor,\n        '--label-inset-border': `inset 0 0 0 2px ${this.backgroundColor}`\n      };\n    },\n    scopedKey() {\n      return this.scoped ? this.title.slice(0, this.splitScopedLabelIndex) : this.title;\n    },\n    scopedValue() {\n      return this.title.slice(this.splitScopedLabelIndex + 2);\n    },\n    labelComponent() {\n      return this.target ? GlLink : 'span';\n    },\n    tooltipTarget() {\n      return this.target ? this.$refs.labelTitle.$el : this.$refs.labelTitle;\n    }\n  },\n  watch: {\n    title() {\n      this.splitScopedLabelIndex = this.title.lastIndexOf('::');\n    }\n  },\n  methods: {\n    onClick(e) {\n      /**\n       * Emitted when label is clicked\n       *\n       * @event click\n       * @type {object}\n       */\n      this.$emit('click', e);\n    },\n    onClose(e) {\n      /**\n       * Emitted when x is clicked\n       *\n       * @event close\n       * @type {object}\n       */\n      this.$emit('close', e);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:\"gl-label\",class:_vm.cssClasses,style:(_vm.cssVariables),on:{\"click\":_vm.onClick}},'span',_vm.$attrs,false),[_c(_vm.labelComponent,{ref:\"labelTitle\",tag:\"component\",staticClass:\"gl-label-link\",class:{ 'gl-label-link-underline': _vm.target },attrs:{\"href\":_vm.target ? _vm.target : false,\"tabindex\":\"0\"}},[_c('span',{staticClass:\"gl-label-text\"},[_vm._v(\"\\n      \"+_vm._s(_vm.scopedKey)+\"\\n    \")]),_vm._v(\" \"),(_vm.scoped && _vm.scopedValue)?_c('span',{staticClass:\"gl-label-text-scoped\"},[_vm._v(\"\\n      \"+_vm._s(_vm.scopedValue)+\"\\n    \")]):_vm._e()]),_vm._v(\" \"),(_vm.showCloseButton)?_c('gl-button',{staticClass:\"gl-label-close !gl-p-0\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"variant\":\"reset\",\"aria-label\":\"Remove label\",\"disabled\":_vm.disabled},on:{\"click\":_vm.onClose}},[_c('gl-icon',{attrs:{\"name\":\"close-xs\",\"size\":12}})],1):_vm._e(),_vm._v(\" \"),(_vm.description)?_c('gl-tooltip',{attrs:{\"target\":function () { return _vm.tooltipTarget; },\"placement\":_vm.tooltipPlacement,\"boundary\":\"viewport\"}},[(_vm.scoped)?_c('span',{staticClass:\"gl-label-tooltip-title\"},[_vm._v(\"Scoped label\")]):_vm._e(),_vm._v(\"\\n    \"+_vm._s(_vm.description)+\"\\n  \")]):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { extend, isVue3 } from '../vue';\nimport { isUndefined, isArray } from '../utils/inspect';\n\n// Mixin to determine if an event listener has been registered\n\n// @vue/component\nconst hasListenerMixin = extend({\n  methods: {\n    hasListener(name) {\n      if (isVue3) {\n        return true;\n      }\n      // Only includes listeners registered via `v-on:name`\n      const $listeners = this.$listeners || {};\n      // Includes `v-on:name` and `this.$on('name')` registered listeners\n      // Note this property is not part of the public Vue API, but it is\n      // the only way to determine if a listener was added via `vm.$on`\n      const $events = this._events || {};\n      // Registered listeners in `this._events` are always an array,\n      // but might be zero length\n      return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n    }\n  }\n});\n\nexport { hasListenerMixin };\n","import { extend, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { setStyle, requestAF, reflow, removeStyle, getBCR } from '../../../utils/dom';\nimport { makeProp } from '../../../utils/props';\n\n// Generic collapse transion helper component\n\n// --- Helper methods ---\n\n// Transition event handler helpers\nconst onEnter = el => {\n  setStyle(el, 'height', 0);\n  // In a `requestAF()` for `appear` to work\n  requestAF(() => {\n    reflow(el);\n    setStyle(el, 'height', `${el.scrollHeight}px`);\n  });\n};\nconst onAfterEnter = el => {\n  removeStyle(el, 'height');\n};\nconst onLeave = el => {\n  setStyle(el, 'height', 'auto');\n  setStyle(el, 'display', 'block');\n  setStyle(el, 'height', `${getBCR(el).height}px`);\n  reflow(el);\n  setStyle(el, 'height', 0);\n};\nconst onAfterLeave = el => {\n  removeStyle(el, 'height');\n};\n\n// --- Constants ---\n\n// Default transition props\n// `appear` will use the enter classes\nconst TRANSITION_PROPS = {\n  css: true,\n  enterClass: '',\n  enterActiveClass: 'collapsing',\n  enterToClass: 'collapse show',\n  leaveClass: 'collapse show',\n  leaveActiveClass: 'collapsing',\n  leaveToClass: 'collapse'\n};\n\n// Default transition handlers\n// `appear` will use the enter handlers\nconst TRANSITION_HANDLERS = {\n  enter: onEnter,\n  afterEnter: onAfterEnter,\n  leave: onLeave,\n  afterLeave: onAfterLeave\n};\n\n// --- Main component ---\n\nconst props = {\n  // // If `true` (and `visible` is `true` on mount), animate initially visible\n  appear: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Main component ---\n\n// @vue/component\nconst BVCollapse = /*#__PURE__*/extend({\n  name: NAME_COLLAPSE_HELPER,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    return h('transition',\n    // We merge in the `appear` prop last\n    mergeData(data, {\n      props: TRANSITION_PROPS,\n      on: TRANSITION_HANDLERS\n    }, {\n      props\n    }),\n    // Note: `<transition>` supports a single root element only\n    children);\n  }\n});\n\nexport { BVCollapse, props };\n","import { extend } from '../../vue';\nimport { NAME_COLLAPSE } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_HIDE, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse';\n\n// --- Constants ---\nconst ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nconst ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nconst ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nconst ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nconst ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...modelProps,\n  // If `true` (and `visible` is `true` on mount), animate initially visible\n  accordion: makeProp(PROP_TYPE_STRING),\n  appear: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_COLLAPSE);\n\n// --- Main component ---\n\n// @vue/component\nconst BCollapse = /*#__PURE__*/extend({\n  name: NAME_COLLAPSE,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n  props,\n  data() {\n    return {\n      show: this[MODEL_PROP_NAME],\n      transitioning: false\n    };\n  },\n  computed: {\n    classObject() {\n      const {\n        transitioning\n      } = this;\n      return {\n        collapse: !transitioning,\n        show: this.show && !transitioning\n      };\n    },\n    slotScope() {\n      return {\n        visible: this.show,\n        close: () => {\n          this.show = false;\n        }\n      };\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue) {\n      if (newValue !== this.show) {\n        this.show = newValue;\n      }\n    },\n    show(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.emitState();\n      }\n    }\n  },\n  created() {\n    this.show = this[MODEL_PROP_NAME];\n  },\n  mounted() {\n    this.show = this[MODEL_PROP_NAME];\n    // Listen for toggle events to open/close us\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvent);\n    // Listen to other collapses for accordion events\n    this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvent);\n    this.$nextTick(() => {\n      this.emitState();\n    });\n    // Listen for \"Sync state\" requests from `v-b-toggle`\n    this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, id => {\n      if (id === this.safeId()) {\n        this.$nextTick(this.emitSync);\n      }\n    });\n  },\n  updated() {\n    // Emit a private event every time this component updates to ensure\n    // the toggle button is in sync with the collapse's state\n    // It is emitted regardless if the visible state changes\n    this.emitSync();\n  },\n  beforeDestroy() {\n    // Trigger state emit if needed\n    this.show = false;\n  },\n  methods: {\n    toggle() {\n      this.show = !this.show;\n    },\n    onEnter() {\n      this.transitioning = true;\n      // This should be moved out so we can add cancellable events\n      this.$emit(EVENT_NAME_SHOW);\n    },\n    onAfterEnter() {\n      this.transitioning = false;\n      this.$emit(EVENT_NAME_SHOWN);\n    },\n    onLeave() {\n      this.transitioning = true;\n      // This should be moved out so we can add cancellable events\n      this.$emit(EVENT_NAME_HIDE);\n    },\n    onAfterLeave() {\n      this.transitioning = false;\n      this.$emit(EVENT_NAME_HIDDEN);\n    },\n    emitState() {\n      const {\n        show,\n        accordion\n      } = this;\n      const id = this.safeId();\n      this.$emit(MODEL_EVENT_NAME, show);\n\n      // Let `v-b-toggle` know the state of this collapse\n      this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n      if (accordion && show) {\n        // Tell the other collapses in this accordion to close\n        this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n      }\n    },\n    emitSync() {\n      // Emit a private event every time this component updates to ensure\n      // the toggle button is in sync with the collapse's state\n      // It is emitted regardless if the visible state changes\n      this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n    },\n    handleToggleEvent(id) {\n      if (id === this.safeId()) {\n        this.toggle();\n      }\n    },\n    handleAccordionEvent(openedId, openAccordion) {\n      const {\n        accordion,\n        show\n      } = this;\n      if (!accordion || accordion !== openAccordion) {\n        return;\n      }\n      const isThis = openedId === this.safeId();\n      // Open this collapse if not shown or\n      // close this collapse if shown\n      if (isThis && !show || !isThis && show) {\n        this.toggle();\n      }\n    }\n  },\n  render(h) {\n    const {\n      appear\n    } = this;\n    const $content = h(this.tag, {\n      class: this.classObject,\n      directives: [{\n        name: 'show',\n        value: this.show\n      }],\n      attrs: {\n        id: this.safeId()\n      }\n    }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n    return h(BVCollapse, {\n      props: {\n        appear\n      },\n      on: {\n        enter: this.onEnter,\n        afterEnter: this.onAfterEnter,\n        leave: this.onLeave,\n        afterLeave: this.onAfterLeave\n      }\n    }, [$content]);\n  }\n});\n\nexport { BCollapse, props };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getParent\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WorkItemID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"workItem\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"widgets\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WorkItemWidgetHierarchy\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"parent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":224}};\n    doc.loc.source = {\"body\":\"query getParent($id: WorkItemID!) {\\n  workItem(id: $id) {\\n    id\\n    widgets {\\n      ... on WorkItemWidgetHierarchy {\\n        type\\n        parent {\\n          id\\n          title\\n          webUrl\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"getParent\"] = oneQuery(doc, \"getParent\");\n        \n","/**\n * This file is generated based on the contents of highlight.js/lib/languages to avoid\n * utilizing dynamic expressions within `import()` which were the source of some\n * confusion when attempting to produce deterministic webpack compilations across\n * multiple build environments.\n *\n * This list of highlight-able languages will need to be updated as new options are\n * introduced within the highlight.js dependency.\n */\n\nexport default {\n  '1c': () => import(/* webpackChunkName: 'hl-1c' */ 'highlight.js/lib/languages/1c'),\n  abnf: () => import(/* webpackChunkName: 'hl-abnf' */ 'highlight.js/lib/languages/abnf'),\n  accesslog: () =>\n    import(/* webpackChunkName: 'hl-accesslog' */ 'highlight.js/lib/languages/accesslog'),\n  actionscript: () =>\n    import(/* webpackChunkName: 'hl-actionscript' */ 'highlight.js/lib/languages/actionscript'),\n  ada: () => import(/* webpackChunkName: 'hl-ada' */ 'highlight.js/lib/languages/ada'),\n  angelscript: () =>\n    import(/* webpackChunkName: 'hl-angelscript' */ 'highlight.js/lib/languages/angelscript'),\n  apache: () => import(/* webpackChunkName: 'hl-apache' */ 'highlight.js/lib/languages/apache'),\n  applescript: () =>\n    import(/* webpackChunkName: 'hl-applescript' */ 'highlight.js/lib/languages/applescript'),\n  arcade: () => import(/* webpackChunkName: 'hl-arcade' */ 'highlight.js/lib/languages/arcade'),\n  arduino: () => import(/* webpackChunkName: 'hl-arduino' */ 'highlight.js/lib/languages/arduino'),\n  armasm: () => import(/* webpackChunkName: 'hl-armasm' */ 'highlight.js/lib/languages/armasm'),\n  asciidoc: () =>\n    import(/* webpackChunkName: 'hl-asciidoc' */ 'highlight.js/lib/languages/asciidoc'),\n  aspectj: () => import(/* webpackChunkName: 'hl-aspectj' */ 'highlight.js/lib/languages/aspectj'),\n  autohotkey: () =>\n    import(/* webpackChunkName: 'hl-autohotkey' */ 'highlight.js/lib/languages/autohotkey'),\n  autoit: () => import(/* webpackChunkName: 'hl-autoit' */ 'highlight.js/lib/languages/autoit'),\n  avrasm: () => import(/* webpackChunkName: 'hl-avrasm' */ 'highlight.js/lib/languages/avrasm'),\n  awk: () => import(/* webpackChunkName: 'hl-awk' */ 'highlight.js/lib/languages/awk'),\n  axapta: () => import(/* webpackChunkName: 'hl-axapta' */ 'highlight.js/lib/languages/axapta'),\n  bash: () => import(/* webpackChunkName: 'hl-bash' */ 'highlight.js/lib/languages/bash'),\n  basic: () => import(/* webpackChunkName: 'hl-basic' */ 'highlight.js/lib/languages/basic'),\n  bnf: () => import(/* webpackChunkName: 'hl-bnf' */ 'highlight.js/lib/languages/bnf'),\n  brainfuck: () =>\n    import(/* webpackChunkName: 'hl-brainfuck' */ 'highlight.js/lib/languages/brainfuck'),\n  c: () => import(/* webpackChunkName: 'hl-c' */ 'highlight.js/lib/languages/c'),\n  cal: () => import(/* webpackChunkName: 'hl-cal' */ 'highlight.js/lib/languages/cal'),\n  capnproto: () =>\n    import(/* webpackChunkName: 'hl-capnproto' */ 'highlight.js/lib/languages/capnproto'),\n  ceylon: () => import(/* webpackChunkName: 'hl-ceylon' */ 'highlight.js/lib/languages/ceylon'),\n  clean: () => import(/* webpackChunkName: 'hl-clean' */ 'highlight.js/lib/languages/clean'),\n  'clojure-repl': () =>\n    import(/* webpackChunkName: 'hl-clojure-repl' */ 'highlight.js/lib/languages/clojure-repl'),\n  clojure: () => import(/* webpackChunkName: 'hl-clojure' */ 'highlight.js/lib/languages/clojure'),\n  codeowners: () =>\n    import(\n      /* webpackChunkName: 'hl-codeowners' */ '~/vue_shared/components/source_viewer/languages/codeowners'\n    ),\n  cmake: () => import(/* webpackChunkName: 'hl-cmake' */ 'highlight.js/lib/languages/cmake'),\n  coffeescript: () =>\n    import(/* webpackChunkName: 'hl-coffeescript' */ 'highlight.js/lib/languages/coffeescript'),\n  coq: () => import(/* webpackChunkName: 'hl-coq' */ 'highlight.js/lib/languages/coq'),\n  cos: () => import(/* webpackChunkName: 'hl-cos' */ 'highlight.js/lib/languages/cos'),\n  cpp: () => import(/* webpackChunkName: 'hl-cpp' */ 'highlight.js/lib/languages/cpp'),\n  crmsh: () => import(/* webpackChunkName: 'hl-crmsh' */ 'highlight.js/lib/languages/crmsh'),\n  crystal: () => import(/* webpackChunkName: 'hl-crystal' */ 'highlight.js/lib/languages/crystal'),\n  csharp: () => import(/* webpackChunkName: 'hl-csharp' */ 'highlight.js/lib/languages/csharp'),\n  csp: () => import(/* webpackChunkName: 'hl-csp' */ 'highlight.js/lib/languages/csp'),\n  css: () => import(/* webpackChunkName: 'hl-css' */ 'highlight.js/lib/languages/css'),\n  d: () => import(/* webpackChunkName: 'hl-d' */ 'highlight.js/lib/languages/d'),\n  dart: () => import(/* webpackChunkName: 'hl-dart' */ 'highlight.js/lib/languages/dart'),\n  delphi: () => import(/* webpackChunkName: 'hl-delphi' */ 'highlight.js/lib/languages/delphi'),\n  diff: () => import(/* webpackChunkName: 'hl-diff' */ 'highlight.js/lib/languages/diff'),\n  django: () => import(/* webpackChunkName: 'hl-django' */ 'highlight.js/lib/languages/django'),\n  dns: () => import(/* webpackChunkName: 'hl-dns' */ 'highlight.js/lib/languages/dns'),\n  dockerfile: () =>\n    import(/* webpackChunkName: 'hl-dockerfile' */ 'highlight.js/lib/languages/dockerfile'),\n  dos: () => import(/* webpackChunkName: 'hl-dos' */ 'highlight.js/lib/languages/dos'),\n  dsconfig: () =>\n    import(/* webpackChunkName: 'hl-dsconfig' */ 'highlight.js/lib/languages/dsconfig'),\n  dts: () => import(/* webpackChunkName: 'hl-dts' */ 'highlight.js/lib/languages/dts'),\n  dust: () => import(/* webpackChunkName: 'hl-dust' */ 'highlight.js/lib/languages/dust'),\n  ebnf: () => import(/* webpackChunkName: 'hl-ebnf' */ 'highlight.js/lib/languages/ebnf'),\n  elixir: () => import(/* webpackChunkName: 'hl-elixir' */ 'highlight.js/lib/languages/elixir'),\n  elm: () => import(/* webpackChunkName: 'hl-elm' */ 'highlight.js/lib/languages/elm'),\n  erb: () => import(/* webpackChunkName: 'hl-erb' */ 'highlight.js/lib/languages/erb'),\n  'erlang-repl': () =>\n    import(/* webpackChunkName: 'hl-erlang-repl' */ 'highlight.js/lib/languages/erlang-repl'),\n  erlang: () => import(/* webpackChunkName: 'hl-erlang' */ 'highlight.js/lib/languages/erlang'),\n  excel: () => import(/* webpackChunkName: 'hl-excel' */ 'highlight.js/lib/languages/excel'),\n  fix: () => import(/* webpackChunkName: 'hl-fix' */ 'highlight.js/lib/languages/fix'),\n  flix: () => import(/* webpackChunkName: 'hl-flix' */ 'highlight.js/lib/languages/flix'),\n  fortran: () => import(/* webpackChunkName: 'hl-fortran' */ 'highlight.js/lib/languages/fortran'),\n  fsharp: () => import(/* webpackChunkName: 'hl-fsharp' */ 'highlight.js/lib/languages/fsharp'),\n  gams: () => import(/* webpackChunkName: 'hl-gams' */ 'highlight.js/lib/languages/gams'),\n  gauss: () => import(/* webpackChunkName: 'hl-gauss' */ 'highlight.js/lib/languages/gauss'),\n  gcode: () => import(/* webpackChunkName: 'hl-gcode' */ 'highlight.js/lib/languages/gcode'),\n  gherkin: () => import(/* webpackChunkName: 'hl-gherkin' */ 'highlight.js/lib/languages/gherkin'),\n  glsl: () => import(/* webpackChunkName: 'hl-glsl' */ 'highlight.js/lib/languages/glsl'),\n  gml: () => import(/* webpackChunkName: 'hl-gml' */ 'highlight.js/lib/languages/gml'),\n  go: () => import(/* webpackChunkName: 'hl-go' */ 'highlight.js/lib/languages/go'),\n  golo: () => import(/* webpackChunkName: 'hl-golo' */ 'highlight.js/lib/languages/golo'),\n  gradle: () => import(/* webpackChunkName: 'hl-gradle' */ 'highlight.js/lib/languages/gradle'),\n  groovy: () => import(/* webpackChunkName: 'hl-groovy' */ 'highlight.js/lib/languages/groovy'),\n  haml: () => import(/* webpackChunkName: 'hl-haml' */ 'highlight.js/lib/languages/haml'),\n  handlebars: () =>\n    import(/* webpackChunkName: 'hl-handlebars' */ 'highlight.js/lib/languages/handlebars'),\n  haskell: () => import(/* webpackChunkName: 'hl-haskell' */ 'highlight.js/lib/languages/haskell'),\n  haxe: () => import(/* webpackChunkName: 'hl-haxe' */ 'highlight.js/lib/languages/haxe'),\n  hsp: () => import(/* webpackChunkName: 'hl-hsp' */ 'highlight.js/lib/languages/hsp'),\n  http: () => import(/* webpackChunkName: 'hl-http' */ 'highlight.js/lib/languages/http'),\n  hy: () => import(/* webpackChunkName: 'hl-hy' */ 'highlight.js/lib/languages/hy'),\n  inform7: () => import(/* webpackChunkName: 'hl-inform7' */ 'highlight.js/lib/languages/inform7'),\n  ini: () => import(/* webpackChunkName: 'hl-ini' */ 'highlight.js/lib/languages/ini'),\n  irpf90: () => import(/* webpackChunkName: 'hl-irpf90' */ 'highlight.js/lib/languages/irpf90'),\n  isbl: () => import(/* webpackChunkName: 'hl-isbl' */ 'highlight.js/lib/languages/isbl'),\n  java: () => import(/* webpackChunkName: 'hl-java' */ 'highlight.js/lib/languages/java'),\n  javascript: () =>\n    import(/* webpackChunkName: 'hl-javascript' */ 'highlight.js/lib/languages/javascript'),\n  'jboss-cli': () =>\n    import(/* webpackChunkName: 'hl-jboss-cli' */ 'highlight.js/lib/languages/jboss-cli'),\n  json: () => import(/* webpackChunkName: 'hl-json' */ 'highlight.js/lib/languages/json'),\n  'julia-repl': () =>\n    import(/* webpackChunkName: 'hl-julia-repl' */ 'highlight.js/lib/languages/julia-repl'),\n  julia: () => import(/* webpackChunkName: 'hl-julia' */ 'highlight.js/lib/languages/julia'),\n  kotlin: () => import(/* webpackChunkName: 'hl-kotlin' */ 'highlight.js/lib/languages/kotlin'),\n  lasso: () => import(/* webpackChunkName: 'hl-lasso' */ 'highlight.js/lib/languages/lasso'),\n  latex: () => import(/* webpackChunkName: 'hl-latex' */ 'highlight.js/lib/languages/latex'),\n  ldif: () => import(/* webpackChunkName: 'hl-ldif' */ 'highlight.js/lib/languages/ldif'),\n  leaf: () => import(/* webpackChunkName: 'hl-leaf' */ 'highlight.js/lib/languages/leaf'),\n  less: () => import(/* webpackChunkName: 'hl-less' */ 'highlight.js/lib/languages/less'),\n  lisp: () => import(/* webpackChunkName: 'hl-lisp' */ 'highlight.js/lib/languages/lisp'),\n  livecodeserver: () =>\n    import(/* webpackChunkName: 'hl-livecodeserver' */ 'highlight.js/lib/languages/livecodeserver'),\n  livescript: () =>\n    import(/* webpackChunkName: 'hl-livescript' */ 'highlight.js/lib/languages/livescript'),\n  llvm: () => import(/* webpackChunkName: 'hl-llvm' */ 'highlight.js/lib/languages/llvm'),\n  lsl: () => import(/* webpackChunkName: 'hl-lsl' */ 'highlight.js/lib/languages/lsl'),\n  lua: () => import(/* webpackChunkName: 'hl-lua' */ 'highlight.js/lib/languages/lua'),\n  makefile: () =>\n    import(/* webpackChunkName: 'hl-makefile' */ 'highlight.js/lib/languages/makefile'),\n  markdown: () =>\n    import(/* webpackChunkName: 'hl-markdown' */ 'highlight.js/lib/languages/markdown'),\n  mathematica: () =>\n    import(/* webpackChunkName: 'hl-mathematica' */ 'highlight.js/lib/languages/mathematica'),\n  matlab: () => import(/* webpackChunkName: 'hl-matlab' */ 'highlight.js/lib/languages/matlab'),\n  maxima: () => import(/* webpackChunkName: 'hl-maxima' */ 'highlight.js/lib/languages/maxima'),\n  mel: () => import(/* webpackChunkName: 'hl-mel' */ 'highlight.js/lib/languages/mel'),\n  mercury: () => import(/* webpackChunkName: 'hl-mercury' */ 'highlight.js/lib/languages/mercury'),\n  mipsasm: () => import(/* webpackChunkName: 'hl-mipsasm' */ 'highlight.js/lib/languages/mipsasm'),\n  mizar: () => import(/* webpackChunkName: 'hl-mizar' */ 'highlight.js/lib/languages/mizar'),\n  mojolicious: () =>\n    import(/* webpackChunkName: 'hl-mojolicious' */ 'highlight.js/lib/languages/mojolicious'),\n  monkey: () => import(/* webpackChunkName: 'hl-monkey' */ 'highlight.js/lib/languages/monkey'),\n  moonscript: () =>\n    import(/* webpackChunkName: 'hl-moonscript' */ 'highlight.js/lib/languages/moonscript'),\n  n1ql: () => import(/* webpackChunkName: 'hl-n1ql' */ 'highlight.js/lib/languages/n1ql'),\n  nestedtext: () =>\n    import(/* webpackChunkName: 'hl-nestedtext' */ 'highlight.js/lib/languages/nestedtext'),\n  nginx: () => import(/* webpackChunkName: 'hl-nginx' */ 'highlight.js/lib/languages/nginx'),\n  nim: () => import(/* webpackChunkName: 'hl-nim' */ 'highlight.js/lib/languages/nim'),\n  nix: () => import(/* webpackChunkName: 'hl-nix' */ 'highlight.js/lib/languages/nix'),\n  'node-repl': () =>\n    import(/* webpackChunkName: 'hl-node-repl' */ 'highlight.js/lib/languages/node-repl'),\n  nsis: () => import(/* webpackChunkName: 'hl-nsis' */ 'highlight.js/lib/languages/nsis'),\n  objectivec: () =>\n    import(/* webpackChunkName: 'hl-objectivec' */ 'highlight.js/lib/languages/objectivec'),\n  ocaml: () => import(/* webpackChunkName: 'hl-ocaml' */ 'highlight.js/lib/languages/ocaml'),\n  openscad: () =>\n    import(/* webpackChunkName: 'hl-openscad' */ 'highlight.js/lib/languages/openscad'),\n  oxygene: () => import(/* webpackChunkName: 'hl-oxygene' */ 'highlight.js/lib/languages/oxygene'),\n  parser3: () => import(/* webpackChunkName: 'hl-parser3' */ 'highlight.js/lib/languages/parser3'),\n  perl: () => import(/* webpackChunkName: 'hl-perl' */ 'highlight.js/lib/languages/perl'),\n  pf: () => import(/* webpackChunkName: 'hl-pf' */ 'highlight.js/lib/languages/pf'),\n  pgsql: () => import(/* webpackChunkName: 'hl-pgsql' */ 'highlight.js/lib/languages/pgsql'),\n  'php-template': () =>\n    import(/* webpackChunkName: 'hl-php-template' */ 'highlight.js/lib/languages/php-template'),\n  php: () => import(/* webpackChunkName: 'hl-php' */ 'highlight.js/lib/languages/php'),\n  plaintext: () =>\n    import(/* webpackChunkName: 'hl-plaintext' */ 'highlight.js/lib/languages/plaintext'),\n  pony: () => import(/* webpackChunkName: 'hl-pony' */ 'highlight.js/lib/languages/pony'),\n  powershell: () =>\n    import(/* webpackChunkName: 'hl-powershell' */ 'highlight.js/lib/languages/powershell'),\n  processing: () =>\n    import(/* webpackChunkName: 'hl-processing' */ 'highlight.js/lib/languages/processing'),\n  profile: () => import(/* webpackChunkName: 'hl-profile' */ 'highlight.js/lib/languages/profile'),\n  prolog: () => import(/* webpackChunkName: 'hl-prolog' */ 'highlight.js/lib/languages/prolog'),\n  properties: () =>\n    import(/* webpackChunkName: 'hl-properties' */ 'highlight.js/lib/languages/properties'),\n  protobuf: () =>\n    import(/* webpackChunkName: 'hl-protobuf' */ 'highlight.js/lib/languages/protobuf'),\n  puppet: () => import(/* webpackChunkName: 'hl-puppet' */ 'highlight.js/lib/languages/puppet'),\n  purebasic: () =>\n    import(/* webpackChunkName: 'hl-purebasic' */ 'highlight.js/lib/languages/purebasic'),\n  'python-repl': () =>\n    import(/* webpackChunkName: 'hl-python-repl' */ 'highlight.js/lib/languages/python-repl'),\n  python: () => import(/* webpackChunkName: 'hl-python' */ 'highlight.js/lib/languages/python'),\n  q: () => import(/* webpackChunkName: 'hl-q' */ 'highlight.js/lib/languages/q'),\n  qml: () => import(/* webpackChunkName: 'hl-qml' */ 'highlight.js/lib/languages/qml'),\n  r: () => import(/* webpackChunkName: 'hl-r' */ 'highlight.js/lib/languages/r'),\n  reasonml: () =>\n    import(/* webpackChunkName: 'hl-reasonml' */ 'highlight.js/lib/languages/reasonml'),\n  rib: () => import(/* webpackChunkName: 'hl-rib' */ 'highlight.js/lib/languages/rib'),\n  roboconf: () =>\n    import(/* webpackChunkName: 'hl-roboconf' */ 'highlight.js/lib/languages/roboconf'),\n  routeros: () =>\n    import(/* webpackChunkName: 'hl-routeros' */ 'highlight.js/lib/languages/routeros'),\n  rsl: () => import(/* webpackChunkName: 'hl-rsl' */ 'highlight.js/lib/languages/rsl'),\n  ruby: () => import(/* webpackChunkName: 'hl-ruby' */ 'highlight.js/lib/languages/ruby'),\n  ruleslanguage: () =>\n    import(/* webpackChunkName: 'hl-ruleslanguage' */ 'highlight.js/lib/languages/ruleslanguage'),\n  rust: () => import(/* webpackChunkName: 'hl-rust' */ 'highlight.js/lib/languages/rust'),\n  sas: () => import(/* webpackChunkName: 'hl-sas' */ 'highlight.js/lib/languages/sas'),\n  scala: () => import(/* webpackChunkName: 'hl-scala' */ 'highlight.js/lib/languages/scala'),\n  scheme: () => import(/* webpackChunkName: 'hl-scheme' */ 'highlight.js/lib/languages/scheme'),\n  scilab: () => import(/* webpackChunkName: 'hl-scilab' */ 'highlight.js/lib/languages/scilab'),\n  scss: () => import(/* webpackChunkName: 'hl-scss' */ 'highlight.js/lib/languages/scss'),\n  shell: () => import(/* webpackChunkName: 'hl-shell' */ 'highlight.js/lib/languages/shell'),\n  smali: () => import(/* webpackChunkName: 'hl-smali' */ 'highlight.js/lib/languages/smali'),\n  smalltalk: () =>\n    import(/* webpackChunkName: 'hl-smalltalk' */ 'highlight.js/lib/languages/smalltalk'),\n  sml: () => import(/* webpackChunkName: 'hl-sml' */ 'highlight.js/lib/languages/sml'),\n  sqf: () => import(/* webpackChunkName: 'hl-sqf' */ 'highlight.js/lib/languages/sqf'),\n  sql: () => import(/* webpackChunkName: 'hl-sql' */ 'highlight.js/lib/languages/sql'),\n  stan: () => import(/* webpackChunkName: 'hl-stan' */ 'highlight.js/lib/languages/stan'),\n  stata: () => import(/* webpackChunkName: 'hl-stata' */ 'highlight.js/lib/languages/stata'),\n  step21: () => import(/* webpackChunkName: 'hl-step21' */ 'highlight.js/lib/languages/step21'),\n  stylus: () => import(/* webpackChunkName: 'hl-stylus' */ 'highlight.js/lib/languages/stylus'),\n  subunit: () => import(/* webpackChunkName: 'hl-subunit' */ 'highlight.js/lib/languages/subunit'),\n  svelte: () =>\n    import(\n      /* webpackChunkName: 'hl-svelte' */ '~/vue_shared/components/source_viewer/languages/svelte'\n    ),\n  hcl: () =>\n    import(\n      /* webpackChunkName: 'hl-hcl' */ '~/packages_and_registries/infrastructure_registry/languages/hcl'\n    ),\n  swift: () => import(/* webpackChunkName: 'hl-swift' */ 'highlight.js/lib/languages/swift'),\n  taggerscript: () =>\n    import(/* webpackChunkName: 'hl-taggerscript' */ 'highlight.js/lib/languages/taggerscript'),\n  tap: () => import(/* webpackChunkName: 'hl-tap' */ 'highlight.js/lib/languages/tap'),\n  tcl: () => import(/* webpackChunkName: 'hl-tcl' */ 'highlight.js/lib/languages/tcl'),\n  thrift: () => import(/* webpackChunkName: 'hl-thrift' */ 'highlight.js/lib/languages/thrift'),\n  tp: () => import(/* webpackChunkName: 'hl-tp' */ 'highlight.js/lib/languages/tp'),\n  twig: () => import(/* webpackChunkName: 'hl-twig' */ 'highlight.js/lib/languages/twig'),\n  typescript: () =>\n    import(/* webpackChunkName: 'hl-typescript' */ 'highlight.js/lib/languages/typescript'),\n  ts: () => import(/* webpackChunkName: 'hl-typescript' */ 'highlight.js/lib/languages/typescript'),\n  vala: () => import(/* webpackChunkName: 'hl-vala' */ 'highlight.js/lib/languages/vala'),\n  vbnet: () => import(/* webpackChunkName: 'hl-vbnet' */ 'highlight.js/lib/languages/vbnet'),\n  'vbscript-html': () =>\n    import(/* webpackChunkName: 'hl-vbscript-html' */ 'highlight.js/lib/languages/vbscript-html'),\n  vbscript: () =>\n    import(/* webpackChunkName: 'hl-vbscript' */ 'highlight.js/lib/languages/vbscript'),\n  verilog: () => import(/* webpackChunkName: 'hl-verilog' */ 'highlight.js/lib/languages/verilog'),\n  vhdl: () => import(/* webpackChunkName: 'hl-vhdl' */ 'highlight.js/lib/languages/vhdl'),\n  vim: () => import(/* webpackChunkName: 'hl-vim' */ 'highlight.js/lib/languages/vim'),\n  wasm: () => import(/* webpackChunkName: 'hl-wasm' */ 'highlight.js/lib/languages/wasm'),\n  wren: () => import(/* webpackChunkName: 'hl-wren' */ 'highlight.js/lib/languages/wren'),\n  x86asm: () => import(/* webpackChunkName: 'hl-x86asm' */ 'highlight.js/lib/languages/x86asm'),\n  xl: () => import(/* webpackChunkName: 'hl-xl' */ 'highlight.js/lib/languages/xl'),\n  xml: () => import(/* webpackChunkName: 'hl-xml' */ 'highlight.js/lib/languages/xml'),\n  xquery: () => import(/* webpackChunkName: 'hl-xquery' */ 'highlight.js/lib/languages/xquery'),\n  yaml: () => import(/* webpackChunkName: 'hl-yaml' */ 'highlight.js/lib/languages/yaml'),\n  zephir: () => import(/* webpackChunkName: 'hl-zephir' */ 'highlight.js/lib/languages/zephir'),\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"diff-stats\",class:{\n    'is-compare-versions-header gl-hidden lg:gl-inline-flex': _vm.isCompareVersionsHeader,\n    'gl-hidden sm:!gl-inline-flex': !_vm.isCompareVersionsHeader,\n  }},[(_vm.notDiffable)?_c('div',{class:_vm.fileStats.classes},[_vm._v(\"\\n    \"+_vm._s(_vm.fileStats.text)+\"\\n  \")]):_c('div',{staticClass:\"diff-stats-contents\"},[(_vm.hasDiffFiles)?_c('div',{staticClass:\"diff-stats-group\"},[_c('gl-icon',{staticClass:\"diff-stats-icon\",attrs:{\"name\":\"doc-code\",\"variant\":\"subtle\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-font-bold gl-text-subtle\"},[_vm._v(_vm._s(_vm.diffsCount)+\" \"+_vm._s(_vm.filesText))])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"diff-stats-group gl-flex gl-items-center gl-text-success\",class:{ 'gl-font-bold': _vm.isCompareVersionsHeader }},[_c('span',[_vm._v(\"+\")]),_vm._v(\" \"),_c('span',{attrs:{\"data-testid\":\"js-file-addition-line\"}},[_vm._v(_vm._s(_vm.addedLines))])]),_vm._v(\" \"),_c('div',{staticClass:\"diff-stats-group gl-flex gl-items-center gl-text-danger\",class:{ 'gl-font-bold': _vm.isCompareVersionsHeader }},[_c('span',[_vm._v(\"−\")]),_vm._v(\" \"),_c('span',{attrs:{\"data-testid\":\"js-file-deletion-line\"}},[_vm._v(_vm._s(_vm.removedLines))])])])])\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!./diff_stats.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!./diff_stats.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { isNumber } from 'lodash';\nimport { n__ } from '~/locale';\nimport { isNotDiffable, stats } from '../utils/diff_file';\n\nexport default {\n  components: { GlIcon },\n  props: {\n    diffFile: {\n      type: Object,\n      required: false,\n      default: () => null,\n    },\n    addedLines: {\n      type: Number,\n      required: true,\n    },\n    removedLines: {\n      type: Number,\n      required: true,\n    },\n    diffsCount: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    diffFilesLength() {\n      return parseInt(this.diffsCount, 10);\n    },\n    filesText() {\n      return n__('file', 'files', this.diffFilesLength);\n    },\n    isCompareVersionsHeader() {\n      return Boolean(this.diffsCount);\n    },\n    hasDiffFiles() {\n      return isNumber(this.diffFilesLength) && this.diffFilesLength >= 0;\n    },\n    notDiffable() {\n      return isNotDiffable(this.diffFile);\n    },\n    fileStats() {\n      return stats(this.diffFile);\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"diff-stats\"\n    :class=\"{\n      'is-compare-versions-header gl-hidden lg:gl-inline-flex': isCompareVersionsHeader,\n      'gl-hidden sm:!gl-inline-flex': !isCompareVersionsHeader,\n    }\"\n  >\n    <div v-if=\"notDiffable\" :class=\"fileStats.classes\">\n      {{ fileStats.text }}\n    </div>\n    <div v-else class=\"diff-stats-contents\">\n      <div v-if=\"hasDiffFiles\" class=\"diff-stats-group\">\n        <gl-icon name=\"doc-code\" class=\"diff-stats-icon\" variant=\"subtle\" />\n        <span class=\"gl-font-bold gl-text-subtle\">{{ diffsCount }} {{ filesText }}</span>\n      </div>\n      <div\n        class=\"diff-stats-group gl-flex gl-items-center gl-text-success\"\n        :class=\"{ 'gl-font-bold': isCompareVersionsHeader }\"\n      >\n        <span>+</span>\n        <span data-testid=\"js-file-addition-line\">{{ addedLines }}</span>\n      </div>\n      <div\n        class=\"diff-stats-group gl-flex gl-items-center gl-text-danger\"\n        :class=\"{ 'gl-font-bold': isCompareVersionsHeader }\"\n      >\n        <span>−</span>\n        <span data-testid=\"js-file-deletion-line\">{{ removedLines }}</span>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_stats.vue?vue&type=template&id=7e7e1790\"\nimport script from \"./diff_stats.vue?vue&type=script&lang=js\"\nexport * from \"./diff_stats.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 { highlightPlugins } from '~/highlight_js/plugins';\nimport { highlightContent } from '~/highlight_js';\nimport { LINES_PER_CHUNK, NEWLINE, ROUGE_TO_HLJS_LANGUAGE_MAP } from '../constants';\n\nexport const splitByLineBreaks = (content = '') => content.split(/\\r?\\n/);\n\n// eslint-disable-next-line max-params\nconst createChunk = (language, rawChunkLines, highlightedChunkLines = [], startingFrom = 0) => ({\n  highlightedContent: highlightedChunkLines.join(NEWLINE),\n  rawContent: rawChunkLines.join(NEWLINE),\n  totalLines: rawChunkLines.length,\n  startingFrom,\n  language,\n});\n\nconst splitIntoChunks = (language, rawContent, highlightedContent) => {\n  const result = [];\n  const splitRawContent = splitByLineBreaks(rawContent);\n  const splitHighlightedContent = splitByLineBreaks(highlightedContent);\n\n  for (let i = 0; i < splitRawContent.length; i += LINES_PER_CHUNK) {\n    const chunkIndex = Math.floor(i / LINES_PER_CHUNK);\n    const highlightedChunk = splitHighlightedContent.slice(i, i + LINES_PER_CHUNK);\n    const rawChunk = splitRawContent.slice(i, i + LINES_PER_CHUNK);\n    result[chunkIndex] = createChunk(language, rawChunk, highlightedChunk, i);\n  }\n\n  return result;\n};\n\nconst highlight = async (fileType, rawContent, lang) => {\n  const language = ROUGE_TO_HLJS_LANGUAGE_MAP[lang.toLowerCase()];\n  let highlightedChunks;\n\n  if (language) {\n    const plugins = highlightPlugins(fileType, rawContent, true);\n    const highlightedContent = await highlightContent(lang, rawContent, plugins);\n    highlightedChunks = splitIntoChunks(language, rawContent, highlightedContent);\n  }\n\n  return highlightedChunks;\n};\n\nexport { highlight, splitIntoChunks };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"data-testid\":\"assignees-widget\"}},[(_vm.shouldEnableRealtime)?_c('sidebar-assignees-realtime',{attrs:{\"issuable-type\":_vm.issuableType,\"issuable-id\":_vm.issuableId,\"query-variables\":_vm.queryVariables},on:{\"assigneesUpdated\":function($event){return _vm.$emit('assignees-updated', $event)}}}):_vm._e(),_vm._v(\" \"),_c('sidebar-editable-item',{ref:\"toggle\",attrs:{\"loading\":_vm.isSettingAssignees,\"initial-loading\":_vm.isAssigneesLoading,\"title\":_vm.assigneeText,\"edit-tooltip\":_vm.assigneeTooltip,\"edit-aria-label\":_vm.assigneeShortcutDescription,\"edit-keyshortcuts\":_vm.assigneeShortcutKey,\"is-dirty\":_vm.isDirty},on:{\"open\":_vm.showDropdown,\"close\":_vm.saveAssignees},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_vm._t(\"collapsed\",null,{\"users\":_vm.assignees}),_vm._v(\" \"),_c('issuable-assignees',{attrs:{\"users\":_vm.assignees,\"issuable-type\":_vm.issuableType,\"signed-in\":_vm.signedIn,\"editable\":_vm.editable},on:{\"assign-self\":_vm.assignSelf,\"expand-widget\":_vm.expandWidget}})]},proxy:true},{key:\"default\",fn:function({ edit }){return [_c('user-select',{ref:\"userSelect\",staticClass:\"dropdown-menu-user -gl-mt-3 gl-w-full\",attrs:{\"text\":_vm.$options.i18n.assignees,\"header-text\":_vm.$options.i18n.assignTo,\"iid\":_vm.iid,\"issuable-id\":_vm.issuableId,\"full-path\":_vm.fullPath,\"allow-multiple-assignees\":_vm.allowMultipleAssignees,\"current-user\":_vm.currentUser,\"issuable-type\":_vm.issuableType,\"is-editing\":edit,\"issuable-author\":_vm.issuableAuthor},on:{\"toggle\":_vm.collapseWidget,\"error\":_vm.showError,\"input\":_vm.setDirtyState},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [(_vm.directlyInviteMembers)?_c('gl-dropdown-item',[_c('sidebar-invite-members',{attrs:{\"issuable-type\":_vm.issuableType}})],1):_vm._e()]},proxy:true}],null,true),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})]}}],null,true)})],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!./assignees_realtime.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!./assignees_realtime.vue?vue&type=script&lang=js\"","<script>\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { assigneesQueries } from '../../queries/constants';\n\nexport default {\n  subscription: null,\n  name: 'AssigneesRealtime',\n  props: {\n    mediator: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n    },\n    queryVariables: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    issuableId() {\n      return this.issuable?.id;\n    },\n  },\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    issuable: {\n      query() {\n        return assigneesQueries[this.issuableType].query;\n      },\n      variables() {\n        return this.queryVariables;\n      },\n      update(data) {\n        return data.workspace?.issuable;\n      },\n      subscribeToMore: {\n        document() {\n          return assigneesQueries[this.issuableType].subscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return !this.issuableId;\n        },\n        updateQuery(\n          _,\n          {\n            subscriptionData: {\n              data: { issuableAssigneesUpdated },\n            },\n          },\n        ) {\n          if (issuableAssigneesUpdated) {\n            const {\n              id,\n              assignees: { nodes },\n            } = issuableAssigneesUpdated;\n            if (this.mediator) {\n              this.handleFetchResult(nodes);\n            }\n            this.$emit('assigneesUpdated', { id, assignees: nodes });\n          }\n        },\n      },\n    },\n  },\n  methods: {\n    handleFetchResult(nodes) {\n      const assignees = nodes.map((n) => ({\n        ...n,\n        avatar_url: n.avatarUrl,\n        id: getIdFromGraphQLId(n.id),\n      }));\n\n      this.mediator.store.setAssigneesFromRealtime(assignees);\n    },\n  },\n  render() {\n    return null;\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./assignees_realtime.vue?vue&type=script&lang=js\"\nexport * from \"./assignees_realtime.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!./issuable_assignees.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!./issuable_assignees.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { n__ } from '~/locale';\nimport UncollapsedAssigneeList from './uncollapsed_assignee_list.vue';\n\nexport default {\n  components: {\n    GlButton,\n    UncollapsedAssigneeList,\n  },\n  props: {\n    users: {\n      type: Array,\n      required: true,\n    },\n    issuableType: {\n      type: String,\n      required: false,\n      default: TYPE_ISSUE,\n    },\n    signedIn: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    editable: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    assigneesText() {\n      return n__('Assignee', '%d Assignees', this.users.length);\n    },\n    emptyUsers() {\n      return this.users.length === 0;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"issuable-assignees gl-flex gl-flex-col\">\n    <div\n      v-if=\"emptyUsers\"\n      class=\"hide-collapsed gl-flex gl-items-center gl-text-subtle\"\n      data-testid=\"none\"\n    >\n      <span> {{ __('None') }}</span>\n      <template v-if=\"signedIn && editable\">\n        <span class=\"gl-ml-2\">-</span>\n        <gl-button\n          data-testid=\"assign-yourself\"\n          category=\"tertiary\"\n          variant=\"link\"\n          class=\"gl-ml-2\"\n          @click=\"$emit('assign-self')\"\n        >\n          <span class=\"gl-text-subtle hover:gl-text-blue-800\">{{ __('assign yourself') }}</span>\n        </gl-button>\n      </template>\n    </div>\n    <uncollapsed-assignee-list\n      v-else\n      :users=\"users\"\n      :issuable-type=\"issuableType\"\n      class=\"hide-collapsed gl-pt-2\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./issuable_assignees.vue?vue&type=template&id=6fdfb102\"\nimport script from \"./issuable_assignees.vue?vue&type=script&lang=js\"\nexport * from \"./issuable_assignees.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:\"issuable-assignees gl-flex gl-flex-col\"},[(_vm.emptyUsers)?_c('div',{staticClass:\"hide-collapsed gl-flex gl-items-center gl-text-subtle\",attrs:{\"data-testid\":\"none\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.__('None')))]),_vm._v(\" \"),(_vm.signedIn && _vm.editable)?[_c('span',{staticClass:\"gl-ml-2\"},[_vm._v(\"-\")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-ml-2\",attrs:{\"data-testid\":\"assign-yourself\",\"category\":\"tertiary\",\"variant\":\"link\"},on:{\"click\":function($event){return _vm.$emit('assign-self')}}},[_c('span',{staticClass:\"gl-text-subtle hover:gl-text-blue-800\"},[_vm._v(_vm._s(_vm.__('assign yourself')))])])]:_vm._e()],2):_c('uncollapsed-assignee-list',{staticClass:\"hide-collapsed gl-pt-2\",attrs:{\"users\":_vm.users,\"issuable-type\":_vm.issuableType}})],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!./sidebar_invite_members.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_invite_members.vue?vue&type=script&lang=js\"","<script>\nimport InviteMembersTrigger from '~/invite_members/components/invite_members_trigger.vue';\nimport { __ } from '~/locale';\n\nexport default {\n  displayText: __('Invite members'),\n  components: {\n    InviteMembersTrigger,\n  },\n  props: {\n    issuableType: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    triggerSource() {\n      return `${this.issuableType}_assignee_dropdown`;\n    },\n  },\n};\n</script>\n\n<template>\n  <invite-members-trigger\n    trigger-element=\"anchor\"\n    :display-text=\"$options.displayText\"\n    :trigger-source=\"triggerSource\"\n    classes=\"gl-block gl-pl-0 hover:gl-no-underline hover:!gl-text-blue-800\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./sidebar_invite_members.vue?vue&type=template&id=3178adca\"\nimport script from \"./sidebar_invite_members.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_invite_members.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('invite-members-trigger',{attrs:{\"trigger-element\":\"anchor\",\"display-text\":_vm.$options.displayText,\"trigger-source\":_vm.triggerSource,\"classes\":\"gl-block gl-pl-0 hover:gl-no-underline hover:!gl-text-blue-800\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlDropdownItem } from '@gitlab/ui';\nimport Vue from 'vue';\nimport { createAlert } from '~/alert';\nimport { TYPE_ALERT, TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { __, n__ } from '~/locale';\nimport UserSelect from '~/vue_shared/components/user_select/user_select.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { keysFor, ISSUE_MR_CHANGE_ASSIGNEE } from '~/behaviors/shortcuts/keybindings';\nimport { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';\nimport { sanitize } from '~/lib/dompurify';\nimport { assigneesQueries } from '../../queries/constants';\nimport SidebarEditableItem from '../sidebar_editable_item.vue';\nimport SidebarAssigneesRealtime from './assignees_realtime.vue';\nimport IssuableAssignees from './issuable_assignees.vue';\nimport SidebarInviteMembers from './sidebar_invite_members.vue';\n\nexport const assigneesWidget = Vue.observable({\n  updateAssignees: null,\n});\n\nconst hideDropdownEvent = new CustomEvent('hiddenGlDropdown', {\n  bubbles: true,\n});\n\nexport default {\n  i18n: {\n    unassigned: __('Unassigned'),\n    assignee: __('Assignee'),\n    assignees: __('Assignees'),\n    assignTo: __('Select assignees'),\n  },\n  components: {\n    SidebarEditableItem,\n    IssuableAssignees,\n    GlDropdownItem,\n    SidebarInviteMembers,\n    SidebarAssigneesRealtime,\n    UserSelect,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  inject: {\n    directlyInviteMembers: {\n      default: false,\n    },\n  },\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    initialAssignees: {\n      type: Array,\n      required: false,\n      default: null,\n    },\n    issuableType: {\n      type: String,\n      required: false,\n      default: TYPE_ISSUE,\n      validator(value) {\n        return [TYPE_ISSUE, TYPE_MERGE_REQUEST, TYPE_ALERT].includes(value);\n      },\n    },\n    issuableId: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n    allowMultipleAssignees: {\n      type: Boolean,\n      required: true,\n    },\n    editable: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      issuable: {},\n      selected: [],\n      isSettingAssignees: false,\n      isDirty: false,\n      oldIid: null,\n      oldSelected: null,\n    };\n  },\n  apollo: {\n    issuable: {\n      query() {\n        return assigneesQueries[this.issuableType].query;\n      },\n      variables() {\n        return this.queryVariables;\n      },\n      update(data) {\n        return data.workspace?.issuable;\n      },\n      skip() {\n        return !this.iid;\n      },\n      result({ data }) {\n        if (!data) {\n          return;\n        }\n        const issuable = data.workspace?.issuable;\n        if (issuable) {\n          this.selected = issuable.assignees.nodes.map((node) => ({\n            ...node,\n            canMerge: node.mergeRequestInteraction?.canMerge || false,\n          }));\n        }\n      },\n      error() {\n        createAlert({ message: __('An error occurred while fetching participants.') });\n      },\n    },\n  },\n  computed: {\n    shouldEnableRealtime() {\n      // Note: Realtime is only available on issues right now, future support for MR wil be built later.\n      return this.issuableType === TYPE_ISSUE;\n    },\n    queryVariables() {\n      return {\n        iid: this.iid,\n        fullPath: this.fullPath,\n      };\n    },\n    assignees() {\n      const currentAssignees = this.$apollo.queries.issuable.loading\n        ? this.initialAssignees\n        : this.issuable?.assignees?.nodes;\n      return currentAssignees || [];\n    },\n    assigneeText() {\n      const items = this.$apollo.queries.issuable.loading ? this.initialAssignees : this.selected;\n      if (!items) {\n        return __('Assignee');\n      }\n      return n__('Assignee', '%d Assignees', items.length);\n    },\n    isAssigneesLoading() {\n      return !this.initialAssignees && this.$apollo.queries.issuable.loading;\n    },\n    currentUser() {\n      return {\n        username: gon?.current_username,\n        name: gon?.current_user_fullname,\n        avatarUrl: gon?.current_user_avatar_url,\n        canMerge: this.issuable?.userPermissions?.canMerge || false,\n      };\n    },\n    signedIn() {\n      return this.currentUser.username !== undefined;\n    },\n    issuableAuthor() {\n      return this.issuable?.author;\n    },\n    assigneeShortcutDescription() {\n      return shouldDisableShortcuts() ? null : ISSUE_MR_CHANGE_ASSIGNEE.description;\n    },\n    assigneeShortcutKey() {\n      return shouldDisableShortcuts() ? null : keysFor(ISSUE_MR_CHANGE_ASSIGNEE)[0];\n    },\n    assigneeTooltip() {\n      const description = this.assigneeShortcutDescription;\n      const key = this.assigneeShortcutKey;\n      return shouldDisableShortcuts()\n        ? null\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`);\n    },\n  },\n  watch: {\n    iid(_, oldIid) {\n      if (this.isDirty) {\n        this.oldIid = oldIid;\n        this.oldSelected = this.selected;\n      }\n    },\n  },\n  created() {\n    assigneesWidget.updateAssignees = this.updateAssignees;\n  },\n  destroyed() {\n    assigneesWidget.updateAssignees = null;\n  },\n  methods: {\n    updateAssignees(assigneeUsernames) {\n      this.isSettingAssignees = true;\n      return this.$apollo\n        .mutate({\n          mutation: assigneesQueries[this.issuableType].mutation,\n          variables: {\n            ...this.queryVariables,\n            assigneeUsernames,\n            iid: this.oldIid || this.iid,\n          },\n        })\n        .then(({ data }) => {\n          this.$emit('assignees-updated', {\n            id: data.issuableSetAssignees.issuable.id,\n            assignees: data.issuableSetAssignees.issuable.assignees.nodes,\n          });\n          return data;\n        })\n        .catch(() => {\n          createAlert({ message: __('An error occurred while updating assignees.') });\n        })\n        .finally(() => {\n          this.isSettingAssignees = false;\n        });\n    },\n    assignSelf() {\n      this.updateAssignees([this.currentUser.username]);\n    },\n    saveAssignees() {\n      if (this.isDirty) {\n        this.isDirty = false;\n        const usernames = this.oldSelected || this.selected;\n        this.updateAssignees(usernames.map(({ username }) => username));\n        this.oldIid = null;\n        this.oldSelected = null;\n      }\n      this.$el.dispatchEvent(hideDropdownEvent);\n    },\n    collapseWidget() {\n      this.$refs.toggle.collapse();\n    },\n    expandWidget() {\n      this.$refs.toggle.expand();\n    },\n    showDropdown() {\n      this.$refs.userSelect.showDropdown();\n    },\n    showError() {\n      createAlert({ message: __('An error occurred while fetching participants.') });\n    },\n    setDirtyState() {\n      this.isDirty = true;\n      if (!this.allowMultipleAssignees) {\n        this.collapseWidget();\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"assignees-widget\">\n    <sidebar-assignees-realtime\n      v-if=\"shouldEnableRealtime\"\n      :issuable-type=\"issuableType\"\n      :issuable-id=\"issuableId\"\n      :query-variables=\"queryVariables\"\n      @assigneesUpdated=\"$emit('assignees-updated', $event)\"\n    />\n    <sidebar-editable-item\n      ref=\"toggle\"\n      :loading=\"isSettingAssignees\"\n      :initial-loading=\"isAssigneesLoading\"\n      :title=\"assigneeText\"\n      :edit-tooltip=\"assigneeTooltip\"\n      :edit-aria-label=\"assigneeShortcutDescription\"\n      :edit-keyshortcuts=\"assigneeShortcutKey\"\n      :is-dirty=\"isDirty\"\n      @open=\"showDropdown\"\n      @close=\"saveAssignees\"\n    >\n      <template #collapsed>\n        <slot name=\"collapsed\" :users=\"assignees\"></slot>\n        <issuable-assignees\n          :users=\"assignees\"\n          :issuable-type=\"issuableType\"\n          :signed-in=\"signedIn\"\n          :editable=\"editable\"\n          @assign-self=\"assignSelf\"\n          @expand-widget=\"expandWidget\"\n        />\n      </template>\n      <template #default=\"{ edit }\">\n        <user-select\n          ref=\"userSelect\"\n          v-model=\"selected\"\n          :text=\"$options.i18n.assignees\"\n          :header-text=\"$options.i18n.assignTo\"\n          :iid=\"iid\"\n          :issuable-id=\"issuableId\"\n          :full-path=\"fullPath\"\n          :allow-multiple-assignees=\"allowMultipleAssignees\"\n          :current-user=\"currentUser\"\n          :issuable-type=\"issuableType\"\n          :is-editing=\"edit\"\n          :issuable-author=\"issuableAuthor\"\n          class=\"dropdown-menu-user -gl-mt-3 gl-w-full\"\n          @toggle=\"collapseWidget\"\n          @error=\"showError\"\n          @input=\"setDirtyState\"\n        >\n          <template #footer>\n            <gl-dropdown-item v-if=\"directlyInviteMembers\">\n              <sidebar-invite-members :issuable-type=\"issuableType\" />\n            </gl-dropdown-item> </template\n        ></user-select>\n      </template>\n    </sidebar-editable-item>\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_assignees_widget.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_assignees_widget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sidebar_assignees_widget.vue?vue&type=template&id=66077c2e\"\nimport script from \"./sidebar_assignees_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_assignees_widget.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","export const performanceMarkAndMeasure = ({ mark, measures = [] } = {}) => {\n  window.requestAnimationFrame(() => {\n    if (mark && !performance.getEntriesByName(mark).length) {\n      performance.mark(mark);\n    }\n    measures.forEach((measure) => {\n      performance.measure(measure.name, measure.start, measure.end);\n    });\n  });\n};\n","var baseIsRegExp = require('./_baseIsRegExp'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n  const index = v.indexOf('{');\n  return index > -1 && v.indexOf('}', index) > -1;\n};\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array<string>} `list` List of strings to match.\n * @param {String|Array<string>} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n  patterns = [].concat(patterns);\n  list = [].concat(list);\n\n  let omit = new Set();\n  let keep = new Set();\n  let items = new Set();\n  let negatives = 0;\n\n  let onResult = state => {\n    items.add(state.output);\n    if (options && options.onResult) {\n      options.onResult(state);\n    }\n  };\n\n  for (let i = 0; i < patterns.length; i++) {\n    let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n    let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n    if (negated) negatives++;\n\n    for (let item of list) {\n      let matched = isMatch(item, true);\n\n      let match = negated ? !matched.isMatch : matched.isMatch;\n      if (!match) continue;\n\n      if (negated) {\n        omit.add(matched.output);\n      } else {\n        omit.delete(matched.output);\n        keep.add(matched.output);\n      }\n    }\n  }\n\n  let result = negatives === patterns.length ? [...items] : [...keep];\n  let matches = result.filter(item => !omit.has(item));\n\n  if (options && matches.length === 0) {\n    if (options.failglob === true) {\n      throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n    }\n\n    if (options.nonull === true || options.nullglob === true) {\n      return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n    }\n  }\n\n  return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n  patterns = [].concat(patterns).map(String);\n  let result = new Set();\n  let items = [];\n\n  let onResult = state => {\n    if (options.onResult) options.onResult(state);\n    items.push(state.output);\n  };\n\n  let matches = new Set(micromatch(list, patterns, { ...options, onResult }));\n\n  for (let item of items) {\n    if (!matches.has(item)) {\n      result.add(item);\n    }\n  }\n  return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  if (Array.isArray(pattern)) {\n    return pattern.some(p => micromatch.contains(str, p, options));\n  }\n\n  if (typeof pattern === 'string') {\n    if (isEmptyString(str) || isEmptyString(pattern)) {\n      return false;\n    }\n\n    if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n      return true;\n    }\n  }\n\n  return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('Expected the first argument to be an object');\n  }\n  let keys = micromatch(Object.keys(obj), patterns, options);\n  let res = {};\n  for (let key of keys) res[key] = obj[key];\n  return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (items.some(item => isMatch(item))) {\n      return true;\n    }\n  }\n  return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (!items.every(item => isMatch(item))) {\n      return false;\n    }\n  }\n  return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n  let posix = utils.isWindows(options);\n  let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n  let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n  if (match) {\n    return match.slice(1).map(v => v === void 0 ? '' : v);\n  }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.parse(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n  let res = [];\n  for (let pattern of [].concat(patterns || [])) {\n    for (let str of braces(String(pattern), options)) {\n      res.push(picomatch.parse(str, options));\n    }\n  }\n  return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  if ((options && options.nobrace === true) || !hasBraces(pattern)) {\n    return [pattern];\n  }\n  return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-dropdown-widget',_vm._g(_vm._b({attrs:{\"icon\":_vm.icon,\"issuable-type\":_vm.issuableType,\"attr-workspace-path\":_vm.attrWorkspacePath,\"issuable-attribute\":_vm.issuableAttribute,\"iid\":_vm.iid,\"workspace-path\":_vm.workspacePath,\"show-work-item-epics\":_vm.showWorkItemEpics,\"is-epic-attribute\":_vm.isEpic,\"issuable-parent\":_vm.issuable},on:{\"updateAttribute\":_vm.updateAttribute},scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,name){return {key:name,fn:function(slotData){return [_vm._t(name,null,null,slotData)]}}})],null,true)},'sidebar-dropdown-widget',_vm.$attrs,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { __ } from '~/locale';\nimport SidebarDropdownWidget from '~/sidebar/components/sidebar_dropdown_widget.vue';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST, TYPE_EPIC } from '~/issues/constants';\nimport { WORK_ITEM_TYPE_VALUE_EPIC } from '~/work_items/constants';\nimport { getIdFromGraphQLId, convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_WORK_ITEM, TYPENAME_ISSUE } from '~/graphql_shared/constants';\nimport { createAlert } from '~/alert';\nimport {\n  dropdowni18nText,\n  IssuableAttributeType,\n  IssuableAttributeState,\n  LocalizedIssuableAttributeType,\n  IssuableAttributeTypeKeyMap,\n  SIDEBAR_ESCALATION_POLICY_TITLE,\n} from 'ee_else_ce/sidebar/constants';\nimport { issuableAttributesQueries } from '../queries/constants';\n\nconst widgetTitleText = {\n  [IssuableAttributeType.Milestone]: __('Milestone'),\n  [IssuableAttributeType.Iteration]: __('Iteration'),\n  [IssuableAttributeType.Epic]: __('Epic'),\n  [IssuableAttributeType.EscalationPolicy]: SIDEBAR_ESCALATION_POLICY_TITLE,\n  none: __('None'),\n  expired: __('(expired)'),\n};\n\nexport default {\n  components: { SidebarDropdownWidget },\n  provide: {\n    issuableAttributesQueries,\n    widgetTitleText,\n    issuableAttributesState: IssuableAttributeState,\n  },\n  inheritAttrs: false,\n  props: {\n    issuableAttribute: {\n      type: String,\n      required: true,\n      validator(value) {\n        return [\n          IssuableAttributeType.Milestone,\n          IssuableAttributeType.Iteration,\n          IssuableAttributeType.Epic,\n          IssuableAttributeType.EscalationPolicy,\n        ].includes(value);\n      },\n    },\n    workspacePath: {\n      required: true,\n      type: String,\n    },\n    iid: {\n      required: true,\n      type: String,\n    },\n    attrWorkspacePath: {\n      required: true,\n      type: String,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n      validator(value) {\n        return [TYPE_ISSUE, TYPE_MERGE_REQUEST].includes(value);\n      },\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    issueId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showWorkItemEpics: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    issuable: {\n      query() {\n        const { current } = this.issuableAttributeQuery;\n        const { query } = current[this.issuableType];\n\n        return query;\n      },\n      variables() {\n        return {\n          fullPath: this.workspacePath,\n          iid: this.iid,\n        };\n      },\n      update(data) {\n        return data.workspace?.issuable || {};\n      },\n      result({ data }) {\n        this.hasWorkItemParent = data?.workspace?.issuable?.hasParent && this.showWorkItemEpics;\n      },\n      error(error) {\n        createAlert({\n          message: this.i18n.currentFetchError,\n          captureError: true,\n          error,\n        });\n      },\n    },\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    workItem: {\n      query() {\n        return issuableAttributesQueries[IssuableAttributeType.Parent].current[this.issuableType]\n          .query;\n      },\n      variables() {\n        return {\n          id: this.issuableId,\n        };\n      },\n      update(data) {\n        return data.workspace?.workItems?.nodes[0] || {};\n      },\n      skip() {\n        return !this.hasWorkItemParent;\n      },\n      result({ data }) {\n        if (data?.workItem) {\n          this.setParentData(data.workItem);\n        }\n      },\n      error(error) {\n        createAlert({\n          message: this.i18n.currentFetchError,\n          captureError: true,\n          error,\n        });\n      },\n      subscribeToMore: {\n        document() {\n          return issuableAttributesQueries[IssuableAttributeType.Parent].subscription;\n        },\n        variables() {\n          return {\n            workItemId: convertToGraphQLId(TYPENAME_WORK_ITEM, getIdFromGraphQLId(this.issuableId)),\n          };\n        },\n        skip() {\n          return this.skipRealTimeWorkItemParentUpdates;\n        },\n        updateQuery(_, { subscriptionData }) {\n          if (subscriptionData.data?.workItem) {\n            this.setParentData(subscriptionData.data.workItem);\n          }\n        },\n      },\n    },\n  },\n  data() {\n    return {\n      hasWorkItemParent: false,\n    };\n  },\n  computed: {\n    issuableId() {\n      return this.issuableType === TYPE_ISSUE\n        ? convertToGraphQLId(TYPENAME_ISSUE, this.issueId)\n        : this.issueId;\n    },\n    issuableAttributeQuery() {\n      return issuableAttributesQueries[this.issuableAttribute];\n    },\n    skipRealTimeWorkItemParentUpdates() {\n      return this.isEpic && !this.showWorkItemEpics && !this.issuableId;\n    },\n    i18n() {\n      const localizedAttribute =\n        LocalizedIssuableAttributeType[IssuableAttributeTypeKeyMap[this.issuableAttribute]];\n      return dropdowni18nText(localizedAttribute, this.issuableType);\n    },\n    isEpic() {\n      return this.issuableAttribute === TYPE_EPIC;\n    },\n  },\n  methods: {\n    async updateAttribute({ id, workItemType }) {\n      this.updating = true;\n      let response;\n      try {\n        if (this.hasWorkItemParent) {\n          // setting null if there is parent already assigned\n          // to avoid parent already assigned error\n          await this.updateWorkItem({\n            input: {\n              id: this.issuableId,\n              hierarchyWidget: { parentId: null },\n            },\n          });\n        } else if (this.isEpic && this.showWorkItemEpics && !this.issuable?.hasParent) {\n          // Added checks to avoid getting it fired unnecessarily for other widgets\n\n          // setting null if there is epic already assigned\n          // to avoid epic already assigned error\n          await this.updateIssuable({\n            fullPath: this.workspacePath,\n            attributeId: null,\n            iid: this.iid,\n          });\n        }\n\n        // Set actual data for work item epic or legacy epic\n        if (workItemType?.name === WORK_ITEM_TYPE_VALUE_EPIC) {\n          response = await this.updateWorkItem({\n            input: {\n              id: this.issuableId,\n              hierarchyWidget: { parentId: id },\n            },\n          });\n        } else {\n          response = await this.updateIssuable({\n            fullPath: this.workspacePath,\n            attributeId: id,\n            iid: this.iid,\n          });\n        }\n\n        if (response.data.issuableSetAttribute?.errors?.length) {\n          createAlert({\n            message: response.data.issuableSetAttribute.errors[0],\n            captureError: true,\n            error: response.data.issuableSetAttribute.errors[0],\n          });\n        } else {\n          this.hasWorkItemParent =\n            workItemType?.name === WORK_ITEM_TYPE_VALUE_EPIC && this.showWorkItemEpics;\n          this.$emit('attribute-updated', response.data);\n        }\n      } catch (error) {\n        createAlert({ message: this.i18n.updateError, captureError: true, error });\n      } finally {\n        this.updating = false;\n      }\n    },\n    updateWorkItem(variables) {\n      const { current } = issuableAttributesQueries[IssuableAttributeType.Parent];\n      const { mutation } = current[this.issuableType];\n\n      return this.$apollo.mutate({\n        mutation,\n        variables,\n      });\n    },\n    updateIssuable(variables) {\n      const { current } = this.issuableAttributeQuery;\n      const { mutation } = current[this.issuableType];\n\n      return this.$apollo.mutate({\n        mutation,\n        variables,\n      });\n    },\n    setParentData(workItem) {\n      const parent = workItem?.widgets?.find((widget) => widget.type === 'HIERARCHY')?.parent;\n\n      this.issuable = {\n        ...this.issuable,\n        attribute: parent\n          ? {\n              id: parent.id,\n              title: parent.title,\n              webUrl: parent.webUrl,\n            }\n          : null,\n      };\n    },\n  },\n};\n</script>\n<template>\n  <sidebar-dropdown-widget\n    :icon=\"icon\"\n    :issuable-type=\"issuableType\"\n    :attr-workspace-path=\"attrWorkspacePath\"\n    :issuable-attribute=\"issuableAttribute\"\n    :iid=\"iid\"\n    :workspace-path=\"workspacePath\"\n    :show-work-item-epics=\"showWorkItemEpics\"\n    :is-epic-attribute=\"isEpic\"\n    :issuable-parent=\"issuable\"\n    v-bind=\"$attrs\"\n    @updateAttribute=\"updateAttribute\"\n    v-on=\"$listeners\"\n  >\n    <template v-for=\"(_, name) in $scopedSlots\" #[name]=\"slotData\">\n      <slot :name=\"name\" v-bind=\"slotData\"></slot>\n    </template>\n  </sidebar-dropdown-widget>\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_dropdown_widget.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_dropdown_widget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sidebar_dropdown_widget.vue?vue&type=template&id=dd4f7e04\"\nimport script from \"./sidebar_dropdown_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_dropdown_widget.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 GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'AvatarLink',\n  components: {\n    GlLink\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-link',_vm._g(_vm._b({staticClass:\"gl-avatar-link\"},'gl-link',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { extend } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Constants ---\n\nconst LIGHT = 'light';\nconst DARK = 'dark';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTr = /*#__PURE__*/extend({\n  name: NAME_TR,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableTr: () => this\n    };\n  },\n  inject: {\n    getBvTableRowGroup: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableRowGroup() {\n      return this.getBvTableRowGroup();\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTbody() {\n      return this.bvTableRowGroup.isTbody;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inThead() {\n      return this.bvTableRowGroup.isThead;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTfoot() {\n      return this.bvTableRowGroup.isTfoot;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTableRowGroup.isDark;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTableRowGroup.isStacked;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTableRowGroup.isResponsive;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return this.bvTableRowGroup.isStickyHeader;\n    },\n    // Sniffed by <b-tr> / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTableRowGroup.tableVariant;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    headVariant() {\n      return this.inThead ? this.bvTableRowGroup.headVariant : null;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    footVariant() {\n      return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n    },\n    isRowDark() {\n      return this.headVariant === LIGHT || this.footVariant === LIGHT ? /* istanbul ignore next */false : this.headVariant === DARK || this.footVariant === DARK ? /* istanbul ignore next */true : this.isDark;\n    },\n    trClasses() {\n      const {\n        variant\n      } = this;\n      return [variant ? `${this.isRowDark ? 'bg' : 'table'}-${variant}` : null];\n    },\n    trAttrs() {\n      return {\n        role: 'row',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('tr', {\n      class: this.trClasses,\n      attrs: this.trAttrs,\n      // Pass native listeners to child\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTr, props };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestId\"},\"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\":[]}],\"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\":\"projectPath\"}}}],\"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\":\"diffStatsSummary\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"fileCount\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"preparedAt\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":219}};\n    doc.loc.source = {\"body\":\"query mergeRequestId($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      diffStatsSummary {\\n        fileCount\\n      }\\n      preparedAt\\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[\"mergeRequestId\"] = oneQuery(doc, \"mergeRequestId\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('gl-collapsible-listbox',{attrs:{\"selected\":_vm.diffViewType,\"toggle-class\":_vm.$options.toggleId,\"icon\":\"preferences\",\"text\":_vm.$options.i18n.preferences,\"text-sr-only\":\"\",\"aria-label\":_vm.$options.i18n.preferences,\"header-text\":_vm.__('Compare changes'),\"items\":_vm.$options.diffViewTypeOptions},on:{\"select\":function($event){return _vm.$emit('updateDiffViewType', $event)}},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"gl-border-t gl-px-4 gl-pb-2 gl-pt-4\"},[_c('gl-form-checkbox',{staticClass:\"gl-mb-2\",attrs:{\"data-testid\":\"show-whitespace\",\"checked\":_vm.showWhitespace},on:{\"input\":function($event){return _vm.$emit('toggleWhitespace', $event)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.whitespace)+\"\\n        \")]),_vm._v(\" \"),_c('gl-form-checkbox',{staticClass:\"gl-mb-0\",attrs:{\"data-testid\":\"file-by-file\",\"checked\":_vm.viewDiffsFileByFile},on:{\"input\":function($event){return _vm.$emit('toggleFileByFile', $event)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.fileByFile)+\"\\n        \")])],1)]},proxy:true}])}),_vm._v(\" \"),_c('gl-tooltip',{attrs:{\"target\":_vm.tooltipTarget,\"triggers\":\"hover\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.preferences)+\"\\n  \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./settings_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!./settings_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox, GlFormCheckbox, GlTooltip } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { PARALLEL_DIFF_VIEW_TYPE, INLINE_DIFF_VIEW_TYPE } from '../constants';\nimport { SETTINGS_DROPDOWN } from '../i18n';\n\nexport default {\n  i18n: SETTINGS_DROPDOWN,\n  toggleId: 'js-show-diff-settings',\n  components: {\n    GlCollapsibleListbox,\n    GlFormCheckbox,\n    GlTooltip,\n  },\n  props: {\n    showWhitespace: {\n      type: Boolean,\n      required: true,\n    },\n    diffViewType: {\n      type: String,\n      required: true,\n    },\n    viewDiffsFileByFile: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  methods: {\n    tooltipTarget() {\n      return document.querySelector(`.${this.$options.toggleId}`);\n    },\n  },\n  diffViewTypeOptions: [\n    {\n      text: __('Side-by-side'),\n      value: PARALLEL_DIFF_VIEW_TYPE,\n    },\n    {\n      text: __('Inline'),\n      value: INLINE_DIFF_VIEW_TYPE,\n    },\n  ],\n};\n</script>\n\n<template>\n  <div>\n    <gl-collapsible-listbox\n      :selected=\"diffViewType\"\n      :toggle-class=\"$options.toggleId\"\n      icon=\"preferences\"\n      :text=\"$options.i18n.preferences\"\n      text-sr-only\n      :aria-label=\"$options.i18n.preferences\"\n      :header-text=\"__('Compare changes')\"\n      :items=\"$options.diffViewTypeOptions\"\n      @select=\"$emit('updateDiffViewType', $event)\"\n    >\n      <template #footer>\n        <div class=\"gl-border-t gl-px-4 gl-pb-2 gl-pt-4\">\n          <gl-form-checkbox\n            data-testid=\"show-whitespace\"\n            class=\"gl-mb-2\"\n            :checked=\"showWhitespace\"\n            @input=\"$emit('toggleWhitespace', $event)\"\n          >\n            {{ $options.i18n.whitespace }}\n          </gl-form-checkbox>\n          <gl-form-checkbox\n            data-testid=\"file-by-file\"\n            class=\"gl-mb-0\"\n            :checked=\"viewDiffsFileByFile\"\n            @input=\"$emit('toggleFileByFile', $event)\"\n          >\n            {{ $options.i18n.fileByFile }}\n          </gl-form-checkbox>\n        </div>\n      </template>\n    </gl-collapsible-listbox>\n    <gl-tooltip :target=\"tooltipTarget\" triggers=\"hover\">\n      {{ $options.i18n.preferences }}\n    </gl-tooltip>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./settings_dropdown.vue?vue&type=template&id=2209f123\"\nimport script from \"./settings_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./settings_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","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityRevertToDetected\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityRevertToDetected\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detectedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":328}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityRevertToDetected($id: VulnerabilityID!, $comment: String) {\\n  vulnerabilityRevertToDetected(input: { id: $id, comment: $comment }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      detectedAt\\n      ...LastStateTransition\\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/last_state_transition.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[\"vulnerabilityRevertToDetected\"] = oneQuery(doc, \"vulnerabilityRevertToDetected\");\n        \n","var baseSlice = require('./_baseSlice');\n\n/**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseWhile(array, predicate, isDrop, fromRight) {\n  var length = array.length,\n      index = fromRight ? length : -1;\n\n  while ((fromRight ? index-- : ++index < length) &&\n    predicate(array[index], index, array)) {}\n\n  return isDrop\n    ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n    : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n}\n\nmodule.exports = baseWhile;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-editable-item',{ref:\"editable\",staticClass:\"block\",attrs:{\"title\":_vm.dateLabel,\"tracking\":_vm.tracking,\"loading\":_vm.isLoading,\"data-testid\":_vm.dataTestId},on:{\"open\":_vm.openDatePicker},scopedSlots:_vm._u([(_vm.canInherit)?{key:\"title-extra\",fn:function(){return [_c('help-icon',{ref:\"epicDatePopover\",staticClass:\"hide-collapsed gl-ml-3 gl-cursor-pointer\",attrs:{\"tabindex\":\"0\",\"aria-label\":_vm.$options.i18n.help,\"data-testid\":\"inherit-date-popover\"}}),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":_vm.epicDatePopoverEl,\"triggers\":\"focus\",\"placement\":\"left\",\"boundary\":\"viewport\"}},[_c('p',[_vm._v(_vm._s(_vm.$options.i18n.dateHelpValidMessage))]),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":_vm.$options.dateHelpUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$options.i18n.learnMore))])],1)]},proxy:true}:null,{key:\"collapsed\",fn:function(){return [_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.dateLabel}},[_c('gl-icon',{attrs:{\"size\":16,\"name\":\"calendar\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(_vm._s(_vm.formattedDate))])],1),_vm._v(\" \"),(_vm.canInherit && !_vm.initialLoading)?_c('sidebar-inherit-date',{attrs:{\"issuable\":_vm.issuable,\"date-type\":_vm.dateType,\"is-loading\":_vm.isLoading},on:{\"reset-date\":function($event){return _vm.setDate(null)},\"set-date\":_vm.setFixedDate}}):_c('sidebar-formatted-date',{attrs:{\"has-date\":_vm.hasDate,\"formatted-date\":_vm.formattedDate,\"reset-text\":_vm.removeDateLabel,\"is-loading\":_vm.isLoading},on:{\"reset-date\":function($event){return _vm.setDate(null)}}})]},proxy:true},{key:\"default\",fn:function(){return [(!_vm.isLoading)?_c('gl-datepicker',{ref:\"datePicker\",staticClass:\"gl-relative\",attrs:{\"value\":_vm.parsedDate,\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"default-date\":_vm.parsedDate,\"first-day\":_vm.firstDay,\"show-clear-button\":\"\",\"autocomplete\":\"off\"},on:{\"input\":_vm.setDate,\"clear\":function($event){return _vm.setDate(null)}}}):_vm._e()]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_formatted_date.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_formatted_date.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlButton,\n  },\n  inject: ['canUpdate'],\n  props: {\n    formattedDate: {\n      required: true,\n      type: String,\n    },\n    hasDate: {\n      required: true,\n      type: Boolean,\n    },\n    resetText: {\n      required: true,\n      type: String,\n    },\n    isLoading: {\n      required: true,\n      type: Boolean,\n    },\n    canDelete: {\n      required: false,\n      type: Boolean,\n      default: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"hide-collapsed gl-flex gl-items-center\">\n    <span :class=\"hasDate ? 'gl-text-default' : 'gl-text-subtle'\" data-testid=\"sidebar-date-value\">\n      {{ formattedDate }}\n    </span>\n    <div v-if=\"hasDate && canUpdate && canDelete\" class=\"gl-flex\">\n      <span class=\"gl-px-2\">-</span>\n      <gl-button\n        variant=\"link\"\n        class=\"!gl-text-subtle\"\n        data-testid=\"reset-button\"\n        :disabled=\"isLoading\"\n        @click=\"$emit('reset-date', $event)\"\n      >\n        {{ resetText }}\n      </gl-button>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_formatted_date.vue?vue&type=template&id=551d23d8\"\nimport script from \"./sidebar_formatted_date.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_formatted_date.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\"},[_c('span',{class:_vm.hasDate ? 'gl-text-default' : 'gl-text-subtle',attrs:{\"data-testid\":\"sidebar-date-value\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.formattedDate)+\"\\n  \")]),_vm._v(\" \"),(_vm.hasDate && _vm.canUpdate && _vm.canDelete)?_c('div',{staticClass:\"gl-flex\"},[_c('span',{staticClass:\"gl-px-2\"},[_vm._v(\"-\")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"!gl-text-subtle\",attrs:{\"variant\":\"link\",\"data-testid\":\"reset-button\",\"disabled\":_vm.isLoading},on:{\"click\":function($event){return _vm.$emit('reset-date', $event)}}},[_vm._v(\"\\n      \"+_vm._s(_vm.resetText)+\"\\n    \")])],1):_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!./sidebar_inherit_date.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_inherit_date.vue?vue&type=script&lang=js\"","<script>\nimport { GlFormRadio } from '@gitlab/ui';\nimport { localeDateFormat, newDate } from '~/lib/utils/datetime_utility';\nimport { __ } from '~/locale';\nimport { dateFields } from '../../constants';\nimport SidebarFormattedDate from './sidebar_formatted_date.vue';\n\nexport default {\n  components: {\n    GlFormRadio,\n    SidebarFormattedDate,\n  },\n  inject: ['canUpdate'],\n  props: {\n    issuable: {\n      required: true,\n      type: Object,\n    },\n    isLoading: {\n      required: false,\n      type: Boolean,\n      default: false,\n    },\n    dateType: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    dateIsFixed: {\n      get() {\n        return this.issuable?.[dateFields[this.dateType].isDateFixed] || false;\n      },\n      set(fixed) {\n        if (fixed === this.issuable[dateFields[this.dateType].isDateFixed]) return;\n        this.$emit('set-date', fixed);\n      },\n    },\n    hasFixedDate() {\n      return this.issuable[dateFields[this.dateType].dateFixed] !== null;\n    },\n    formattedFixedDate() {\n      const dateFixed = this.issuable[dateFields[this.dateType].dateFixed];\n      if (!dateFixed) {\n        return this.$options.i18n.noDate;\n      }\n\n      return localeDateFormat.asDate.format(newDate(dateFixed));\n    },\n    formattedInheritedDate() {\n      const dateFromMilestones = this.issuable[dateFields[this.dateType].dateFromMilestones];\n      if (!dateFromMilestones) {\n        return this.$options.i18n.noDate;\n      }\n\n      return localeDateFormat.asDate.format(newDate(dateFromMilestones));\n    },\n  },\n  i18n: {\n    fixed: __('Fixed:'),\n    inherited: __('Inherited:'),\n    remove: __('remove'),\n    noDate: __('None'),\n  },\n};\n</script>\n\n<template>\n  <div class=\"hide-collapsed gl-mt-3\">\n    <div class=\"gl-flex gl-items-baseline\" data-testid=\"sidebar-fixed-date\">\n      <gl-form-radio\n        v-model=\"dateIsFixed\"\n        :value=\"true\"\n        :disabled=\"!canUpdate || isLoading\"\n        class=\"gl-pr-2\"\n      >\n        <span :class=\"dateIsFixed ? 'gl-font-bold gl-text-default' : 'gl-text-subtle'\">\n          {{ $options.i18n.fixed }}\n        </span>\n      </gl-form-radio>\n      <sidebar-formatted-date\n        :has-date=\"dateIsFixed\"\n        :formatted-date=\"formattedFixedDate\"\n        :reset-text=\"$options.i18n.remove\"\n        :is-loading=\"isLoading\"\n        :can-delete=\"dateIsFixed && hasFixedDate\"\n        class=\"gl-leading-normal\"\n        @reset-date=\"$emit('reset-date', $event)\"\n      />\n    </div>\n    <div class=\"gl-flex gl-items-baseline\" data-testid=\"sidebar-inherited-date\">\n      <gl-form-radio\n        v-model=\"dateIsFixed\"\n        :value=\"false\"\n        :disabled=\"!canUpdate || isLoading\"\n        class=\"gl-pr-2\"\n      >\n        <span :class=\"!dateIsFixed ? 'gl-font-bold gl-text-default' : 'gl-text-disalbed'\">\n          {{ $options.i18n.inherited }}\n        </span>\n      </gl-form-radio>\n      <sidebar-formatted-date\n        :has-date=\"!dateIsFixed\"\n        :formatted-date=\"formattedInheritedDate\"\n        :reset-text=\"$options.i18n.remove\"\n        :is-loading=\"isLoading\"\n        :can-delete=\"false\"\n        class=\"gl-leading-normal\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_inherit_date.vue?vue&type=template&id=144fb6f1\"\nimport script from \"./sidebar_inherit_date.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_inherit_date.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-mt-3\"},[_c('div',{staticClass:\"gl-flex gl-items-baseline\",attrs:{\"data-testid\":\"sidebar-fixed-date\"}},[_c('gl-form-radio',{staticClass:\"gl-pr-2\",attrs:{\"value\":true,\"disabled\":!_vm.canUpdate || _vm.isLoading},model:{value:(_vm.dateIsFixed),callback:function ($$v) {_vm.dateIsFixed=$$v},expression:\"dateIsFixed\"}},[_c('span',{class:_vm.dateIsFixed ? 'gl-font-bold gl-text-default' : 'gl-text-subtle'},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.fixed)+\"\\n      \")])]),_vm._v(\" \"),_c('sidebar-formatted-date',{staticClass:\"gl-leading-normal\",attrs:{\"has-date\":_vm.dateIsFixed,\"formatted-date\":_vm.formattedFixedDate,\"reset-text\":_vm.$options.i18n.remove,\"is-loading\":_vm.isLoading,\"can-delete\":_vm.dateIsFixed && _vm.hasFixedDate},on:{\"reset-date\":function($event){return _vm.$emit('reset-date', $event)}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-items-baseline\",attrs:{\"data-testid\":\"sidebar-inherited-date\"}},[_c('gl-form-radio',{staticClass:\"gl-pr-2\",attrs:{\"value\":false,\"disabled\":!_vm.canUpdate || _vm.isLoading},model:{value:(_vm.dateIsFixed),callback:function ($$v) {_vm.dateIsFixed=$$v},expression:\"dateIsFixed\"}},[_c('span',{class:!_vm.dateIsFixed ? 'gl-font-bold gl-text-default' : 'gl-text-disalbed'},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.inherited)+\"\\n      \")])]),_vm._v(\" \"),_c('sidebar-formatted-date',{staticClass:\"gl-leading-normal\",attrs:{\"has-date\":!_vm.dateIsFixed,\"formatted-date\":_vm.formattedInheritedDate,\"reset-text\":_vm.$options.i18n.remove,\"is-loading\":_vm.isLoading,\"can-delete\":false}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlIcon, GlDatepicker, GlTooltipDirective, GlLink, GlPopover } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { localeDateFormat, newDate, toISODateFormat } from '~/lib/utils/datetime_utility';\nimport { __, sprintf } from '~/locale';\nimport { dateFields, dateTypes, Tracking } from '../../constants';\nimport { dueDateQueries, startDateQueries } from '../../queries/constants';\nimport SidebarEditableItem from '../sidebar_editable_item.vue';\nimport SidebarFormattedDate from './sidebar_formatted_date.vue';\nimport SidebarInheritDate from './sidebar_inherit_date.vue';\n\nconst hideDropdownEvent = new CustomEvent('hiddenGlDropdown', {\n  bubbles: true,\n});\n\nexport default {\n  tracking: {\n    event: Tracking.editEvent,\n    label: Tracking.rightSidebarLabel,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlIcon,\n    GlDatepicker,\n    GlLink,\n    GlPopover,\n    SidebarEditableItem,\n    SidebarFormattedDate,\n    SidebarInheritDate,\n    HelpIcon,\n  },\n  inject: ['canUpdate'],\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    dateType: {\n      type: String,\n      required: false,\n      default: dateTypes.due,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n    canInherit: {\n      required: false,\n      type: Boolean,\n      default: false,\n    },\n    minDate: {\n      required: false,\n      type: Date,\n      default: null,\n    },\n    maxDate: {\n      required: false,\n      type: Date,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      issuable: {},\n      loading: false,\n      tracking: {\n        ...this.$options.tracking,\n        property: this.dateType === dateTypes.start ? 'startDate' : 'dueDate',\n      },\n    };\n  },\n  apollo: {\n    issuable: {\n      query() {\n        return this.dateQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: String(this.iid),\n        };\n      },\n      skip() {\n        return !this.iid;\n      },\n      update(data) {\n        return data.workspace?.issuable || {};\n      },\n      result({ data }) {\n        if (!data) {\n          return;\n        }\n        this.$emit(`${this.dateType}Updated`, data.workspace?.issuable?.[this.dateType]);\n      },\n      error() {\n        createAlert({\n          message: sprintf(\n            __('Something went wrong while setting %{issuableType} %{dateType} date.'),\n            {\n              issuableType: this.issuableType,\n              dateType: this.dateType === dateTypes.start ? 'start' : 'due',\n            },\n          ),\n        });\n      },\n      subscribeToMore: {\n        document() {\n          return this.dateQueries[this.issuableType].subscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return this.skipIssueDueDateSubscription;\n        },\n      },\n    },\n  },\n  computed: {\n    dateQueries() {\n      return this.dateType === dateTypes.start ? startDateQueries : dueDateQueries;\n    },\n    dateLabel() {\n      return this.dateType === dateTypes.start\n        ? this.$options.i18n.startDate\n        : this.$options.i18n.dueDate;\n    },\n    removeDateLabel() {\n      return this.dateType === dateTypes.start\n        ? this.$options.i18n.removeStartDate\n        : this.$options.i18n.removeDueDate;\n    },\n    dateValue() {\n      return this.issuable?.[this.dateType] || null;\n    },\n    firstDay() {\n      return gon.first_day_of_week;\n    },\n    isLoading() {\n      return this.$apollo.queries.issuable.loading || this.loading;\n    },\n    initialLoading() {\n      return this.$apollo.queries.issuable.loading;\n    },\n    hasDate() {\n      return this.dateValue !== null;\n    },\n    parsedDate() {\n      if (!this.hasDate) {\n        return null;\n      }\n\n      return newDate(this.dateValue);\n    },\n    formattedDate() {\n      if (!this.hasDate) {\n        return this.$options.i18n.noDate;\n      }\n\n      return localeDateFormat.asDate.format(this.parsedDate);\n    },\n    workspacePath() {\n      return this.issuableType === TYPE_ISSUE\n        ? {\n            projectPath: this.fullPath,\n          }\n        : {\n            groupPath: this.fullPath,\n          };\n    },\n    dataTestId() {\n      return this.dateType === dateTypes.start ? 'sidebar-start-date' : 'sidebar-due-date';\n    },\n    issuableId() {\n      return this.issuable.id;\n    },\n    skipIssueDueDateSubscription() {\n      return this.issuableType !== TYPE_ISSUE || !this.issuableId || this.isLoading;\n    },\n  },\n  methods: {\n    epicDatePopoverEl() {\n      return this.$refs?.epicDatePopover?.$el;\n    },\n    closeForm() {\n      this.$refs.editable.collapse();\n      this.$el.dispatchEvent(hideDropdownEvent);\n      this.$emit('closeForm');\n    },\n    openDatePicker() {\n      this.$refs.datePicker.show();\n    },\n    setFixedDate(isFixed) {\n      const date = this.issuable[dateFields[this.dateType].dateFixed];\n      this.setDate(date, isFixed);\n    },\n    setDate(date, isFixed = true) {\n      const formattedDate = date ? toISODateFormat(date) : null;\n      this.loading = true;\n      this.$refs.editable.collapse();\n      this.$apollo\n        .mutate({\n          mutation: this.dateQueries[this.issuableType].mutation,\n          variables: {\n            input: {\n              ...this.workspacePath,\n              iid: this.iid,\n              ...(this.canInherit\n                ? {\n                    [dateFields[this.dateType].dateFixed]: isFixed ? formattedDate : undefined,\n                    [dateFields[this.dateType].isDateFixed]: isFixed,\n                  }\n                : {\n                    [this.dateType]: formattedDate,\n                  }),\n            },\n          },\n        })\n        .then(\n          ({\n            data: {\n              issuableSetDate: { errors },\n            },\n          }) => {\n            if (errors.length) {\n              createAlert({\n                message: errors[0],\n              });\n            } else {\n              this.$emit('closeForm');\n            }\n          },\n        )\n        .catch(() => {\n          createAlert({\n            message: sprintf(\n              __('Something went wrong while setting %{issuableType} %{dateType} date.'),\n              {\n                issuableType: this.issuableType,\n                dateType: this.dateType === dateTypes.start ? 'start' : 'due',\n              },\n            ),\n          });\n        })\n        .finally(() => {\n          this.loading = false;\n        });\n    },\n  },\n  i18n: {\n    dueDate: __('Due date'),\n    startDate: __('Start date'),\n    noDate: __('None'),\n    removeDueDate: __('remove due date'),\n    removeStartDate: __('remove start date'),\n    dateHelpValidMessage: __(\n      'These dates affect how your epics appear in the roadmap. Set a fixed date or one inherited from the milestones assigned to issues in this epic.',\n    ),\n    help: __('Help'),\n    learnMore: __('Learn more'),\n  },\n  dateHelpUrl: '/help/user/group/epics/manage_epics.md#start-and-due-date-inheritance',\n};\n</script>\n\n<template>\n  <sidebar-editable-item\n    ref=\"editable\"\n    :title=\"dateLabel\"\n    :tracking=\"tracking\"\n    :loading=\"isLoading\"\n    class=\"block\"\n    :data-testid=\"dataTestId\"\n    @open=\"openDatePicker\"\n  >\n    <template v-if=\"canInherit\" #title-extra>\n      <help-icon\n        ref=\"epicDatePopover\"\n        class=\"hide-collapsed gl-ml-3 gl-cursor-pointer\"\n        tabindex=\"0\"\n        :aria-label=\"$options.i18n.help\"\n        data-testid=\"inherit-date-popover\"\n      />\n      <gl-popover :target=\"epicDatePopoverEl\" triggers=\"focus\" placement=\"left\" boundary=\"viewport\">\n        <p>{{ $options.i18n.dateHelpValidMessage }}</p>\n        <gl-link :href=\"$options.dateHelpUrl\" target=\"_blank\">{{\n          $options.i18n.learnMore\n        }}</gl-link>\n      </gl-popover>\n    </template>\n    <template #collapsed>\n      <div v-gl-tooltip.viewport.left :title=\"dateLabel\" class=\"sidebar-collapsed-icon\">\n        <gl-icon :size=\"16\" name=\"calendar\" />\n        <span class=\"gl-px-3 gl-pt-2 gl-text-sm\">{{ formattedDate }}</span>\n      </div>\n      <sidebar-inherit-date\n        v-if=\"canInherit && !initialLoading\"\n        :issuable=\"issuable\"\n        :date-type=\"dateType\"\n        :is-loading=\"isLoading\"\n        @reset-date=\"setDate(null)\"\n        @set-date=\"setFixedDate\"\n      />\n      <sidebar-formatted-date\n        v-else\n        :has-date=\"hasDate\"\n        :formatted-date=\"formattedDate\"\n        :reset-text=\"removeDateLabel\"\n        :is-loading=\"isLoading\"\n        @reset-date=\"setDate(null)\"\n      />\n    </template>\n    <template #default>\n      <gl-datepicker\n        v-if=\"!isLoading\"\n        ref=\"datePicker\"\n        class=\"gl-relative\"\n        :value=\"parsedDate\"\n        :min-date=\"minDate\"\n        :max-date=\"maxDate\"\n        :default-date=\"parsedDate\"\n        :first-day=\"firstDay\"\n        show-clear-button\n        autocomplete=\"off\"\n        @input=\"setDate\"\n        @clear=\"setDate(null)\"\n      />\n    </template>\n  </sidebar-editable-item>\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_date_widget.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_date_widget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sidebar_date_widget.vue?vue&type=template&id=7f43361a\"\nimport script from \"./sidebar_date_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_date_widget.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    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"workItemParentUpdated\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workItemId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WorkItemID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"workItem\"},\"name\":{\"kind\":\"Name\",\"value\":\"workItemUpdated\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workItemId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workItemId\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"widgets\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WorkItemWidgetHierarchy\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"parent\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":284}};\n    doc.loc.source = {\"body\":\"subscription workItemParentUpdated($workItemId: WorkItemID!) {\\n  workItem: workItemUpdated(workItemId: $workItemId) {\\n    id\\n    widgets {\\n      ... on WorkItemWidgetHierarchy {\\n        type\\n        parent {\\n          id\\n          title\\n          webUrl\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"workItemParentUpdated\"] = oneQuery(doc, \"workItemParentUpdated\");\n        \n","export const SEVERITY_CLASSES = {\n  info: 'gl-text-blue-400',\n  minor: 'gl-text-orange-300',\n  major: 'gl-text-orange-400',\n  critical: 'gl-text-red-600',\n  blocker: 'gl-text-red-800',\n  unknown: 'gl-text-gray-400',\n};\n\nexport const SEVERITY_ICONS = {\n  info: 'severity-info',\n  minor: 'severity-low',\n  major: 'severity-medium',\n  critical: 'severity-high',\n  blocker: 'severity-critical',\n  unknown: 'severity-unknown',\n};\n\nexport const SEVERITY_ICONS_MR_WIDGET = {\n  info: 'severityInfo',\n  minor: 'severityLow',\n  major: 'severityMedium',\n  critical: 'severityHigh',\n  blocker: 'severityCritical',\n  unknown: 'severityUnknown',\n};\n\nexport const SEVERITIES = {\n  info: {\n    class: SEVERITY_CLASSES.info,\n    name: SEVERITY_ICONS.info,\n  },\n  minor: {\n    class: SEVERITY_CLASSES.minor,\n    name: SEVERITY_ICONS.minor,\n  },\n  major: {\n    class: SEVERITY_CLASSES.major,\n    name: SEVERITY_ICONS.major,\n  },\n  critical: {\n    class: SEVERITY_CLASSES.critical,\n    name: SEVERITY_ICONS.critical,\n  },\n  blocker: {\n    class: SEVERITY_CLASSES.blocker,\n    name: SEVERITY_ICONS.blocker,\n  },\n  unknown: {\n    class: SEVERITY_CLASSES.unknown,\n    name: SEVERITY_ICONS.unknown,\n  },\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityConfirm\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"VulnerabilityID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerabilityConfirm\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"comment\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"vulnerability\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":350}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/last_state_transition.fragment.graphql\\\"\\n\\nmutation vulnerabilityConfirm($id: VulnerabilityID!, $comment: String) {\\n  vulnerabilityConfirm(input: { id: $id, comment: $comment }) {\\n    errors\\n    vulnerability {\\n      id\\n      state\\n      confirmedAt\\n      confirmedBy {\\n        id\\n      }\\n      ...LastStateTransition\\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/last_state_transition.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[\"vulnerabilityConfirm\"] = oneQuery(doc, \"vulnerabilityConfirm\");\n        \n","import {\n  relativePathToAbsolute,\n  isAbsolute,\n  isRootRelative,\n  isBlobUrl,\n} from '~/lib/utils/url_utility';\nimport { commitActionTypes } from '../constants';\n\nexport const dataStructure = () => ({\n  id: '',\n  // Key will contain a mixture of ID and path\n  // it can also contain a prefix `pending-` for files opened in review mode\n  key: '',\n  type: '',\n  name: '',\n  path: '',\n  tempFile: false,\n  tree: [],\n  loading: false,\n  opened: false,\n  active: false,\n  changed: false,\n  staged: false,\n  lastCommitSha: '',\n  rawPath: '',\n  raw: '',\n  content: '',\n  size: 0,\n  parentPath: null,\n  lastOpenedAt: 0,\n  mrChange: null,\n  deleted: false,\n  prevPath: undefined,\n  mimeType: '',\n});\n\nexport const decorateData = (entity) => {\n  const {\n    id,\n    type,\n    name,\n    path,\n    content = '',\n    tempFile = false,\n    active = false,\n    opened = false,\n    changed = false,\n    rawPath = '',\n    file_lock,\n    parentPath = '',\n    mimeType = '',\n  } = entity;\n\n  return Object.assign(dataStructure(), {\n    id,\n    key: `${name}-${type}-${id}`,\n    type,\n    name,\n    path,\n    tempFile,\n    opened,\n    active,\n    changed,\n    content,\n    rawPath,\n    file_lock,\n    parentPath,\n    mimeType,\n  });\n};\n\nexport const setPageTitle = (title) => {\n  document.title = title;\n};\n\nexport const setPageTitleForFile = (state, file) => {\n  const title = [file.path, state.currentBranchId, state.currentProjectId, 'GitLab'].join(' · ');\n  setPageTitle(title);\n};\n\nexport const commitActionForFile = (file) => {\n  if (file.prevPath) {\n    return commitActionTypes.move;\n  }\n  if (file.deleted) {\n    return commitActionTypes.delete;\n  }\n  if (file.tempFile) {\n    return commitActionTypes.create;\n  }\n\n  return commitActionTypes.update;\n};\n\nexport const getCommitFiles = (stagedFiles) =>\n  stagedFiles.reduce((acc, file) => {\n    if (file.type === 'tree') return acc;\n\n    return acc.concat({\n      ...file,\n    });\n  }, []);\n\nexport const createCommitPayload = ({\n  branch,\n  getters,\n  newBranch,\n  state,\n  rootState,\n  rootGetters,\n}) => ({\n  branch,\n  commit_message: state.commitMessage || getters.preBuiltCommitMessage,\n  actions: getCommitFiles(rootState.stagedFiles).map((f) => {\n    const isBlob = isBlobUrl(f.rawPath);\n    const content = isBlob ? btoa(f.content) : f.content;\n\n    return {\n      action: commitActionForFile(f),\n      file_path: f.path,\n      previous_path: f.prevPath || undefined,\n      content: content || undefined,\n      encoding: isBlob ? 'base64' : 'text',\n      last_commit_id: newBranch || f.deleted || f.prevPath ? undefined : f.lastCommitSha,\n    };\n  }),\n  start_sha: newBranch ? rootGetters.lastCommit.id : undefined,\n});\n\nexport const createNewMergeRequestUrl = (projectUrl, source, target) =>\n  `${projectUrl}/-/merge_requests/new?merge_request[source_branch]=${source}&merge_request[target_branch]=${target}&nav_source=webide`;\n\nconst sortTreesByTypeAndName = (a, b) => {\n  if (a.type === 'tree' && b.type === 'blob') {\n    return -1;\n  }\n  if (a.type === 'blob' && b.type === 'tree') {\n    return 1;\n  }\n  if (a.name < b.name) return -1;\n  if (a.name > b.name) return 1;\n  return 0;\n};\n\nexport const sortTree = (sortedTree) =>\n  sortedTree\n    .map((entity) =>\n      Object.assign(entity, {\n        tree: entity.tree.length ? sortTree(entity.tree) : [],\n      }),\n    )\n    .sort(sortTreesByTypeAndName);\n\nexport const filePathMatches = (filePath, path) => filePath.indexOf(`${path}/`) === 0;\n\nexport const getChangesCountForFiles = (files, path) =>\n  files.filter((f) => filePathMatches(f.path, path)).length;\n\nexport const mergeTrees = (fromTree, toTree) => {\n  if (!fromTree || !fromTree.length) {\n    return toTree;\n  }\n\n  const recurseTree = (n, t) => {\n    if (!n) {\n      return t;\n    }\n    const existingTreeNode = t.find((el) => el.path === n.path);\n\n    if (existingTreeNode && n.tree.length > 0) {\n      existingTreeNode.opened = true;\n      recurseTree(n.tree[0], existingTreeNode.tree);\n    } else if (!existingTreeNode) {\n      const sorted = sortTree(t.concat(n));\n      t.splice(0, t.length + 1, ...sorted);\n    }\n    return t;\n  };\n\n  for (let i = 0, l = fromTree.length; i < l; i += 1) {\n    recurseTree(fromTree[i], toTree);\n  }\n\n  return toTree;\n};\n\n// eslint-disable-next-line max-params\nexport const swapInStateArray = (state, arr, key, entryPath) =>\n  Object.assign(state, {\n    [arr]: state[arr].map((f) => (f.key === key ? state.entries[entryPath] : f)),\n  });\n\nexport const getEntryOrRoot = (state, path) =>\n  path ? state.entries[path] : state.trees[`${state.currentProjectId}/${state.currentBranchId}`];\n\n// eslint-disable-next-line max-params\nexport const swapInParentTreeWithSorting = (state, oldKey, newPath, parentPath) => {\n  if (!newPath) {\n    return;\n  }\n\n  const parent = getEntryOrRoot(state, parentPath);\n\n  if (parent) {\n    const tree = parent.tree\n      // filter out old entry && new entry\n      .filter(({ key, path }) => key !== oldKey && path !== newPath)\n      // concat new entry\n      .concat(state.entries[newPath]);\n\n    parent.tree = sortTree(tree);\n  }\n};\n\nexport const removeFromParentTree = (state, oldKey, parentPath) => {\n  const parent = getEntryOrRoot(state, parentPath);\n\n  if (parent) {\n    parent.tree = sortTree(parent.tree.filter(({ key }) => key !== oldKey));\n  }\n};\n\nexport const updateFileCollections = (state, key, entryPath) => {\n  ['openFiles', 'changedFiles', 'stagedFiles'].forEach((fileCollection) => {\n    swapInStateArray(state, fileCollection, key, entryPath);\n  });\n};\n\nexport const cleanTrailingSlash = (path) => path.replace(/\\/$/, '');\n\nexport const pathsAreEqual = (a, b) => {\n  const cleanA = a ? cleanTrailingSlash(a) : '';\n  const cleanB = b ? cleanTrailingSlash(b) : '';\n\n  return cleanA === cleanB;\n};\n\nexport function extractMarkdownImagesFromEntries(mdFile, entries) {\n  /**\n   * Regex to identify an image tag in markdown, like:\n   *\n   * ![img alt goes here](/img.png)\n   * ![img alt](../img 1/img.png \"my image title\")\n   * ![img alt](https://gitlab.com/assets/logo.svg \"title here\")\n   *\n   */\n  const reMdImage = /!\\[([^\\]]*)\\]\\((.*?)(?:(?=\"|\\))\"([^\"]*)\")?\\)/gi;\n  const prefix = 'gl_md_img_';\n  const images = {};\n\n  let content = mdFile.content || mdFile.raw;\n  let i = 0;\n\n  // eslint-disable-next-line max-params\n  content = content.replace(reMdImage, (_, alt, path, title) => {\n    const imagePath = (isRootRelative(path) ? path : relativePathToAbsolute(path, mdFile.path))\n      .substr(1)\n      .trim();\n\n    const imageContent = entries[imagePath]?.content || entries[imagePath]?.raw;\n    const imageRawPath = entries[imagePath]?.rawPath;\n\n    if (!isAbsolute(path) && imageContent) {\n      const src = imageRawPath;\n      i += 1;\n      const key = `{{${prefix}${i}}}`;\n      images[key] = { alt, src, title };\n      return key;\n    }\n    return title ? `![${alt}](${path}\"${title}\")` : `![${alt}](${path})`;\n  });\n\n  return { content, images };\n}\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","import { extend, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Helper methods ---\n\nconst computeJustifyContent = value => {\n  value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n  return `justify-content-${value}`;\n};\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  align: makeProp(PROP_TYPE_STRING),\n  // Set to `true` if placing in a card header\n  cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n  fill: makeProp(PROP_TYPE_BOOLEAN, false),\n  justified: makeProp(PROP_TYPE_BOOLEAN, false),\n  pills: makeProp(PROP_TYPE_BOOLEAN, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'ul')\n}, NAME_NAV);\n\n// --- Main component ---\n\n// @vue/component\nconst BNav = /*#__PURE__*/extend({\n  name: NAME_NAV,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tabs,\n      pills,\n      align,\n      cardHeader\n    } = props;\n    return h(props.tag, mergeData(data, {\n      staticClass: 'nav',\n      class: {\n        'nav-tabs': tabs,\n        'nav-pills': pills && !tabs,\n        'card-header-tabs': cardHeader && tabs,\n        'card-header-pills': cardHeader && pills && !tabs,\n        'nav-fill': props.fill,\n        'nav-justified': props.justified,\n        [computeJustifyContent(align)]: align,\n        small: props.small\n      }\n    }), children);\n  }\n});\n\nexport { BNav, props };\n","import { extend, COMPONENT_UID_KEY, REF_FOR_KEY } from '../../vue';\nimport { NAME_TAB_BUTTON_HELPER, NAME_TABS } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_PREV, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_CHANGED, EVENT_NAME_ACTIVATE_TAB } from '../../constants/events';\nimport { CODE_SPACE, CODE_UP, CODE_LEFT, CODE_HOME, CODE_DOWN, CODE_RIGHT, CODE_END } from '../../constants/key-codes';\nimport { PROP_TYPE_NUMBER, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE, SLOT_NAME_TABS_START, SLOT_NAME_TABS_END, SLOT_NAME_EMPTY } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { props as props$1, BNav } from '../nav/nav';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_NUMBER\n});\n\n// --- Helper methods ---\n\n// Filter function to filter out disabled tabs\nconst notDisabled = tab => !tab.disabled;\n\n// --- Helper components ---\n\n// @vue/component\nconst BVTabButton = /*#__PURE__*/extend({\n  name: NAME_TAB_BUTTON_HELPER,\n  inject: {\n    getBvTabs: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  props: {\n    controls: makeProp(PROP_TYPE_STRING),\n    id: makeProp(PROP_TYPE_STRING),\n    noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n    posInSet: makeProp(PROP_TYPE_NUMBER),\n    setSize: makeProp(PROP_TYPE_NUMBER),\n    // Reference to the child <b-tab> instance\n    tab: makeProp(),\n    tabIndex: makeProp(PROP_TYPE_NUMBER)\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    }\n  },\n  methods: {\n    focus() {\n      attemptFocus(this.$refs.link);\n    },\n    handleEvent(event) {\n      /* istanbul ignore next */\n      if (this.tab.disabled) {\n        return;\n      }\n      const {\n        type,\n        keyCode,\n        shiftKey\n      } = event;\n      if (type === 'click') {\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n        // For ARIA tabs the SPACE key will also trigger a click/select\n        // Even with keyboard navigation disabled, SPACE should \"click\" the button\n        // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n        stopEvent(event);\n        this.$emit(EVENT_NAME_CLICK, event);\n      } else if (type === 'keydown' && !this.noKeyNav) {\n        // For keyboard navigation\n        if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_HOME) {\n            this.$emit(EVENT_NAME_FIRST, event);\n          } else {\n            this.$emit(EVENT_NAME_PREV, event);\n          }\n        } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n          stopEvent(event);\n          if (shiftKey || keyCode === CODE_END) {\n            this.$emit(EVENT_NAME_LAST, event);\n          } else {\n            this.$emit(EVENT_NAME_NEXT, event);\n          }\n        }\n      }\n    }\n  },\n  render(h) {\n    const {\n      id,\n      tabIndex,\n      setSize,\n      posInSet,\n      controls,\n      handleEvent\n    } = this;\n    const {\n      title,\n      localActive,\n      disabled,\n      titleItemClass,\n      titleLinkClass,\n      titleLinkAttributes\n    } = this.tab;\n    const $link = h(BLink, {\n      staticClass: 'nav-link',\n      class: [{\n        active: localActive && !disabled,\n        disabled\n      }, titleLinkClass,\n      // Apply <b-tabs> `activeNavItemClass` styles when the tab is active\n      localActive ? this.bvTabs.activeNavItemClass : null],\n      props: {\n        disabled\n      },\n      attrs: {\n        ...titleLinkAttributes,\n        id,\n        role: 'tab',\n        // Roving tab index when keynav enabled\n        tabindex: tabIndex,\n        'aria-selected': localActive && !disabled ? 'true' : 'false',\n        'aria-setsize': setSize,\n        'aria-posinset': posInSet,\n        'aria-controls': controls\n      },\n      on: {\n        click: handleEvent,\n        keydown: handleEvent\n      },\n      ref: 'link'\n    }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n    return h('li', {\n      staticClass: 'nav-item',\n      class: [titleItemClass],\n      attrs: {\n        role: 'presentation'\n      }\n    }, [$link]);\n  }\n});\n\n// --- Props ---\n\nconst navProps = omit(props$1, ['tabs', 'cardHeader']);\nconst props = makePropsConfigurable(sortKeys({\n  ...props$2,\n  ...modelProps,\n  ...navProps,\n  // Only applied to the currently active `<b-nav-item>`\n  activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Only applied to the currently active `<b-tab>`\n  // This prop is sniffed by the `<b-tab>` child\n  activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  // Synonym for 'bottom'\n  end: makeProp(PROP_TYPE_BOOLEAN, false),\n  // This prop is sniffed by the `<b-tab>` child\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n  noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_TABS);\n\n// --- Main component ---\n\n// @vue/component\nconst BTabs = /*#__PURE__*/extend({\n  name: NAME_TABS,\n  mixins: [idMixin, modelMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTabs: () => this\n    };\n  },\n  props,\n  data() {\n    return {\n      // Index of current tab\n      currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n      // Array of direct child `<b-tab>` instances, in DOM order\n      tabs: [],\n      // Array of child instances registered (for triggering reactive updates)\n      registeredTabs: []\n    };\n  },\n  computed: {\n    fade() {\n      // This computed prop is sniffed by the tab child\n      return !this.noFade;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        newValue = toInteger(newValue, -1);\n        oldValue = toInteger(oldValue, 0);\n        const $tab = this.tabs[newValue];\n        if ($tab && !$tab.disabled) {\n          this.activateTab($tab);\n        } else {\n          // Try next or prev tabs\n          if (newValue < oldValue) {\n            this.previousTab();\n          } else {\n            this.nextTab();\n          }\n        }\n      }\n    },\n    currentTab(newValue) {\n      let index = -1;\n\n      // Ensure only one tab is active at most\n      this.tabs.forEach(($tab, i) => {\n        if (i === newValue && !$tab.disabled) {\n          $tab.localActive = true;\n          index = i;\n        } else {\n          $tab.localActive = false;\n        }\n      });\n\n      // Update the v-model\n      this.$emit(MODEL_EVENT_NAME, index);\n    },\n    // If tabs added, removed, or re-ordered, we emit a `changed` event\n    tabs(newValue, oldValue) {\n      // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n      // if no explicit ID is provided, causing duplicate emits\n      if (!looseEqual(newValue.map($tab => $tab[COMPONENT_UID_KEY]), oldValue.map($tab => $tab[COMPONENT_UID_KEY]))) {\n        // In a `$nextTick()` to ensure `currentTab` has been set first\n        this.$nextTick(() => {\n          // We emit shallow copies of the new and old arrays of tabs,\n          // to prevent users from potentially mutating the internal arrays\n          this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n        });\n      }\n    },\n    // Each `<b-tab>` will register/unregister itself\n    // We use this to detect when tabs are added/removed\n    // to trigger the update of the tabs\n    registeredTabs() {\n      this.updateTabs();\n    }\n  },\n  created() {\n    // Create private non-reactive props\n    this.$_observer = null;\n  },\n  mounted() {\n    this.setObserver(true);\n  },\n  beforeDestroy() {\n    this.setObserver(false);\n    // Ensure no references to child instances exist\n    this.tabs = [];\n  },\n  methods: {\n    registerTab($tab) {\n      if (!arrayIncludes(this.registeredTabs, $tab)) {\n        this.registeredTabs.push($tab);\n      }\n    },\n    unregisterTab($tab) {\n      this.registeredTabs = this.registeredTabs.slice().filter($t => $t !== $tab);\n    },\n    // DOM observer is needed to detect changes in order of tabs\n    setObserver() {\n      let on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.$_observer && this.$_observer.disconnect();\n      this.$_observer = null;\n      if (on) {\n        /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n        const handler = () => {\n          this.$nextTick(() => {\n            requestAF(() => {\n              this.updateTabs();\n            });\n          });\n        };\n\n        // Watch for changes to `<b-tab>` sub components\n        this.$_observer = observeDom(this.$refs.content, handler, {\n          childList: true,\n          subtree: false,\n          attributes: true,\n          attributeFilter: ['id']\n        });\n      }\n    },\n    getTabs() {\n      const $tabs = this.registeredTabs;\n      // Dropped intentionally\n      // .filter(\n      //   $tab => $tab.$children.filter($t => $t && $t._isTab).length === 0\n      // )\n\n      // DOM Order of Tabs\n      let order = [];\n      /* istanbul ignore next: too difficult to test */\n      if (IS_BROWSER && $tabs.length > 0) {\n        // We rely on the DOM when mounted to get the \"true\" order of the `<b-tab>` children\n        // `querySelectorAll()` always returns elements in document order, regardless of\n        // order specified in the selector\n        const selector = $tabs.map($tab => `#${$tab.safeId()}`).join(', ');\n        order = selectAll(selector, this.$el).map($el => $el.id).filter(identity);\n      }\n\n      // Stable sort keeps the original order if not found in the `order` array,\n      // which will be an empty array before mount\n      return stableSort($tabs, (a, b) => order.indexOf(a.safeId()) - order.indexOf(b.safeId()));\n    },\n    updateTabs() {\n      const $tabs = this.getTabs();\n\n      // Find last active non-disabled tab in current tabs\n      // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n      let tabIndex = $tabs.indexOf($tabs.slice().reverse().find($tab => $tab.localActive && !$tab.disabled));\n\n      // Else try setting to `currentTab`\n      if (tabIndex < 0) {\n        const {\n          currentTab\n        } = this;\n        if (currentTab >= $tabs.length) {\n          // Handle last tab being removed, so find the last non-disabled tab\n          tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n        } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n          // Current tab is not disabled\n          tabIndex = currentTab;\n        }\n      }\n\n      // Else find first non-disabled tab in current tabs\n      if (tabIndex < 0) {\n        tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n      }\n\n      // Ensure only one tab is active at a time\n      $tabs.forEach(($tab, index) => {\n        $tab.localActive = index === tabIndex;\n      });\n      this.tabs = $tabs;\n      this.currentTab = tabIndex;\n    },\n    // Find a button that controls a tab, given the tab reference\n    // Returns the button vm instance\n    getButtonForTab($tab) {\n      return (this.$refs.buttons || []).find($btn => $btn.tab === $tab);\n    },\n    // Force a button to re-render its content, given a `<b-tab>` instance\n    // Called by `<b-tab>` on `update()`\n    updateButton($tab) {\n      const $button = this.getButtonForTab($tab);\n      if ($button && $button.$forceUpdate) {\n        $button.$forceUpdate();\n      }\n    },\n    // Activate a tab given a `<b-tab>` instance\n    // Also accessed by `<b-tab>`\n    activateTab($tab) {\n      const {\n        currentTab,\n        tabs: $tabs\n      } = this;\n      let result = false;\n      if ($tab) {\n        const index = $tabs.indexOf($tab);\n        if (index !== currentTab && index > -1 && !$tab.disabled) {\n          const tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n            cancelable: true,\n            vueTarget: this,\n            componentId: this.safeId()\n          });\n          this.$emit(tabEvent.type, index, currentTab, tabEvent);\n          if (!tabEvent.defaultPrevented) {\n            this.currentTab = index;\n            result = true;\n          }\n        }\n      }\n\n      // Couldn't set tab, so ensure v-model is up to date\n      /* istanbul ignore next: should rarely happen */\n      if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n        this.$emit(MODEL_EVENT_NAME, currentTab);\n      }\n      return result;\n    },\n    // Deactivate a tab given a `<b-tab>` instance\n    // Accessed by `<b-tab>`\n    deactivateTab($tab) {\n      if ($tab) {\n        // Find first non-disabled tab that isn't the one being deactivated\n        // If no tabs are available, then don't deactivate current tab\n        return this.activateTab(this.tabs.filter($t => $t !== $tab).find(notDisabled));\n      }\n      /* istanbul ignore next: should never/rarely happen */\n      return false;\n    },\n    // Focus a tab button given its `<b-tab>` instance\n    focusButton($tab) {\n      // Wrap in `$nextTick()` to ensure DOM has completed rendering\n      this.$nextTick(() => {\n        attemptFocus(this.getButtonForTab($tab));\n      });\n    },\n    // Emit a click event on a specified `<b-tab>` component instance\n    emitTabClick(tab, event) {\n      if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n        tab.$emit(EVENT_NAME_CLICK, event);\n      }\n    },\n    // Click handler\n    clickTab($tab, event) {\n      this.activateTab($tab);\n      this.emitTabClick($tab, event);\n    },\n    // Move to first non-disabled tab\n    firstTab(focus) {\n      const $tab = this.tabs.find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to previous non-disabled tab\n    previousTab(focus) {\n      const currentIndex = mathMax(this.currentTab, 0);\n      const $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to next non-disabled tab\n    nextTab(focus) {\n      const currentIndex = mathMax(this.currentTab, -1);\n      const $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    },\n    // Move to last non-disabled tab\n    lastTab(focus) {\n      const $tab = this.tabs.slice().reverse().find(notDisabled);\n      if (this.activateTab($tab) && focus) {\n        this.focusButton($tab);\n        this.emitTabClick($tab, focus);\n      }\n    }\n  },\n  render(h) {\n    const {\n      align,\n      end,\n      fill,\n      firstTab,\n      justified,\n      lastTab,\n      nextTab,\n      noKeyNav,\n      noNavStyle,\n      pills,\n      previousTab,\n      small,\n      tabs: $tabs\n    } = this;\n\n    // Currently active tab\n    const $activeTab = $tabs.find($tab => $tab.localActive && !$tab.disabled);\n\n    // Tab button to allow focusing when no active tab found (keynav only)\n    const $fallbackTab = $tabs.find($tab => !$tab.disabled);\n\n    // For each `<b-tab>` found create the tab buttons\n    const $buttons = $tabs.map(($tab, index) => {\n      const {\n        safeId\n      } = $tab;\n\n      // Ensure at least one tab button is focusable when keynav enabled (if possible)\n      let tabIndex = null;\n      if (!noKeyNav) {\n        // Buttons are not in tab index unless active, or a fallback tab\n        tabIndex = -1;\n        if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n          // Place tab button in tab sequence\n          tabIndex = null;\n        }\n      }\n      return h(BVTabButton, {\n        props: {\n          controls: safeId ? safeId() : null,\n          id: $tab.controlledBy || (safeId ? safeId(`_BV_tab_button_`) : null),\n          noKeyNav,\n          posInSet: index + 1,\n          setSize: $tabs.length,\n          tab: $tab,\n          tabIndex\n        },\n        on: {\n          [EVENT_NAME_CLICK]: event => {\n            this.clickTab($tab, event);\n          },\n          [EVENT_NAME_FIRST]: firstTab,\n          [EVENT_NAME_PREV]: previousTab,\n          [EVENT_NAME_NEXT]: nextTab,\n          [EVENT_NAME_LAST]: lastTab\n        },\n        key: $tab[COMPONENT_UID_KEY] || index,\n        ref: 'buttons',\n        // Needed to make `this.$refs.buttons` an array\n        [REF_FOR_KEY]: true\n      });\n    });\n    let $nav = h(BNav, {\n      class: this.navClass,\n      attrs: {\n        role: 'tablist',\n        id: this.safeId('_BV_tab_controls_')\n      },\n      props: {\n        fill,\n        justified,\n        align,\n        tabs: !noNavStyle && !pills,\n        pills: !noNavStyle && pills,\n        small\n      },\n      ref: 'nav'\n    }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n    $nav = h('div', {\n      class: this.navWrapperClass,\n      key: 'bv-tabs-nav'\n    }, [$nav]);\n    const $children = this.normalizeSlot() || [];\n    let $empty = h();\n    if ($children.length === 0) {\n      $empty = h('div', {\n        class: ['tab-pane', 'active'],\n        key: 'bv-empty-tab'\n      }, this.normalizeSlot(SLOT_NAME_EMPTY));\n    }\n    const $content = h('div', {\n      staticClass: 'tab-content',\n      class: this.contentClass,\n      attrs: {\n        id: this.safeId('_BV_tab_container_')\n      },\n      key: 'bv-content',\n      ref: 'content'\n    }, [$children, $empty]);\n\n    // Render final output\n    return h(this.tag, {\n      staticClass: 'tabs',\n      attrs: {\n        id: this.safeId()\n      }\n    }, [end ? $content : h(), $nav, end ? h() : $content]);\n  }\n});\n\nexport { BTabs, props };\n","import { BTabs } from '../../../../vendor/bootstrap-vue/src/components/tabs/tabs';\nimport { tabsButtonDefaults } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst validatorHelper = obj => Object.keys(obj).every(val => val === 'text' || val === 'attributes');\nvar script = {\n  name: 'GlTabs',\n  components: {\n    BTabs,\n    GlButton\n  },\n  inheritAttrs: false,\n  props: {\n    actionPrimary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionSecondary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    actionTertiary: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: obj => validatorHelper(obj)\n    },\n    contentClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    navClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    justified: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Sync active tab with query string parameters. Allows for deep linking into specific tabs.\n     */\n    syncActiveTabWithQueryParams: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Name to use for query string parameter.\n     */\n    queryParamName: {\n      type: String,\n      required: false,\n      default: 'tab'\n    },\n    value: {\n      type: Number,\n      required: false,\n      default: 0\n    }\n  },\n  data() {\n    return {\n      activeTabIndex: 0\n    };\n  },\n  computed: {\n    hasActions() {\n      return [this.actionPrimary, this.actionSecondary, this.actionTertiary].some(Boolean);\n    },\n    listeners() {\n      return {\n        ...this.$listeners,\n        input: this.handleInput\n      };\n    }\n  },\n  watch: {\n    value: {\n      handler(newValue) {\n        if (this.activeTabIndex !== newValue) {\n          this.activeTabIndex = newValue;\n        }\n      },\n      immediate: true\n    }\n  },\n  mounted() {\n    if (this.syncActiveTabWithQueryParams) {\n      this.syncActiveTabFromQueryParams();\n      window.addEventListener('popstate', this.syncActiveTabFromQueryParams);\n    }\n\n    // Because we are manually binding `value` attribute to `b-tabs` the `input`\n    // event is no longer automatically fired when the component is mounted.\n    // To maintain parity with original `b-tabs` functionality\n    // we manually fire the `input` event when the component is mounted.\n    this.$emit('input', this.activeTabIndex);\n  },\n  destroyed() {\n    window.removeEventListener('popstate', this.syncActiveTabFromQueryParams);\n  },\n  methods: {\n    buttonBinding(prop, name) {\n      if (!prop.attributes) {\n        return tabsButtonDefaults[name];\n      }\n      return prop.attributes;\n    },\n    primary() {\n      this.$emit('primary');\n    },\n    secondary() {\n      this.$emit('secondary');\n    },\n    tertiary() {\n      this.$emit('tertiary');\n    },\n    /**\n     * When the query parameter is updated, update the active tab to match.\n     */\n    async syncActiveTabFromQueryParams() {\n      await this.$nextTick();\n      const queryParamValue = this.getQueryParamValue();\n      const tabIndexToActivate = this.getTabs().findIndex((tab, tabIndex) => this.getTabQueryParamValue(tabIndex) === queryParamValue);\n      this.activeTabIndex = tabIndexToActivate !== -1 ? tabIndexToActivate : 0;\n    },\n    /**\n     * Returns a list of all <b-tab> instances associated with this tab control.\n     */\n    getTabs() {\n      return this.$refs.bTabs.getTabs();\n    },\n    /**\n     * Get the value of the query param as defined by the `queryParamName` prop.\n     */\n    getQueryParamValue() {\n      const searchParams = new URLSearchParams(window.location.search);\n      return searchParams.get(this.queryParamName);\n    },\n    /**\n     * Set the value of the query param as defined by the `queryParamName` prop.\n     * This method does nothing if the query param is already up to date.\n     */\n    setQueryParamValueIfNecessary(tabIndex) {\n      const currentQueryParamValue = this.getQueryParamValue();\n      const newQueryParamValue = this.getTabQueryParamValue(tabIndex);\n\n      // If the current query parameter is already up-to-date,\n      // avoid creating a duplicate history entry.\n      if (tabIndex === 0 && !currentQueryParamValue || tabIndex !== 0 && currentQueryParamValue === newQueryParamValue) {\n        return;\n      }\n      const searchParams = new URLSearchParams(window.location.search);\n      searchParams.set(this.queryParamName, newQueryParamValue);\n      window.history.pushState({}, '', `${window.location.pathname}?${searchParams.toString()}`);\n    },\n    /**\n     * Returns the query param value for a tab.\n     * Defaults to the tab index unless the `query-param-value` attribute is set.\n     */\n    getTabQueryParamValue(tabIndex) {\n      const tab = this.getTabs()[tabIndex];\n      return (tab === null || tab === void 0 ? void 0 : tab.$attrs['query-param-value']) || tabIndex.toString();\n    },\n    /**\n     * Event handler for `input` event.\n     */\n    handleInput(tabIndex) {\n      this.$emit('input', tabIndex);\n      this.activeTabIndex = tabIndex;\n      if (this.syncActiveTabWithQueryParams) {\n        this.setQueryParamValueIfNecessary(tabIndex);\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',_vm._g(_vm._b({ref:\"bTabs\",staticClass:\"gl-tabs\",attrs:{\"no-nav-style\":true,\"no-fade\":true,\"active-nav-item-class\":\"gl-tab-nav-item-active\",\"content-class\":[_vm.contentClass, 'gl-tab-content'],\"nav-class\":[_vm.navClass, 'gl-tabs-nav'],\"justified\":_vm.justified,\"value\":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:\"tabs-start\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-start\",attrs:{\"data-testid\":\"actions-tabs-start\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null,(_vm.hasActions)?{key:\"tabs-end\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-end\",attrs:{\"data-testid\":\"actions-tabs-end\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionPrimary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionSecondary.text)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n        \"+_vm._s(_vm.actionTertiary.text)+\"\\n      \")]):_vm._e()],1)]},proxy:true}:null],null,true)},'b-tabs',_vm.$attrs,false),_vm.listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { __, s__ } from '~/locale';\nimport { STATUS_LABELS } from './constants';\n\nexport const getStatusLabel = (status) => STATUS_LABELS[status] ?? s__('IncidentManagement|None');\n\nexport const todoLabel = (hasTodo) => {\n  return hasTodo ? __('Mark as done') : __('Add a to-do item');\n};\n\nexport const updateGlobalTodoCount = (delta) => {\n  // Optimistic update of user counts\n  document.dispatchEvent(new CustomEvent('todo:toggle', { detail: { delta } }));\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueEscalationPolicy\"},\"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\":\"issue\"},\"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\",\"alias\":{\"kind\":\"Name\",\"value\":\"attribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"escalationPolicy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"EscalationPolicyFragment\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":294}};\n    doc.loc.source = {\"body\":\"#import \\\"./escalation_policy.fragment.graphql\\\"\\n\\nquery issueEscalationPolicy($fullPath: ID!, $iid: String!) {\\n  workspace: project(fullPath: $fullPath) {\\n    id\\n    issuable: issue(iid: $iid) {\\n      id\\n      attribute: escalationPolicy {\\n        ...EscalationPolicyFragment\\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(\"./escalation_policy.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[\"issueEscalationPolicy\"] = oneQuery(doc, \"issueEscalationPolicy\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-shrink-0\",attrs:{\"icon\":\"lock\",\"title\":_vm.title,\"aria-label\":_vm.title,\"variant\":\"warning\",\"data-testid\":\"locked-badge\"}})\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!./locked_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./locked_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlTooltipDirective } from '@gitlab/ui';\nimport { issuableTypeText } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n  components: {\n    GlBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    issuableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    title() {\n      return sprintf(\n        __('The discussion in this %{issuable} is locked. Only project members can comment.'),\n        {\n          issuable: issuableTypeText[this.issuableType],\n        },\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-badge\n    v-gl-tooltip\n    icon=\"lock\"\n    :title=\"title\"\n    :aria-label=\"title\"\n    variant=\"warning\"\n    data-testid=\"locked-badge\"\n    class=\"gl-shrink-0\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./locked_badge.vue?vue&type=template&id=42bccf50\"\nimport script from \"./locked_badge.vue?vue&type=script&lang=js\"\nexport * from \"./locked_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","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!./collapsed_assignee.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!./collapsed_assignee.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport AssigneeAvatar from './assignee_avatar.vue';\nimport UserNameWithStatus from './user_name_with_status.vue';\n\nexport default {\n  components: {\n    GlButton,\n    AssigneeAvatar,\n    UserNameWithStatus,\n  },\n  props: {\n    user: {\n      type: Object,\n      required: true,\n    },\n    issuableType: {\n      type: String,\n      required: false,\n      default: TYPE_ISSUE,\n    },\n  },\n  computed: {\n    availability() {\n      return this.user?.availability || '';\n    },\n  },\n};\n</script>\n<template>\n  <gl-button variant=\"link\" class=\"!gl-bg-transparent\">\n    <assignee-avatar :user=\"user\" :img-size=\"24\" :issuable-type=\"issuableType\" />\n    <user-name-with-status\n      :name=\"user.name\"\n      :availability=\"availability\"\n      container-classes=\"author\"\n    />\n  </gl-button>\n</template>\n","import { render, staticRenderFns } from \"./collapsed_assignee.vue?vue&type=template&id=e2ee50c4\"\nimport script from \"./collapsed_assignee.vue?vue&type=script&lang=js\"\nexport * from \"./collapsed_assignee.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-button',{staticClass:\"!gl-bg-transparent\",attrs:{\"variant\":\"link\"}},[_c('assignee-avatar',{attrs:{\"user\":_vm.user,\"img-size\":24,\"issuable-type\":_vm.issuableType}}),_vm._v(\" \"),_c('user-name-with-status',{attrs:{\"name\":_vm.user.name,\"availability\":_vm.availability,\"container-classes\":\"author\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\nimport { isUserBusy } from '~/set_status_modal/utils';\nimport CollapsedAssignee from './collapsed_assignee.vue';\n\nconst DEFAULT_MAX_COUNTER = 99;\nconst DEFAULT_RENDER_COUNT = 5;\n\nconst generateCollapsedAssigneeTooltip = ({ renderUsers, allUsers, tooltipTitleMergeStatus }) => {\n  const names = renderUsers.map(({ name, availability }) => {\n    if (availability && isUserBusy(availability)) {\n      return sprintf(__('%{name} (Busy)'), { name });\n    }\n    return name;\n  });\n\n  if (!allUsers.length) {\n    return __('Assignees');\n  }\n  if (allUsers.length > names.length) {\n    names.push(sprintf(__('+ %{amount} more'), { amount: allUsers.length - names.length }));\n  }\n  const text = names.join(', ');\n  return tooltipTitleMergeStatus ? `${text} (${tooltipTitleMergeStatus})` : text;\n};\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlButton,\n    CollapsedAssignee,\n    GlIcon,\n  },\n  props: {\n    users: {\n      type: Array,\n      required: true,\n    },\n    issuableType: {\n      type: String,\n      required: false,\n      default: TYPE_ISSUE,\n    },\n  },\n  computed: {\n    isMergeRequest() {\n      return this.issuableType === TYPE_MERGE_REQUEST;\n    },\n    hasNoUsers() {\n      return !this.users.length;\n    },\n    hasMoreThanOneAssignee() {\n      return this.users.length > 1;\n    },\n    hasMoreThanTwoAssignees() {\n      return this.users.length > 2;\n    },\n    allAssigneesCanMerge() {\n      return this.users.every((user) => user.can_merge || user.mergeRequestInteraction?.canMerge);\n    },\n    sidebarAvatarCounter() {\n      if (this.users.length > DEFAULT_MAX_COUNTER) {\n        return `${DEFAULT_MAX_COUNTER}+`;\n      }\n\n      return `+${this.users.length - 1}`;\n    },\n    collapsedUsers() {\n      const collapsedLength = this.hasMoreThanTwoAssignees ? 1 : this.users.length;\n\n      return this.users.slice(0, collapsedLength);\n    },\n    tooltipTitleMergeStatus() {\n      if (!this.isMergeRequest) {\n        return '';\n      }\n\n      const mergeLength = this.users.filter(\n        (u) => u.can_merge || u.mergeRequestInteraction?.canMerge,\n      ).length;\n\n      if (mergeLength === this.users.length) {\n        return '';\n      }\n      if (mergeLength > 0) {\n        return sprintf(__('%{mergeLength}/%{usersLength} can merge'), {\n          mergeLength,\n          usersLength: this.users.length,\n        });\n      }\n\n      return this.users.length === 1 ? __('cannot merge') : __('no one can merge');\n    },\n    tooltipTitle() {\n      const maxRender = Math.min(DEFAULT_RENDER_COUNT, this.users.length);\n      const renderUsers = this.users.slice(0, maxRender);\n      return generateCollapsedAssigneeTooltip({\n        renderUsers,\n        allUsers: this.users,\n        tooltipTitleMergeStatus: this.tooltipTitleMergeStatus,\n      });\n    },\n\n    tooltipOptions() {\n      return { container: 'body', placement: 'left', boundary: 'viewport' };\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    v-gl-tooltip=\"tooltipOptions\"\n    :class=\"{ 'multiple-users gl-relative': hasMoreThanOneAssignee }\"\n    :title=\"tooltipTitle\"\n    class=\"sidebar-collapsed-icon sidebar-collapsed-user\"\n  >\n    <gl-icon v-if=\"hasNoUsers\" name=\"user\" :aria-label=\"__('None')\" />\n    <collapsed-assignee\n      v-for=\"user in collapsedUsers\"\n      :key=\"user.id\"\n      :user=\"user\"\n      :issuable-type=\"issuableType\"\n    />\n    <gl-button v-if=\"hasMoreThanTwoAssignees\" variant=\"link\" class=\"!gl-bg-transparent\">\n      <span class=\"avatar-counter sidebar-avatar-counter gl-flex gl-items-center gl-pl-3\">\n        {{ sidebarAvatarCounter }}\n      </span>\n      <gl-icon\n        v-if=\"isMergeRequest && !allAssigneesCanMerge\"\n        name=\"warning-solid\"\n        aria-hidden=\"true\"\n        class=\"merge-icon\"\n      />\n    </gl-button>\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!./collapsed_assignee_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!./collapsed_assignee_list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./collapsed_assignee_list.vue?vue&type=template&id=483c5258\"\nimport script from \"./collapsed_assignee_list.vue?vue&type=script&lang=js\"\nexport * from \"./collapsed_assignee_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.tooltipOptions),expression:\"tooltipOptions\"}],staticClass:\"sidebar-collapsed-icon sidebar-collapsed-user\",class:{ 'multiple-users gl-relative': _vm.hasMoreThanOneAssignee },attrs:{\"title\":_vm.tooltipTitle}},[(_vm.hasNoUsers)?_c('gl-icon',{attrs:{\"name\":\"user\",\"aria-label\":_vm.__('None')}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.collapsedUsers),function(user){return _c('collapsed-assignee',{key:user.id,attrs:{\"user\":user,\"issuable-type\":_vm.issuableType}})}),_vm._v(\" \"),(_vm.hasMoreThanTwoAssignees)?_c('gl-button',{staticClass:\"!gl-bg-transparent\",attrs:{\"variant\":\"link\"}},[_c('span',{staticClass:\"avatar-counter sidebar-avatar-counter gl-flex gl-items-center gl-pl-3\"},[_vm._v(\"\\n      \"+_vm._s(_vm.sidebarAvatarCounter)+\"\\n    \")]),_vm._v(\" \"),(_vm.isMergeRequest && !_vm.allAssigneesCanMerge)?_c('gl-icon',{staticClass:\"merge-icon\",attrs:{\"name\":\"warning-solid\",\"aria-hidden\":\"true\"}}):_vm._e()],1):_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!./copy_email_to_clipboard.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!./copy_email_to_clipboard.vue?vue&type=script&lang=js\"","<script>\nimport CopyableField from './copyable_field.vue';\n\nexport default {\n  components: {\n    CopyableField,\n  },\n  props: {\n    issueEmailAddress: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <copyable-field\n    data-testid=\"copy-forward-email\"\n    :name=\"s__('RightSidebar|Issue email')\"\n    :clipboard-tooltip-text=\"s__('RightSidebar|Copy email address')\"\n    :value=\"issueEmailAddress\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./copy_email_to_clipboard.vue?vue&type=template&id=7ed445fa\"\nimport script from \"./copy_email_to_clipboard.vue?vue&type=script&lang=js\"\nexport * from \"./copy_email_to_clipboard.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('copyable-field',{attrs:{\"data-testid\":\"copy-forward-email\",\"name\":_vm.s__('RightSidebar|Issue email'),\"clipboard-tooltip-text\":_vm.s__('RightSidebar|Copy email address'),\"value\":_vm.issueEmailAddress}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport {\n  INCIDENTS_I18N as i18n,\n  STATUS_ACKNOWLEDGED,\n  STATUS_TRIGGERED,\n  STATUS_RESOLVED,\n} from '../../constants';\nimport { getStatusLabel } from '../../utils';\n\nconst STATUS_LIST = [STATUS_TRIGGERED, STATUS_ACKNOWLEDGED, STATUS_RESOLVED];\n\nexport default {\n  i18n,\n  STATUS_LIST,\n  components: {\n    GlCollapsibleListbox,\n  },\n  props: {\n    value: {\n      type: String,\n      required: false,\n      default: null,\n      validator(value) {\n        return [...STATUS_LIST, null].includes(value);\n      },\n    },\n    headerText: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    statusSubtexts: {\n      type: Object,\n      required: false,\n      default() {\n        return {};\n      },\n    },\n  },\n  data() {\n    return {\n      selected: this.value,\n    };\n  },\n  computed: {\n    statusDropdownOptions() {\n      return this.$options.STATUS_LIST.map((status) => ({\n        text: this.getStatusLabel(status),\n        subtext: this.statusSubtexts[status],\n        value: status,\n      }));\n    },\n    currentStatusLabel() {\n      return this.getStatusLabel(this.value);\n    },\n  },\n\n  methods: {\n    show() {\n      this.$refs.dropdown.open();\n    },\n    hide() {\n      this.$refs.dropdown.close();\n    },\n    getStatusLabel,\n  },\n};\n</script>\n\n<template>\n  <gl-collapsible-listbox\n    ref=\"dropdown\"\n    v-model=\"selected\"\n    :header-text=\"headerText\"\n    block\n    :toggle-text=\"currentStatusLabel\"\n    :items=\"statusDropdownOptions\"\n    toggle-class=\"dropdown-menu-toggle gl-mb-2\"\n    data-testid=\"escalation-status-dropdown\"\n    @select=\"$emit('input', selected)\"\n  >\n    <template #list-item=\"{ item }\">\n      <span class=\"gl-block\">{{ item.text }}</span>\n      <span v-if=\"item.subtext\" class=\"gl-text-sm gl-text-subtle\">{{ item.subtext }}</span>\n    </template>\n  </gl-collapsible-listbox>\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!./escalation_status.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!./escalation_status.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./escalation_status.vue?vue&type=template&id=2b732154\"\nimport script from \"./escalation_status.vue?vue&type=script&lang=js\"\nexport * from \"./escalation_status.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-collapsible-listbox',{ref:\"dropdown\",attrs:{\"header-text\":_vm.headerText,\"block\":\"\",\"toggle-text\":_vm.currentStatusLabel,\"items\":_vm.statusDropdownOptions,\"toggle-class\":\"dropdown-menu-toggle gl-mb-2\",\"data-testid\":\"escalation-status-dropdown\"},on:{\"select\":function($event){return _vm.$emit('input', _vm.selected)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('span',{staticClass:\"gl-block\"},[_vm._v(_vm._s(item.text))]),_vm._v(\" \"),(item.subtext)?_c('span',{staticClass:\"gl-text-sm gl-text-subtle\"},[_vm._v(_vm._s(item.subtext))]):_vm._e()]}}]),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})\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!./escalation_status.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!./escalation_status.vue?vue&type=script&lang=js\"","<script>\nimport EscalationStatus from '~/sidebar/components/incidents/escalation_status.vue';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { i18nStatusHeaderText, STATUS_SUBTEXTS } from '../../constants';\n\nexport default {\n  i18n: i18nStatusHeaderText,\n\n  components: {\n    EscalationStatus,\n  },\n  mixins: [glFeatureFlagMixin()],\n  props: {\n    // eslint-disable-next-line @gitlab/vue-require-required-key\n    value: EscalationStatus.props.value,\n  },\n  computed: {\n    headerText() {\n      return this.escalationPoliciesEnabled ? this.$options.i18n : '';\n    },\n    statusSubtexts() {\n      return this.escalationPoliciesEnabled ? STATUS_SUBTEXTS : {};\n    },\n\n    escalationPoliciesEnabled() {\n      return this.glFeatures.escalationPolicies;\n    },\n  },\n  methods: {\n    show() {\n      this.$refs.escalationStatus.show();\n    },\n    // Pass through to wrapped component\n    hide() {\n      this.$refs.escalationStatus.hide();\n    },\n  },\n};\n</script>\n\n<template>\n  <escalation-status\n    ref=\"escalationStatus\"\n    :header-text=\"headerText\"\n    :status-subtexts=\"statusSubtexts\"\n    :value=\"value\"\n    v-bind=\"$attrs\"\n    v-on=\"$listeners\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./escalation_status.vue?vue&type=template&id=69cc828d\"\nimport script from \"./escalation_status.vue?vue&type=script&lang=js\"\nexport * from \"./escalation_status.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('escalation-status',_vm._g(_vm._b({ref:\"escalationStatus\",attrs:{\"header-text\":_vm.headerText,\"status-subtexts\":_vm.statusSubtexts,\"value\":_vm.value}},'escalation-status',_vm.$attrs,false),_vm.$listeners))\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!./sidebar_escalation_status.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_escalation_status.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { logError } from '~/lib/logger';\nimport EscalationStatus from 'ee_else_ce/sidebar/components/incidents/escalation_status.vue';\nimport { INCIDENTS_I18N as i18n } from '../../constants';\nimport { escalationStatusQuery, escalationStatusMutation } from '../../queries/constants';\nimport { getStatusLabel } from '../../utils';\nimport SidebarEditableItem from '../sidebar_editable_item.vue';\n\nexport default {\n  i18n,\n  components: {\n    EscalationStatus,\n    SidebarEditableItem,\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    projectPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      status: null,\n      isUpdating: false,\n    };\n  },\n  apollo: {\n    status: {\n      query() {\n        return escalationStatusQuery;\n      },\n      variables() {\n        return {\n          fullPath: this.projectPath,\n          iid: this.iid,\n        };\n      },\n      update(data) {\n        return data.workspace?.issuable?.escalationStatus;\n      },\n      error(error) {\n        const message = this.$options.i18n.fetchError;\n        createAlert({ message });\n        logError(message, error);\n      },\n    },\n  },\n  computed: {\n    isLoading() {\n      return this.$apollo.queries.status.loading;\n    },\n    currentStatusLabel() {\n      return getStatusLabel(this.status);\n    },\n    tooltipText() {\n      return `${this.$options.i18n.title}: ${this.currentStatusLabel}`;\n    },\n  },\n  methods: {\n    updateStatus(status) {\n      this.isUpdating = true;\n      this.closeSidebar();\n      return this.$apollo\n        .mutate({\n          mutation: escalationStatusMutation,\n          variables: {\n            status,\n            iid: this.iid,\n            projectPath: this.projectPath,\n          },\n        })\n        .then(({ data: { issueSetEscalationStatus } }) => {\n          this.status = issueSetEscalationStatus.issue.escalationStatus;\n        })\n        .catch((error) => {\n          const message = this.$options.i18n.updateError;\n          createAlert({ message });\n          logError(message, error);\n        })\n        .finally(() => {\n          this.isUpdating = false;\n        });\n    },\n    closeSidebar() {\n      this.close();\n      this.$refs.editable.collapse();\n    },\n    open() {\n      this.$refs.escalationStatus.show();\n    },\n    close() {\n      this.$refs.escalationStatus.hide();\n    },\n  },\n};\n</script>\n\n<template>\n  <sidebar-editable-item\n    ref=\"editable\"\n    :title=\"$options.i18n.title\"\n    :initial-loading=\"isLoading\"\n    :loading=\"isUpdating\"\n    @open=\"open\"\n    @close=\"close\"\n  >\n    <template #default>\n      <escalation-status ref=\"escalationStatus\" :value=\"status\" @input=\"updateStatus\" />\n    </template>\n    <template #collapsed>\n      <div\n        v-gl-tooltip.viewport.left=\"tooltipText\"\n        class=\"sidebar-collapsed-icon\"\n        data-testid=\"status-icon\"\n      >\n        <gl-icon name=\"status\" :size=\"16\" />\n      </div>\n      <span class=\"hide-collapsed gl-text-subtle\">{{ currentStatusLabel }}</span>\n    </template>\n  </sidebar-editable-item>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_escalation_status.vue?vue&type=template&id=62aac7a7\"\nimport script from \"./sidebar_escalation_status.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_escalation_status.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('sidebar-editable-item',{ref:\"editable\",attrs:{\"title\":_vm.$options.i18n.title,\"initial-loading\":_vm.isLoading,\"loading\":_vm.isUpdating},on:{\"open\":_vm.open,\"close\":_vm.close},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('escalation-status',{ref:\"escalationStatus\",attrs:{\"value\":_vm.status},on:{\"input\":_vm.updateStatus}})]},proxy:true},{key:\"collapsed\",fn:function(){return [_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",value:(_vm.tooltipText),expression:\"tooltipText\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"data-testid\":\"status-icon\"}},[_c('gl-icon',{attrs:{\"name\":\"status\",\"size\":16}})],1),_vm._v(\" \"),_c('span',{staticClass:\"hide-collapsed gl-text-subtle\"},[_vm._v(_vm._s(_vm.currentStatusLabel))])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlDropdownItem } from '@gitlab/ui';\nimport { TYPENAME_MILESTONE } from '~/graphql_shared/constants';\nimport { convertToGraphQLId, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport {\n  TYPE_ISSUE,\n  TYPE_MERGE_REQUEST,\n  WORKSPACE_GROUP,\n  WORKSPACE_PROJECT,\n} from '~/issues/constants';\nimport { __ } from '~/locale';\nimport { IssuableAttributeType } from '../../constants';\nimport SidebarDropdown from '../sidebar_dropdown.vue';\n\nconst noMilestone = {\n  id: 0,\n  title: __('No milestone'),\n};\n\nconst placeholderMilestone = {\n  id: -1,\n  title: __('Select milestone'),\n};\n\nexport default {\n  issuableAttribute: IssuableAttributeType.Milestone,\n  components: {\n    GlDropdownItem,\n    SidebarDropdown,\n  },\n  props: {\n    attrWorkspacePath: {\n      required: true,\n      type: String,\n    },\n    canAdminMilestone: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n      validator(value) {\n        return [TYPE_ISSUE, TYPE_MERGE_REQUEST].includes(value);\n      },\n    },\n    inputName: {\n      type: String,\n      required: false,\n      default: 'update[milestone_id]',\n    },\n    milestoneId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    milestoneTitle: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    projectMilestonesPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    workspaceType: {\n      type: String,\n      required: true,\n      validator(value) {\n        return [WORKSPACE_GROUP, WORKSPACE_PROJECT].includes(value);\n      },\n    },\n  },\n  data() {\n    return {\n      milestone: this.milestoneId\n        ? {\n            id: convertToGraphQLId(TYPENAME_MILESTONE, this.milestoneId),\n            title: this.milestoneTitle,\n          }\n        : placeholderMilestone,\n    };\n  },\n  computed: {\n    footerItemText() {\n      return this.canAdminMilestone ? __('Manage milestones') : __('View milestones');\n    },\n    value() {\n      return this.milestone.id === placeholderMilestone.id\n        ? undefined\n        : getIdFromGraphQLId(this.milestone.id);\n    },\n  },\n  methods: {\n    handleChange(milestone) {\n      this.milestone = milestone.id === null ? noMilestone : milestone;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <input type=\"hidden\" :name=\"inputName\" :value=\"value\" />\n    <sidebar-dropdown\n      :attr-workspace-path=\"attrWorkspacePath\"\n      :current-attribute=\"milestone\"\n      :issuable-attribute=\"$options.issuableAttribute\"\n      :issuable-type=\"issuableType\"\n      :workspace-type=\"workspaceType\"\n      data-testid=\"issuable-milestone-dropdown\"\n      @change=\"handleChange\"\n    >\n      <template #footer>\n        <gl-dropdown-item v-if=\"projectMilestonesPath\" :href=\"projectMilestonesPath\">\n          {{ footerItemText }}\n        </gl-dropdown-item>\n      </template>\n    </sidebar-dropdown>\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!./milestone_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!./milestone_dropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./milestone_dropdown.vue?vue&type=template&id=d7d922a8\"\nimport script from \"./milestone_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./milestone_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.inputName},domProps:{\"value\":_vm.value}}),_vm._v(\" \"),_c('sidebar-dropdown',{attrs:{\"attr-workspace-path\":_vm.attrWorkspacePath,\"current-attribute\":_vm.milestone,\"issuable-attribute\":_vm.$options.issuableAttribute,\"issuable-type\":_vm.issuableType,\"workspace-type\":_vm.workspaceType,\"data-testid\":\"issuable-milestone-dropdown\"},on:{\"change\":_vm.handleChange},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [(_vm.projectMilestonesPath)?_c('gl-dropdown-item',{attrs:{\"href\":_vm.projectMilestonesPath}},[_vm._v(\"\\n        \"+_vm._s(_vm.footerItemText)+\"\\n      \")]):_vm._e()]},proxy:true}])})],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!./move_issues_button.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!./move_issues_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { logError } from '~/lib/logger';\nimport { s__ } from '~/locale';\nimport {\n  WORK_ITEM_TYPE_ENUM_ISSUE,\n  WORK_ITEM_TYPE_ENUM_INCIDENT,\n  WORK_ITEM_TYPE_ENUM_TASK,\n  WORK_ITEM_TYPE_ENUM_TEST_CASE,\n} from '~/work_items/constants';\nimport issuableEventHub from '~/issues/list/eventhub';\nimport getIssuesQuery from 'ee_else_ce/issues/list/queries/get_issues.query.graphql';\nimport getIssuesCountQuery from 'ee_else_ce/issues/list/queries/get_issues_counts.query.graphql';\nimport moveIssueMutation from '../../queries/move_issue.mutation.graphql';\nimport IssuableMoveDropdown from './issuable_move_dropdown.vue';\n\nexport default {\n  name: 'MoveIssuesButton',\n  components: {\n    IssuableMoveDropdown,\n    GlAlert,\n  },\n  props: {\n    projectFullPath: {\n      type: String,\n      required: true,\n    },\n    projectsFetchPath: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      selectedIssuables: [],\n      moveInProgress: false,\n    };\n  },\n  computed: {\n    cannotMoveTasksWarningTitle() {\n      if (this.tasksSelected && this.testCasesSelected) {\n        return s__('Issues|Tasks and test cases can not be moved.');\n      }\n\n      if (this.testCasesSelected) {\n        return s__('Issues|Test cases can not be moved.');\n      }\n\n      return s__('Issues|Tasks can not be moved.');\n    },\n    issuesSelected() {\n      return this.selectedIssuables.some((item) => item.type === WORK_ITEM_TYPE_ENUM_ISSUE);\n    },\n    incidentsSelected() {\n      return this.selectedIssuables.some((item) => item.type === WORK_ITEM_TYPE_ENUM_INCIDENT);\n    },\n    tasksSelected() {\n      return this.selectedIssuables.some((item) => item.type === WORK_ITEM_TYPE_ENUM_TASK);\n    },\n    testCasesSelected() {\n      return this.selectedIssuables.some((item) => item.type === WORK_ITEM_TYPE_ENUM_TEST_CASE);\n    },\n  },\n  mounted() {\n    issuableEventHub.$on('issuables:issuableChecked', this.handleIssuableChecked);\n  },\n  beforeDestroy() {\n    issuableEventHub.$off('issuables:issuableChecked', this.handleIssuableChecked);\n  },\n  methods: {\n    handleIssuableChecked(issuable, value) {\n      if (value) {\n        this.selectedIssuables.push(issuable);\n      } else {\n        const index = this.selectedIssuables.indexOf(issuable);\n        if (index > -1) {\n          this.selectedIssuables.splice(index, 1);\n        }\n      }\n    },\n    moveIssues(targetProject) {\n      const iids = this.selectedIssuables.reduce((result, issueData) => {\n        if (\n          issueData.type === WORK_ITEM_TYPE_ENUM_ISSUE ||\n          issueData.type === WORK_ITEM_TYPE_ENUM_INCIDENT\n        ) {\n          result.push(issueData.iid);\n        }\n        return result;\n      }, []);\n\n      if (iids.length === 0) {\n        return;\n      }\n\n      this.moveInProgress = true;\n      issuableEventHub.$emit('issuables:bulkMoveStarted');\n\n      const promises = iids.map((id) => {\n        return this.moveIssue(id, targetProject);\n      });\n\n      Promise.all(promises)\n        .then((promisesResult) => {\n          let foundError = false;\n\n          for (const promiseResult of promisesResult) {\n            if (promiseResult.data.issueMove?.errors?.length) {\n              foundError = true;\n              logError(\n                `Error moving issue. Error message: ${promiseResult.data.issueMove.errors[0].message}`,\n              );\n            }\n          }\n\n          if (!foundError) {\n            const client = this.$apollo.provider.defaultClient;\n            client.refetchQueries({\n              include: [getIssuesQuery, getIssuesCountQuery],\n            });\n            this.moveInProgress = false;\n            this.selectedIssuables = [];\n            issuableEventHub.$emit('issuables:bulkMoveEnded');\n          } else {\n            throw new Error();\n          }\n        })\n        .catch(() => {\n          this.moveInProgress = false;\n          issuableEventHub.$emit('issuables:bulkMoveEnded');\n\n          createAlert({\n            message: s__(`Issues|There was an error while moving the issues.`),\n          });\n        });\n    },\n    moveIssue(issueIid, targetProject) {\n      return this.$apollo.mutate({\n        mutation: moveIssueMutation,\n        variables: {\n          moveIssueInput: {\n            projectPath: this.projectFullPath,\n            iid: issueIid,\n            targetProjectPath: targetProject.full_path,\n          },\n        },\n      });\n    },\n  },\n  i18n: {\n    dropdownButtonTitle: s__('Issues|Move selected'),\n  },\n};\n</script>\n<template>\n  <div>\n    <issuable-move-dropdown\n      :project-full-path=\"projectFullPath\"\n      :projects-fetch-path=\"projectsFetchPath\"\n      :move-in-progress=\"moveInProgress\"\n      :disabled=\"!issuesSelected && !incidentsSelected\"\n      :dropdown-header-title=\"$options.i18n.dropdownButtonTitle\"\n      :dropdown-button-title=\"$options.i18n.dropdownButtonTitle\"\n      @move-issuable=\"moveIssues\"\n    />\n    <gl-alert v-if=\"tasksSelected || testCasesSelected\" :dismissible=\"false\" variant=\"warning\">\n      {{ cannotMoveTasksWarningTitle }}\n    </gl-alert>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./move_issues_button.vue?vue&type=template&id=7ae2c75c\"\nimport script from \"./move_issues_button.vue?vue&type=script&lang=js\"\nexport * from \"./move_issues_button.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('issuable-move-dropdown',{attrs:{\"project-full-path\":_vm.projectFullPath,\"projects-fetch-path\":_vm.projectsFetchPath,\"move-in-progress\":_vm.moveInProgress,\"disabled\":!_vm.issuesSelected && !_vm.incidentsSelected,\"dropdown-header-title\":_vm.$options.i18n.dropdownButtonTitle,\"dropdown-button-title\":_vm.$options.i18n.dropdownButtonTitle},on:{\"move-issuable\":_vm.moveIssues}}),_vm._v(\" \"),(_vm.tasksSelected || _vm.testCasesSelected)?_c('gl-alert',{attrs:{\"dismissible\":false,\"variant\":\"warning\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.cannotMoveTasksWarningTitle)+\"\\n  \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_reference_widget.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_reference_widget.vue?vue&type=script&lang=js\"","<script>\nimport { __ } from '~/locale';\nimport { referenceQueries } from '../../queries/constants';\nimport CopyableField from './copyable_field.vue';\n\nexport default {\n  components: {\n    CopyableField,\n  },\n  inject: ['fullPath', 'iid'],\n  props: {\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      reference: '',\n    };\n  },\n  apollo: {\n    reference: {\n      query() {\n        return referenceQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: this.iid,\n        };\n      },\n      update(data) {\n        return data.workspace?.issuable?.reference || '';\n      },\n      error(error) {\n        this.$emit('fetch-error', {\n          message: __('An error occurred while fetching reference'),\n          error,\n        });\n      },\n    },\n  },\n  computed: {\n    isLoading() {\n      return this.$apollo.queries.reference.loading;\n    },\n  },\n};\n</script>\n\n<template>\n  <copyable-field\n    class=\"sub-block\"\n    :is-loading=\"isLoading\"\n    :name=\"__('Reference')\"\n    :value=\"reference\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./sidebar_reference_widget.vue?vue&type=template&id=4906c7c8\"\nimport script from \"./sidebar_reference_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_reference_widget.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('copyable-field',{staticClass:\"sub-block\",attrs:{\"is-loading\":_vm.isLoading,\"name\":_vm.__('Reference'),\"value\":_vm.reference}})\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!./sidebar_reviewers_inputs.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_inputs.vue?vue&type=script&lang=js\"","<script>\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { state } from './sidebar_reviewers.vue';\n\nexport default {\n  data() {\n    return state;\n  },\n  computed: {\n    reviewers() {\n      return this.issuable?.reviewers?.nodes || [];\n    },\n  },\n  methods: {\n    getIdFromGraphQLId,\n  },\n};\n</script>\n\n<template>\n  <div>\n    <input\n      v-for=\"reviewer in reviewers\"\n      :key=\"reviewer.id\"\n      type=\"hidden\"\n      name=\"merge_request[reviewer_ids][]\"\n      :value=\"getIdFromGraphQLId(reviewer.id)\"\n      :data-avatar-url=\"reviewer.avatarUrl\"\n      :data-name=\"reviewer.name\"\n      :data-username=\"reviewer.username\"\n      :data-can_merge=\"reviewer.mergeRequestInteraction.canMerge\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_reviewers_inputs.vue?vue&type=template&id=21442096\"\nimport script from \"./sidebar_reviewers_inputs.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_reviewers_inputs.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',_vm._l((_vm.reviewers),function(reviewer){return _c('input',{key:reviewer.id,attrs:{\"type\":\"hidden\",\"name\":\"merge_request[reviewer_ids][]\",\"data-avatar-url\":reviewer.avatarUrl,\"data-name\":reviewer.name,\"data-username\":reviewer.username,\"data-can_merge\":reviewer.mergeRequestInteraction.canMerge},domProps:{\"value\":_vm.getIdFromGraphQLId(reviewer.id)}})}),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!./status_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!./status_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { statusDropdownOptions } from '../../constants';\n\nexport default {\n  components: {\n    GlCollapsibleListbox,\n  },\n  data() {\n    return {\n      status: null,\n      selectedValue: undefined,\n    };\n  },\n  computed: {\n    dropdownText() {\n      const selected = this.$options.statusDropdownOptions.find(\n        (option) => option.value === this.selectedValue,\n      );\n      return selected?.text || this.$options.i18n.defaultDropdownText;\n    },\n  },\n  methods: {\n    handleReset() {\n      this.selectedValue = undefined;\n    },\n  },\n  i18n: {\n    dropdownTitle: __('Change status'),\n    defaultDropdownText: __('Select status'),\n    resetText: __('Reset'),\n  },\n  statusDropdownOptions,\n};\n</script>\n<template>\n  <div>\n    <input type=\"hidden\" name=\"update[state_event]\" :value=\"selectedValue\" />\n    <gl-collapsible-listbox\n      v-model=\"selectedValue\"\n      block\n      :header-text=\"$options.i18n.dropdownTitle\"\n      :reset-button-label=\"$options.i18n.resetText\"\n      :toggle-text=\"dropdownText\"\n      :items=\"$options.statusDropdownOptions\"\n      @reset=\"handleReset\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./status_dropdown.vue?vue&type=template&id=bede5c70\"\nimport script from \"./status_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./status_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"update[state_event]\"},domProps:{\"value\":_vm.selectedValue}}),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"block\":\"\",\"header-text\":_vm.$options.i18n.dropdownTitle,\"reset-button-label\":_vm.$options.i18n.resetText,\"toggle-text\":_vm.dropdownText,\"items\":_vm.$options.statusDropdownOptions},on:{\"reset\":_vm.handleReset},model:{value:(_vm.selectedValue),callback:function ($$v) {_vm.selectedValue=$$v},expression:\"selectedValue\"}})],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!./subscriptions_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!./subscriptions_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { subscriptionsDropdownOptions } from '../../constants';\n\nexport default {\n  subscriptionsDropdownOptions,\n  i18n: {\n    defaultDropdownText: __('Select subscription'),\n    headerText: __('Change subscription'),\n    resetText: __('Reset'),\n  },\n  components: {\n    GlCollapsibleListbox,\n  },\n  data() {\n    return {\n      selectedValue: undefined,\n    };\n  },\n  computed: {\n    dropdownText() {\n      const selected = this.$options.subscriptionsDropdownOptions.find(\n        (option) => option.value === this.selectedValue,\n      );\n      return selected?.text || this.$options.i18n.defaultDropdownText;\n    },\n  },\n  methods: {\n    handleReset() {\n      this.selectedValue = undefined;\n    },\n  },\n};\n</script>\n<template>\n  <div>\n    <input type=\"hidden\" name=\"update[subscription_event]\" :value=\"selectedValue\" />\n    <gl-collapsible-listbox\n      v-model=\"selectedValue\"\n      block\n      :header-text=\"$options.i18n.headerText\"\n      :reset-button-label=\"$options.i18n.resetText\"\n      :toggle-text=\"dropdownText\"\n      :items=\"$options.subscriptionsDropdownOptions\"\n      @reset=\"handleReset\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./subscriptions_dropdown.vue?vue&type=template&id=ac9e51ba\"\nimport script from \"./subscriptions_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./subscriptions_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"update[subscription_event]\"},domProps:{\"value\":_vm.selectedValue}}),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"block\":\"\",\"header-text\":_vm.$options.i18n.headerText,\"reset-button-label\":_vm.$options.i18n.resetText,\"toggle-text\":_vm.dropdownText,\"items\":_vm.$options.subscriptionsDropdownOptions},on:{\"reset\":_vm.handleReset},model:{value:(_vm.selectedValue),callback:function ($$v) {_vm.selectedValue=$$v},expression:\"selectedValue\"}})],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!./sidebar_time_tracking.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_time_tracking.vue?vue&type=script&lang=js\"","<script>\nimport $ from 'jquery';\nimport { intersection } from 'lodash';\n\nimport '~/smart_interval';\n\nimport eventHub from '../../event_hub';\nimport IssuableTimeTracker from './time_tracker.vue';\n\nexport default {\n  components: {\n    IssuableTimeTracker,\n  },\n  props: {\n    fullPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issuableId: {\n      type: String,\n      required: true,\n    },\n    issuableIid: {\n      type: String,\n      required: true,\n    },\n    limitToHours: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canAddTimeEntries: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    canSetTimeEstimate: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  mounted() {\n    this.listenForQuickActions();\n  },\n  methods: {\n    listenForQuickActions() {\n      $(document).on('ajax:success', '.gfm-form', this.quickActionListened);\n\n      eventHub.$on('timeTrackingUpdated', (data) => {\n        this.quickActionListened({ detail: [data] });\n      });\n    },\n    quickActionListened(e) {\n      const data = e.detail[0];\n\n      const subscribedCommands = ['spend_time', 'time_estimate'];\n      let changedCommands;\n      if (data !== undefined) {\n        changedCommands = data.commands_changes ? Object.keys(data.commands_changes) : [];\n      } else {\n        changedCommands = [];\n      }\n      if (changedCommands && intersection(subscribedCommands, changedCommands).length) {\n        eventHub.$emit('timeTracker:refresh');\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"block time-tracking\">\n    <issuable-time-tracker\n      :full-path=\"fullPath\"\n      :issuable-id=\"issuableId\"\n      :issuable-iid=\"issuableIid\"\n      :limit-to-hours=\"limitToHours\"\n      :can-add-time-entries=\"canAddTimeEntries\"\n      :can-set-time-estimate=\"canSetTimeEstimate\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_time_tracking.vue?vue&type=template&id=22c1b5e0\"\nimport script from \"./sidebar_time_tracking.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_time_tracking.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:\"block time-tracking\"},[_c('issuable-time-tracker',{attrs:{\"full-path\":_vm.fullPath,\"issuable-id\":_vm.issuableId,\"issuable-iid\":_vm.issuableIid,\"limit-to-hours\":_vm.limitToHours,\"can-add-time-entries\":_vm.canAddTimeEntries,\"can-set-time-estimate\":_vm.canSetTimeEstimate}})],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!./crm_contacts.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!./crm_contacts.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLink, GlPopover, GlTooltipDirective } from '@gitlab/ui';\nimport { __, n__, sprintf } from '~/locale';\nimport { createAlert } from '~/alert';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport { convertToGraphQLId, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_ISSUE } from '~/graphql_shared/constants';\nimport { DOCS_URL_IN_EE_DIR } from 'jh_else_ce/lib/utils/url_utility';\nimport getIssueCrmContactsQuery from '../../queries/get_issue_crm_contacts.query.graphql';\nimport issueCrmContactsSubscription from '../../queries/issue_crm_contacts.subscription.graphql';\n\nexport default {\n  crmDocsLink: `${DOCS_URL_IN_EE_DIR}/user/crm/`,\n  components: {\n    GlIcon,\n    GlLink,\n    GlPopover,\n    HelpIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    issueId: {\n      type: String,\n      required: true,\n    },\n    groupIssuesPath: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      contacts: [],\n    };\n  },\n  apollo: {\n    contacts: {\n      query: getIssueCrmContactsQuery,\n      variables() {\n        return this.queryVariables;\n      },\n      update(data) {\n        return data?.issue?.customerRelationsContacts?.nodes;\n      },\n      error(error) {\n        createAlert({\n          message: __('Something went wrong trying to load issue contacts.'),\n          error,\n          captureError: true,\n        });\n      },\n      subscribeToMore: {\n        document: issueCrmContactsSubscription,\n        variables() {\n          return this.queryVariables;\n        },\n        updateQuery(prev, { subscriptionData }) {\n          const draftData = subscriptionData?.data?.issueCrmContactsUpdated;\n          if (prev && draftData) return { issue: draftData };\n          return prev;\n        },\n      },\n    },\n  },\n  computed: {\n    shouldShowContacts() {\n      return this.contacts?.length;\n    },\n    queryVariables() {\n      return { id: convertToGraphQLId(TYPENAME_ISSUE, this.issueId) };\n    },\n    contactsLabel() {\n      return sprintf(n__('%{count} contact', '%{count} contacts', this.contactCount), {\n        count: this.contactCount,\n      });\n    },\n    contactCount() {\n      return this.contacts?.length || 0;\n    },\n  },\n  methods: {\n    shouldShowPopover(contact) {\n      return this.popOverData(contact).length > 0;\n    },\n    divider(index) {\n      if (index < this.contactCount - 1) return ',';\n      return '';\n    },\n    popOverData(contact) {\n      return [contact.organization?.name, contact.email, contact.phone, contact.description].filter(\n        Boolean,\n      );\n    },\n    getIssuesPath(contactId) {\n      const id = getIdFromGraphQLId(contactId);\n      return `${this.groupIssuesPath}?crm_contact_id=${id}`;\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div v-gl-tooltip.left.viewport :title=\"contactsLabel\" class=\"sidebar-collapsed-icon\">\n      <gl-icon name=\"users\" />\n      <span> {{ contactCount }} </span>\n    </div>\n    <div class=\"hide-collapsed help-button gl-float-right\">\n      <gl-link :href=\"$options.crmDocsLink\" target=\"_blank\"><help-icon /></gl-link>\n    </div>\n    <div class=\"hide-collapsed gl-font-bold gl-leading-20\">\n      {{ contactsLabel }}\n    </div>\n    <div v-if=\"shouldShowContacts\" class=\"hide-collapsed gl-mt-2 gl-flex gl-flex-wrap\">\n      <div\n        v-for=\"(contact, index) in contacts\"\n        :id=\"`contact_container_${index}`\"\n        :key=\"index\"\n        class=\"gl-pr-2\"\n      >\n        <gl-link :id=\"`contact_${index}`\" :href=\"getIssuesPath(contact.id)\"\n          >{{ contact.firstName }} {{ contact.lastName }}{{ divider(index) }}</gl-link\n        >\n        <gl-popover\n          v-if=\"shouldShowPopover(contact)\"\n          :target=\"`contact_${index}`\"\n          :container=\"`contact_container_${index}`\"\n          triggers=\"hover focus\"\n          placement=\"top\"\n        >\n          <div v-for=\"row in popOverData(contact)\" :key=\"row\">{{ row }}</div>\n        </gl-popover>\n      </div>\n    </div>\n    <div\n      v-else\n      data-testid=\"crm-empty-message\"\n      class=\"hide-collapsed gl-flex gl-items-center gl-text-subtle\"\n    >\n      {{ __('To add active contacts, use /add_contacts.') }}\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./crm_contacts.vue?vue&type=template&id=fde89430\"\nimport script from \"./crm_contacts.vue?vue&type=script&lang=js\"\nexport * from \"./crm_contacts.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',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.contactsLabel}},[_c('gl-icon',{attrs:{\"name\":\"users\"}}),_vm._v(\" \"),_c('span',[_vm._v(\" \"+_vm._s(_vm.contactCount)+\" \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed help-button gl-float-right\"},[_c('gl-link',{attrs:{\"href\":_vm.$options.crmDocsLink,\"target\":\"_blank\"}},[_c('help-icon')],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed gl-font-bold gl-leading-20\"},[_vm._v(\"\\n    \"+_vm._s(_vm.contactsLabel)+\"\\n  \")]),_vm._v(\" \"),(_vm.shouldShowContacts)?_c('div',{staticClass:\"hide-collapsed gl-mt-2 gl-flex gl-flex-wrap\"},_vm._l((_vm.contacts),function(contact,index){return _c('div',{key:index,staticClass:\"gl-pr-2\",attrs:{\"id\":`contact_container_${index}`}},[_c('gl-link',{attrs:{\"id\":`contact_${index}`,\"href\":_vm.getIssuesPath(contact.id)}},[_vm._v(_vm._s(contact.firstName)+\" \"+_vm._s(contact.lastName)+_vm._s(_vm.divider(index)))]),_vm._v(\" \"),(_vm.shouldShowPopover(contact))?_c('gl-popover',{attrs:{\"target\":`contact_${index}`,\"container\":`contact_container_${index}`,\"triggers\":\"hover focus\",\"placement\":\"top\"}},_vm._l((_vm.popOverData(contact)),function(row){return _c('div',{key:row},[_vm._v(_vm._s(row))])}),0):_vm._e()],1)}),0):_c('div',{staticClass:\"hide-collapsed gl-flex gl-items-center gl-text-subtle\",attrs:{\"data-testid\":\"crm-empty-message\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.__('To add active contacts, use /add_contacts.'))+\"\\n  \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('project-select',{attrs:{\"projects-fetch-path\":_vm.projectsAutocompleteEndpoint,\"dropdown-button-title\":_vm.dropdownButtonTitle,\"dropdown-header-title\":_vm.$options.i18n.title,\"move-in-progress\":_vm.moveInProgress},on:{\"move-issuable\":_vm.moveIssue}})\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!./move_issue_button.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!./move_issue_button.vue?vue&type=script&lang=js\"","<script>\nimport ProjectSelect from '~/sidebar/components/move/issuable_move_dropdown.vue';\nimport { __ } from '~/locale';\nimport { createAlert } from '~/alert';\nimport { visitUrl } from '~/lib/utils/url_utility';\nimport moveIssueMutation from '../../queries/move_issue.mutation.graphql';\n\nexport default {\n  name: 'MoveIssueButton',\n  components: { ProjectSelect },\n  inject: ['projectsAutocompleteEndpoint', 'projectFullPath', 'issueIid'],\n\n  i18n: {\n    title: __('Move issue'),\n    titleInProgress: __('Moving issue'),\n    moveErrorMessage: __('An error occurred while moving the issue.'),\n  },\n  data() {\n    return {\n      moveInProgress: false,\n    };\n  },\n  computed: {\n    dropdownButtonTitle() {\n      return this.moveInProgress ? this.$options.i18n.titleInProgress : this.$options.i18n.title;\n    },\n  },\n  methods: {\n    async moveIssue(targetProject) {\n      this.moveInProgress = true;\n\n      try {\n        const { data } = await this.$apollo.mutate({\n          mutation: moveIssueMutation,\n          variables: {\n            moveIssueInput: {\n              projectPath: this.projectFullPath,\n              iid: this.issueIid,\n              targetProjectPath: targetProject.full_path,\n            },\n          },\n        });\n\n        if (!data.issueMove) return;\n\n        const { errors } = data.issueMove;\n        if (errors?.length > 0) {\n          throw new Error(`Error moving the issue. Error message: ${errors[0].message}`);\n        }\n\n        visitUrl(data.issueMove?.issue.webUrl);\n      } catch (error) {\n        createAlert({\n          message: this.$options.i18n.moveErrorMessage,\n          captureError: true,\n          error,\n        });\n      } finally {\n        this.moveInProgress = false;\n      }\n    },\n  },\n};\n</script>\n<template>\n  <project-select\n    :projects-fetch-path=\"projectsAutocompleteEndpoint\"\n    :dropdown-button-title=\"dropdownButtonTitle\"\n    :dropdown-header-title=\"$options.i18n.title\"\n    :move-in-progress=\"moveInProgress\"\n    @move-issuable=\"moveIssue\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./move_issue_button.vue?vue&type=template&id=f71528c0\"\nimport script from \"./move_issue_button.vue?vue&type=script&lang=js\"\nexport * from \"./move_issue_button.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!./confidentiality_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!./confidentiality_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlCollapsibleListbox } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  components: {\n    GlCollapsibleListbox,\n  },\n  data() {\n    return {\n      value: null,\n    };\n  },\n  i18n: {\n    defaultDropdownText: __('Select confidentiality'),\n    headerText: __('Change confidentiality'),\n    resetText: __('Reset'),\n  },\n  computed: {\n    toggleText() {\n      return this.value ? null : this.$options.i18n.defaultDropdownText;\n    },\n  },\n  methods: {\n    handleReset() {\n      this.value = null;\n    },\n  },\n  dropdownOptions: [\n    {\n      text: __('Confidential'),\n      value: 'true',\n    },\n    {\n      text: __('Not confidential'),\n      value: 'false',\n    },\n  ],\n};\n</script>\n\n<template>\n  <div>\n    <input type=\"hidden\" name=\"update[confidentiality]\" :value=\"value\" />\n    <gl-collapsible-listbox\n      v-model=\"value\"\n      block\n      :header-text=\"$options.i18n.headerText\"\n      :reset-button-label=\"$options.i18n.resetText\"\n      :toggle-text=\"toggleText\"\n      :items=\"$options.dropdownOptions\"\n      @reset=\"handleReset\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./confidentiality_dropdown.vue?vue&type=template&id=06b73f4c\"\nimport script from \"./confidentiality_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./confidentiality_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"update[confidentiality]\"},domProps:{\"value\":_vm.value}}),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"block\":\"\",\"header-text\":_vm.$options.i18n.headerText,\"reset-button-label\":_vm.$options.i18n.resetText,\"toggle-text\":_vm.toggleText,\"items\":_vm.$options.dropdownOptions},on:{\"reset\":_vm.handleReset},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport { TYPENAME_ISSUE, TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST, WORKSPACE_PROJECT } from '~/issues/constants';\nimport { gqlClient } from '~/issues/list/graphql';\nimport {\n  isInDesignPage,\n  isInIncidentPage,\n  isInIssuePage,\n  parseBoolean,\n} from '~/lib/utils/common_utils';\nimport { __ } from '~/locale';\nimport { apolloProvider } from '~/graphql_shared/issuable_client';\nimport Translate from '~/vue_shared/translate';\nimport UserSelect from '~/vue_shared/components/user_select/user_select.vue';\nimport CollapsedAssigneeList from './components/assignees/collapsed_assignee_list.vue';\nimport SidebarAssigneesWidget from './components/assignees/sidebar_assignees_widget.vue';\nimport CopyEmailToClipboard from './components/copy/copy_email_to_clipboard.vue';\nimport SidebarDueDateWidget from './components/date/sidebar_date_widget.vue';\nimport SidebarEscalationStatus from './components/incidents/sidebar_escalation_status.vue';\nimport LabelsSelectWidget from './components/labels/labels_select_widget/labels_select_root.vue';\nimport IssuableLockForm from './components/lock/issuable_lock_form.vue';\nimport MilestoneDropdown from './components/milestone/milestone_dropdown.vue';\nimport MoveIssuesButton from './components/move/move_issues_button.vue';\nimport SidebarParticipantsWidget from './components/participants/sidebar_participants_widget.vue';\nimport SidebarReferenceWidget from './components/copy/sidebar_reference_widget.vue';\nimport SidebarReviewers from './components/reviewers/sidebar_reviewers.vue';\nimport SidebarReviewersInputs from './components/reviewers/sidebar_reviewers_inputs.vue';\nimport SidebarSeverityWidget from './components/severity/sidebar_severity_widget.vue';\nimport SidebarDropdownWidget from './components/sidebar_dropdown_widget.vue';\nimport StatusDropdown from './components/status/status_dropdown.vue';\nimport SidebarSubscriptionsWidget from './components/subscriptions/sidebar_subscriptions_widget.vue';\nimport SubscriptionsDropdown from './components/subscriptions/subscriptions_dropdown.vue';\nimport SidebarTimeTracking from './components/time_tracking/sidebar_time_tracking.vue';\nimport SidebarTodoWidget from './components/todo_toggle/sidebar_todo_widget.vue';\nimport { IssuableAttributeType } from './constants';\nimport CrmContacts from './components/crm_contacts/crm_contacts.vue';\nimport trackShowInviteMemberLink from './track_invite_members';\nimport MoveIssueButton from './components/move/move_issue_button.vue';\nimport ConfidentialityDropdown from './components/confidential/confidentiality_dropdown.vue';\n\nVue.use(Translate);\nVue.use(VueApollo);\n\nfunction getSidebarOptions(sidebarOptEl = document.querySelector('.js-sidebar-options')) {\n  return JSON.parse(sidebarOptEl.innerHTML);\n}\n\nfunction mountSidebarTodoWidget() {\n  const el = document.querySelector('.js-sidebar-todo-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { projectPath, iid, id } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarTodoWidgetRoot',\n    apolloProvider,\n    provide: {\n      isClassicSidebar: true,\n    },\n    render: (createElement) =>\n      createElement(SidebarTodoWidget, {\n        props: {\n          fullPath: projectPath,\n          issuableId:\n            isInIssuePage() || isInIncidentPage() || isInDesignPage()\n              ? convertToGraphQLId(TYPENAME_ISSUE, id)\n              : convertToGraphQLId(TYPENAME_MERGE_REQUEST, id),\n          issuableIid: iid,\n          issuableType:\n            isInIssuePage() || isInIncidentPage() || isInDesignPage()\n              ? TYPE_ISSUE\n              : TYPE_MERGE_REQUEST,\n        },\n      }),\n  });\n}\n\nfunction mountSidebarAssigneesWidget() {\n  const el = document.querySelector('.js-sidebar-assignees-root');\n\n  if (!el) {\n    return;\n  }\n\n  const { id, iid, fullPath, editable } = getSidebarOptions();\n  const isIssuablePage = isInIssuePage() || isInIncidentPage() || isInDesignPage();\n  const issuableType = isIssuablePage ? TYPE_ISSUE : TYPE_MERGE_REQUEST;\n  // eslint-disable-next-line no-new\n  new Vue({\n    el,\n    name: 'SidebarAssigneesRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(editable),\n      directlyInviteMembers: Object.prototype.hasOwnProperty.call(\n        el.dataset,\n        'directlyInviteMembers',\n      ),\n    },\n    render: (createElement) =>\n      createElement(SidebarAssigneesWidget, {\n        props: {\n          iid: String(iid),\n          fullPath,\n          issuableType,\n          issuableId: id,\n          allowMultipleAssignees: !el.dataset.maxAssignees || el.dataset.maxAssignees > 1,\n          editable: parseBoolean(editable),\n        },\n        scopedSlots: {\n          collapsed: ({ users }) =>\n            createElement(CollapsedAssigneeList, {\n              props: {\n                users,\n                issuableType,\n              },\n            }),\n        },\n      }),\n  });\n}\n\nfunction mountSidebarReviewers(mediator) {\n  const el = document.querySelector('.js-sidebar-reviewers-root');\n\n  if (!el) {\n    return;\n  }\n\n  const {\n    id,\n    iid,\n    fullPath,\n    multipleApprovalRulesAvailable = false,\n    directlyInviteMembers = false,\n  } = getSidebarOptions();\n  // eslint-disable-next-line no-new\n  new Vue({\n    el,\n    name: 'SidebarReviewersRoot',\n    apolloProvider,\n    provide: {\n      issuableIid: String(iid),\n      issuableId: String(id),\n      projectPath: fullPath,\n      multipleApprovalRulesAvailable: parseBoolean(multipleApprovalRulesAvailable),\n      directlyInviteMembers: parseBoolean(directlyInviteMembers),\n    },\n    render: (createElement) =>\n      createElement(SidebarReviewers, {\n        props: {\n          mediator,\n          issuableIid: String(iid),\n          projectPath: fullPath,\n          field: el.dataset.field,\n          issuableType: isInIssuePage() || isInDesignPage() ? TYPE_ISSUE : TYPE_MERGE_REQUEST,\n        },\n      }),\n  });\n\n  const reviewersInputEl = document.querySelector('.js-reviewers-inputs');\n\n  if (reviewersInputEl) {\n    // eslint-disable-next-line no-new\n    new Vue({\n      el: reviewersInputEl,\n      render(createElement) {\n        return createElement(SidebarReviewersInputs);\n      },\n    });\n  }\n\n  const reviewerDropdown = document.querySelector('.js-sidebar-reviewer-dropdown');\n\n  if (reviewerDropdown) {\n    trackShowInviteMemberLink(reviewerDropdown);\n  }\n}\n\nfunction mountSidebarCrmContacts() {\n  const el = document.querySelector('.js-sidebar-crm-contacts-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { issueId, groupIssuesPath } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarCrmContactsRoot',\n    apolloProvider,\n    render: (createElement) =>\n      createElement(CrmContacts, {\n        props: {\n          issueId,\n          groupIssuesPath,\n        },\n      }),\n  });\n}\n\nfunction mountSidebarMilestoneWidget() {\n  const el = document.querySelector('.js-sidebar-milestone-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { canEdit, projectPath, issueIid } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarMilestoneWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(canEdit),\n      isClassicSidebar: true,\n    },\n    render: (createElement) =>\n      createElement(SidebarDropdownWidget, {\n        props: {\n          attrWorkspacePath: projectPath,\n          workspacePath: projectPath,\n          iid: issueIid,\n          issuableType:\n            isInIssuePage() || isInIncidentPage() || isInDesignPage()\n              ? TYPE_ISSUE\n              : TYPE_MERGE_REQUEST,\n          issuableAttribute: IssuableAttributeType.Milestone,\n          icon: 'milestone',\n        },\n      }),\n  });\n}\n\nexport function mountMilestoneDropdown() {\n  const el = document.querySelector('.js-milestone-dropdown-root');\n\n  if (!el) {\n    return null;\n  }\n\n  Vue.use(VueApollo);\n\n  const {\n    canAdminMilestone,\n    fullPath,\n    inputName,\n    milestoneId,\n    milestoneTitle,\n    projectMilestonesPath,\n    workspaceType,\n  } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'MilestoneDropdownRoot',\n    apolloProvider,\n    render(createElement) {\n      return createElement(MilestoneDropdown, {\n        props: {\n          attrWorkspacePath: fullPath,\n          canAdminMilestone,\n          inputName,\n          issuableType: isInIssuePage() ? TYPE_ISSUE : TYPE_MERGE_REQUEST,\n          milestoneId,\n          milestoneTitle,\n          projectMilestonesPath,\n          workspaceType,\n        },\n      });\n    },\n  });\n}\n\nexport function mountSidebarLabelsWidget() {\n  const el = document.querySelector('.js-sidebar-labels-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  return new Vue({\n    el,\n    name: 'SidebarLabelsWidgetRoot',\n    apolloProvider,\n    provide: {\n      ...el.dataset,\n      canUpdate: parseBoolean(el.dataset.canEdit),\n      allowLabelCreate: parseBoolean(el.dataset.allowLabelCreate),\n      allowLabelEdit: parseBoolean(el.dataset.canEdit),\n      allowScopedLabels: parseBoolean(el.dataset.allowScopedLabels),\n      isClassicSidebar: true,\n    },\n    render: (createElement) =>\n      createElement(LabelsSelectWidget, {\n        props: {\n          iid: String(el.dataset.iid),\n          fullPath: el.dataset.projectPath,\n          allowLabelRemove: parseBoolean(el.dataset.canEdit),\n          allowMultiselect: true,\n          footerCreateLabelTitle: __('Create project label'),\n          footerManageLabelTitle: __('Manage project labels'),\n          labelsCreateTitle: __('Create project label'),\n          labelsFilterBasePath: el.dataset.projectIssuesPath,\n          issuableType:\n            isInIssuePage() || isInIncidentPage() || isInDesignPage()\n              ? TYPE_ISSUE\n              : TYPE_MERGE_REQUEST,\n          workspaceType: WORKSPACE_PROJECT,\n          attrWorkspacePath: el.dataset.projectPath,\n          labelCreateType: WORKSPACE_PROJECT,\n        },\n        class: ['block labels js-labels-block'],\n        scopedSlots: {\n          default: () => __('None'),\n        },\n      }),\n  });\n}\n\nfunction mountSidebarDueDateWidget() {\n  const el = document.querySelector('.js-sidebar-due-date-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { fullPath, iid, editable } = getSidebarOptions();\n\n  return new Vue({\n    el,\n    name: 'SidebarDueDateWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(editable),\n    },\n    render: (createElement) =>\n      createElement(SidebarDueDateWidget, {\n        props: {\n          iid: String(iid),\n          fullPath,\n          issuableType: TYPE_ISSUE,\n        },\n      }),\n  });\n}\n\nfunction mountSidebarReferenceWidget() {\n  const el = document.querySelector('.js-sidebar-reference-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { fullPath, iid } = getSidebarOptions();\n\n  return new Vue({\n    el,\n    name: 'SidebarReferenceWidgetRoot',\n    apolloProvider,\n    provide: {\n      iid: String(iid),\n      fullPath,\n    },\n    render: (createElement) =>\n      createElement(SidebarReferenceWidget, {\n        props: {\n          issuableType:\n            isInIssuePage() || isInIncidentPage() || isInDesignPage()\n              ? TYPE_ISSUE\n              : TYPE_MERGE_REQUEST,\n        },\n      }),\n  });\n}\n\nfunction mountIssuableLockForm(store) {\n  const el = document.querySelector('.js-sidebar-lock-root');\n\n  if (!el || !store) {\n    return null;\n  }\n\n  const { fullPath, editable } = getSidebarOptions();\n\n  return new Vue({\n    el,\n    name: 'SidebarLockRoot',\n    store,\n    provide: {\n      fullPath,\n    },\n    render: (createElement) =>\n      createElement(IssuableLockForm, {\n        props: {\n          isEditable: parseBoolean(editable),\n        },\n      }),\n  });\n}\n\nfunction mountSidebarParticipantsWidget() {\n  const el = document.querySelector('.js-sidebar-participants-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { fullPath, iid } = getSidebarOptions();\n\n  return new Vue({\n    el,\n    name: 'SidebarParticipantsWidgetRoot',\n    apolloProvider,\n    render: (createElement) =>\n      createElement(SidebarParticipantsWidget, {\n        props: {\n          iid: String(iid),\n          fullPath,\n          issuableType:\n            isInIssuePage() || isInIncidentPage() || isInDesignPage()\n              ? TYPE_ISSUE\n              : TYPE_MERGE_REQUEST,\n        },\n      }),\n  });\n}\n\nfunction mountSidebarSubscriptionsWidget() {\n  const el = document.querySelector('.js-sidebar-subscriptions-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { fullPath, iid, editable } = getSidebarOptions();\n\n  return new Vue({\n    el,\n    name: 'SidebarSubscriptionsWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(editable),\n    },\n    render: (createElement) =>\n      createElement(SidebarSubscriptionsWidget, {\n        props: {\n          iid: String(iid),\n          fullPath,\n          issuableType:\n            isInIssuePage() || isInIncidentPage() || isInDesignPage()\n              ? TYPE_ISSUE\n              : TYPE_MERGE_REQUEST,\n        },\n      }),\n  });\n}\n\nfunction mountSidebarTimeTracking() {\n  const el = document.querySelector('.js-sidebar-time-tracking-root');\n\n  const { id, iid, fullPath, issuableType, timeTrackingLimitToHours, canCreateTimelogs, editable } =\n    getSidebarOptions();\n\n  if (!el) {\n    return null;\n  }\n\n  return new Vue({\n    el,\n    name: 'SidebarTimeTrackingRoot',\n    apolloProvider,\n    provide: { issuableType },\n    render: (createElement) =>\n      createElement(SidebarTimeTracking, {\n        props: {\n          fullPath,\n          issuableId: id.toString(),\n          issuableIid: iid.toString(),\n          limitToHours: timeTrackingLimitToHours,\n          canAddTimeEntries: canCreateTimelogs,\n          canSetTimeEstimate: parseBoolean(editable),\n        },\n      }),\n  });\n}\n\nfunction mountSidebarSeverityWidget() {\n  const el = document.querySelector('.js-sidebar-severity-widget-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { fullPath, iid, severity, editable } = getSidebarOptions();\n\n  return new Vue({\n    el,\n    name: 'SidebarSeverityWidgetRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(editable),\n    },\n    render: (createElement) =>\n      createElement(SidebarSeverityWidget, {\n        props: {\n          projectPath: fullPath,\n          iid: String(iid),\n          initialSeverity: severity.toUpperCase(),\n        },\n      }),\n  });\n}\n\nfunction mountSidebarEscalationStatus() {\n  const el = document.querySelector('.js-sidebar-escalation-status-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { issuableType } = getSidebarOptions();\n  const { canUpdate, issueIid, projectPath } = el.dataset;\n\n  return new Vue({\n    el,\n    name: 'SidebarEscalationStatusRoot',\n    apolloProvider,\n    provide: {\n      canUpdate: parseBoolean(canUpdate),\n    },\n    render: (createElement) =>\n      createElement(SidebarEscalationStatus, {\n        props: {\n          iid: issueIid,\n          issuableType,\n          projectPath,\n        },\n      }),\n  });\n}\n\nfunction mountCopyEmailToClipboard() {\n  const el = document.querySelector('.js-sidebar-copy-email-root');\n\n  if (!el) {\n    return null;\n  }\n\n  const { createNoteEmail } = getSidebarOptions();\n\n  return new Vue({\n    el,\n    name: 'SidebarCopyEmailRoot',\n    render: (createElement) =>\n      createElement(CopyEmailToClipboard, { props: { issueEmailAddress: createNoteEmail } }),\n  });\n}\n\nexport async function mountMoveIssuesButton() {\n  const el = document.querySelector('.js-move-issues');\n\n  if (!el) {\n    return null;\n  }\n\n  Vue.use(VueApollo);\n\n  return new Vue({\n    el,\n    name: 'MoveIssuesRoot',\n    apolloProvider: new VueApollo({\n      defaultClient: await gqlClient(),\n    }),\n    render: (createElement) =>\n      createElement(MoveIssuesButton, {\n        props: {\n          projectFullPath: el.dataset.projectFullPath,\n          projectsFetchPath: el.dataset.projectsFetchPath,\n        },\n      }),\n  });\n}\n\nexport function mountStatusDropdown() {\n  const el = document.querySelector('.js-status-dropdown');\n\n  if (!el) {\n    return null;\n  }\n\n  return new Vue({\n    el,\n    name: 'StatusDropdownRoot',\n    render: (createElement) => createElement(StatusDropdown),\n  });\n}\n\nexport function mountSubscriptionsDropdown() {\n  const el = document.querySelector('.js-subscriptions-dropdown');\n\n  if (!el) {\n    return null;\n  }\n\n  return new Vue({\n    el,\n    name: 'SubscriptionsDropdownRoot',\n    render: (createElement) => createElement(SubscriptionsDropdown),\n  });\n}\n\nexport function mountConfidentialityDropdown() {\n  const el = document.querySelector('.js-confidentiality-dropdown');\n\n  if (!el) {\n    return null;\n  }\n\n  return new Vue({\n    el,\n    name: 'ConfidentialityDropdownRoot',\n    render: (createElement) => createElement(ConfidentialityDropdown),\n  });\n}\n\nexport function mountMoveIssueButton() {\n  const el = document.querySelector('.js-sidebar-move-issue-block');\n\n  if (!el) {\n    return null;\n  }\n\n  const { projectsAutocompleteEndpoint } = getSidebarOptions();\n  const { projectFullPath, issueIid } = el.dataset;\n\n  Vue.use(VueApollo);\n\n  return new Vue({\n    el,\n    name: 'MoveIssueDropdownRoot',\n    apolloProvider,\n    provide: {\n      projectsAutocompleteEndpoint,\n      projectFullPath,\n      issueIid,\n    },\n    render: (createElement) => createElement(MoveIssueButton),\n  });\n}\n\nexport function mountAssigneesDropdown() {\n  const el = document.querySelector('.js-assignee-dropdown');\n  const assigneeIdsInput = document.querySelector('.js-assignee-ids-input');\n\n  if (!el || !assigneeIdsInput) {\n    return null;\n  }\n\n  const { fullPath } = el.dataset;\n  const currentUser = {\n    id: gon?.current_user_id,\n    username: gon?.current_username,\n    name: gon?.current_user_fullname,\n    avatarUrl: gon?.current_user_avatar_url,\n  };\n\n  return new Vue({\n    el,\n    apolloProvider,\n    data() {\n      return {\n        selectedUserName: '',\n        value: [],\n      };\n    },\n    methods: {\n      onSelectedUnassigned() {\n        assigneeIdsInput.value = 0;\n        this.value = [];\n        this.selectedUserName = __('Unassigned');\n      },\n      onSelected(selected) {\n        assigneeIdsInput.value = selected.map((user) => getIdFromGraphQLId(user.id));\n        this.value = selected;\n        this.selectedUserName = selected.map((user) => user.name).join(', ');\n      },\n    },\n    render(h) {\n      const component = this;\n\n      return h(UserSelect, {\n        props: {\n          text: component.selectedUserName || __('Select assignee'),\n          headerText: __('Select assignees'),\n          fullPath,\n          currentUser,\n          value: component.value,\n        },\n        on: {\n          input(selected) {\n            if (!selected.length) {\n              component.onSelectedUnassigned();\n              return;\n            }\n\n            component.onSelected(selected);\n          },\n        },\n        class: 'gl-w-full',\n      });\n    },\n  });\n}\n\nexport function mountSidebar(mediator, store) {\n  mountSidebarTodoWidget();\n  mountSidebarAssigneesWidget();\n  mountSidebarReviewers(mediator);\n  mountSidebarCrmContacts();\n  mountSidebarLabelsWidget();\n  mountSidebarMilestoneWidget();\n  mountSidebarDueDateWidget();\n  mountSidebarReferenceWidget();\n  mountIssuableLockForm(store);\n  mountSidebarParticipantsWidget();\n  mountSidebarSubscriptionsWidget();\n  mountCopyEmailToClipboard();\n  mountSidebarTimeTracking();\n  mountSidebarSeverityWidget();\n  mountSidebarEscalationStatus();\n  mountMoveIssueButton();\n}\n\nexport { getSidebarOptions };\n","import $ from 'jquery';\nimport Tracking from '~/tracking';\n\nexport default function initTrackInviteMembers(userDropdown) {\n  const { trackAction, trackLabel } = userDropdown.querySelector(\n    '.js-invite-members-track',\n  ).dataset;\n\n  $(userDropdown).on('shown.bs.dropdown', () => {\n    Tracking.event(undefined, trackAction, {\n      label: trackLabel,\n    });\n  });\n}\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n  return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-mt-3\",attrs:{\"data-testid\":\"disabled-comments\"}},[_c('span',{staticClass:\"issuable-note-warning gl-inline-block gl-w-full gl-rounded-base gl-px-5 gl-py-4\"},[_c('gl-icon',{staticClass:\"icon\",attrs:{\"size\":16,\"name\":\"lock\"}}),_vm._v(\" \"),(_vm.isProjectArchived)?_c('span',[_vm._v(\"\\n      \"+_vm._s(_vm.projectArchivedWarning)+\"\\n      \"),_c('gl-link',{staticClass:\"learn-more\",attrs:{\"href\":_vm.archivedProjectDocsPath,\"target\":\"_blank\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Learn more'))+\"\\n      \")])],1):_c('span',[_vm._v(\"\\n      \"+_vm._s(_vm.lockedIssueWarning)+\"\\n      \"),_c('gl-link',{staticClass:\"learn-more\",attrs:{\"href\":_vm.lockedIssueDocsPath,\"target\":\"_blank\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Learn more'))+\"\\n      \")])],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!./discussion_locked_widget.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!./discussion_locked_widget.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlIcon } from '@gitlab/ui';\nimport { __, sprintf } from '~/locale';\nimport issuableStateMixin from '../mixins/issuable_state';\n\nexport default {\n  components: {\n    GlIcon,\n    GlLink,\n  },\n  mixins: [issuableStateMixin],\n  props: {\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  computed: {\n    issuableDisplayName() {\n      return this.issuableType.replace(/_/g, ' ');\n    },\n    projectArchivedWarning() {\n      return __('This project is archived and cannot be commented on.');\n    },\n    lockedIssueWarning() {\n      return sprintf(\n        __(\n          'The discussion in this %{issuableDisplayName} is locked. Only project members can comment.',\n        ),\n        { issuableDisplayName: this.issuableDisplayName },\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-mt-3\" data-testid=\"disabled-comments\">\n    <span class=\"issuable-note-warning gl-inline-block gl-w-full gl-rounded-base gl-px-5 gl-py-4\">\n      <gl-icon :size=\"16\" name=\"lock\" class=\"icon\" />\n      <span v-if=\"isProjectArchived\">\n        {{ projectArchivedWarning }}\n        <gl-link :href=\"archivedProjectDocsPath\" target=\"_blank\" class=\"learn-more\">\n          {{ __('Learn more') }}\n        </gl-link>\n      </span>\n\n      <span v-else>\n        {{ lockedIssueWarning }}\n        <gl-link :href=\"lockedIssueDocsPath\" target=\"_blank\" class=\"learn-more\">\n          {{ __('Learn more') }}\n        </gl-link>\n      </span>\n    </span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./discussion_locked_widget.vue?vue&type=template&id=522d0260\"\nimport script from \"./discussion_locked_widget.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_locked_widget.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 debounce from 'lodash/debounce';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { breakpoints, GlBreakpointInstance } from '../../../utils/breakpoints';\nimport { alignOptions, resizeDebounceTime } from '../../../utils/constants';\nimport { translate, sprintf } from '../../../utils/i18n';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pageRange = (from, to) => range(from, to + 1, 1);\nvar script = {\n  name: 'Pagination',\n  components: {\n    GlLink,\n    GlIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    value: {\n      type: Number,\n      required: false,\n      default: 1,\n      validator: x => x > 0\n    },\n    /**\n     * Number of items per page\n     */\n    perPage: {\n      type: Number,\n      required: false,\n      default: 20,\n      validator: x => x > 0\n    },\n    /**\n     * Total number of items\n     */\n    totalItems: {\n      type: Number,\n      required: false,\n      default: 0\n    },\n    /**\n     * The object must contain the xs, sm, md and default keys\n     */\n    limits: {\n      type: Object,\n      required: false,\n      default: () => ({\n        xs: 0,\n        sm: 3,\n        md: 9,\n        default: 9\n      }),\n      validator: value => {\n        const missingSizes = Object.keys(breakpoints).filter(size => !value[size]).length;\n        return missingSizes === 0 ? true : value.default;\n      }\n    },\n    /**\n     * A function that receives the page number and that returns a string representing the page URL\n     */\n    linkGen: {\n      type: Function,\n      required: false,\n      default: null\n    },\n    /**\n     * When using the compact pagination, use this prop to pass the previous page number\n     */\n    prevPage: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * Text for the previous button (overridden by \"previous\" slot)\n     */\n    prevText: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.prevText', 'Previous')\n    },\n    /**\n     * When using the compact pagination, use this prop to pass the next page number\n     */\n    nextPage: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * Text for the next button (overridden by \"next\" slot)\n     */\n    nextText: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.nextText', 'Next')\n    },\n    /**\n     * Text for the ellipsis (overridden by \"ellipsis-left\" and \"ellipsis-right\" slots)\n     */\n    ellipsisText: {\n      type: String,\n      required: false,\n      default: '…'\n    },\n    /**\n     * aria-label for the nav\n     */\n    labelNav: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.nav', 'Pagination')\n    },\n    /**\n     * aria-label for the first page item\n     */\n    labelFirstPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelFirstPage', 'Go to first page')\n    },\n    /**\n     * aria-label for the previous page item\n     */\n    labelPrevPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelPrevPage', 'Go to previous page')\n    },\n    /**\n     * aria-label for the next page item\n     */\n    labelNextPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelNextPage', 'Go to next page')\n    },\n    /**\n     * aria-label for the last page item\n     */\n    labelLastPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelLastPage', 'Go to last page')\n    },\n    /**\n     * aria-label getter for numbered page items, defaults to \"Go to page <page_number>\"\n     */\n    labelPage: {\n      // note: `Function` support is for legacy reasons\n      type: [Function, String],\n      required: false,\n      default: translate('GlPagination.labelPage', 'Go to page %{page}')\n    },\n    /**\n     * Controls the component\\'s horizontal alignment, value should be one of \"left\", \"center\", \"right\" or \"fill\"\n     */\n    align: {\n      type: String,\n      required: false,\n      default: alignOptions.left,\n      validator: value => Object.keys(alignOptions).includes(value)\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      breakpoint: GlBreakpointInstance.getBreakpointSize(),\n      // If total pages count is below or equal to minTotalPagesToCollapse, collapsing is disabled\n      minTotalPagesToCollapse: 4\n    };\n  },\n  computed: {\n    isVisible() {\n      return this.totalPages > 1 || this.isCompactPagination;\n    },\n    isLinkBased() {\n      return isFunction(this.linkGen);\n    },\n    paginationLimit() {\n      return typeof this.limits[this.breakpoint] !== 'undefined' ? this.limits[this.breakpoint] : this.limits.default;\n    },\n    maxAdjacentPages() {\n      return Math.max(Math.ceil((this.paginationLimit - 1) / 2), 0);\n    },\n    totalPages() {\n      return Math.ceil(this.totalItems / this.perPage);\n    },\n    isFillAlign() {\n      return this.align === alignOptions.fill;\n    },\n    wrapperClasses() {\n      const classes = [];\n      if (this.align === alignOptions.center) {\n        classes.push('gl-justify-center');\n      }\n      if (this.align === alignOptions.right) {\n        classes.push('gl-justify-end');\n      }\n      if (this.isFillAlign) {\n        classes.push('gl-text-center');\n      }\n      return classes;\n    },\n    shouldCollapseLeftSide() {\n      const diff = this.value - this.maxAdjacentPages;\n\n      // Magic 3: prevents collapsing a single page on the left side\n      return diff >= this.maxAdjacentPages && diff > 3 && this.totalPages > this.minTotalPagesToCollapse;\n    },\n    shouldCollapseRightSide() {\n      // Magic 2: prevents collapsing a single page on the right side\n      const diff = this.totalPages - 2 - this.value;\n      return diff > this.maxAdjacentPages && this.totalPages > this.minTotalPagesToCollapse;\n    },\n    visibleItems() {\n      let items = [];\n      if (!this.isCompactPagination) {\n        let firstPage = this.shouldCollapseLeftSide ? this.value - this.maxAdjacentPages : 1;\n        // If we're on last page, show at least one page to the left\n        firstPage = Math.min(firstPage, this.totalPages - 1);\n        let lastPage = this.shouldCollapseRightSide ? this.value + this.maxAdjacentPages : this.totalPages;\n        // If we're on first page, show at least one page to the right\n        lastPage = Math.max(lastPage, 2);\n\n        // Default numbered items\n        items = pageRange(firstPage, lastPage).map(page => this.getPageItem(page));\n        if (this.shouldCollapseLeftSide) {\n          items.splice(0, 0, this.getPageItem(1, this.labelFirstPage), this.getEllipsisItem('left'));\n        }\n        if (this.shouldCollapseRightSide) {\n          items.push(this.getEllipsisItem('right'), this.getPageItem(this.totalPages, this.labelLastPage));\n        }\n      }\n      return items;\n    },\n    isCompactPagination() {\n      return Boolean(!this.totalItems && (this.prevPage || this.nextPage));\n    },\n    prevPageIsDisabled() {\n      return this.pageIsDisabled(this.value - 1);\n    },\n    nextPageIsDisabled() {\n      return this.pageIsDisabled(this.value + 1);\n    },\n    prevPageAriaLabel() {\n      return this.prevPageIsDisabled ? false : this.labelPrevPage || this.labelForPage(this.value - 1);\n    },\n    nextPageAriaLabel() {\n      return this.nextPageIsDisabled ? false : this.labelNextPage || this.labelForPage(this.value + 1);\n    },\n    prevPageHref() {\n      if (this.prevPageIsDisabled) return false;\n      if (this.isLinkBased) return this.linkGen(this.value - 1);\n      return '#';\n    },\n    nextPageHref() {\n      if (this.nextPageIsDisabled) return false;\n      if (this.isLinkBased) return this.linkGen(this.value + 1);\n      return '#';\n    }\n  },\n  created() {\n    window.addEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n  },\n  beforeDestroy() {\n    window.removeEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n  },\n  methods: {\n    labelForPage(page) {\n      if (isFunction(this.labelPage)) {\n        return this.labelPage(page);\n      }\n      return sprintf(this.labelPage, {\n        page\n      });\n    },\n    setBreakpoint() {\n      this.breakpoint = GlBreakpointInstance.getBreakpointSize();\n    },\n    pageIsDisabled(page) {\n      return this.disabled || page < 1 || this.isCompactPagination && page > this.value && !this.nextPage || !this.isCompactPagination && page > this.totalPages;\n    },\n    getPageItem(page) {\n      let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      const commonAttrs = {\n        'aria-label': label || this.labelForPage(page),\n        href: '#',\n        class: []\n      };\n      const isActivePage = page === this.value;\n      const isDisabled = this.pageIsDisabled(page);\n      const attrs = {\n        ...commonAttrs\n      };\n      const listeners = {};\n      if (isActivePage) {\n        attrs.class.push('active');\n        attrs['aria-current'] = 'page';\n      }\n      // Disable previous and/or next buttons if needed\n      if (this.isLinkBased) {\n        attrs.href = this.linkGen(page);\n      }\n      listeners.click = e => this.handleClick(e, page);\n      return {\n        content: page,\n        component: isDisabled ? 'span' : GlLink,\n        disabled: isDisabled,\n        key: `page_${page}`,\n        slot: 'page-number',\n        slotData: {\n          page,\n          active: isActivePage,\n          disabled: isDisabled\n        },\n        attrs,\n        listeners\n      };\n    },\n    getEllipsisItem(side) {\n      return {\n        content: this.ellipsisText,\n        key: `ellipsis_${side}`,\n        slot: `ellipsis-${side}`,\n        component: 'span',\n        disabled: true,\n        slotData: {},\n        listeners: {}\n      };\n    },\n    handleClick(event, value) {\n      if (!this.isLinkBased) {\n        event.preventDefault();\n        /**\n         * Emitted when the page changes\n         * @event input\n         * @arg {number} value The page that just got loaded\n         */\n        this.$emit('input', value);\n      }\n    },\n    handlePrevious(event, value) {\n      this.handleClick(event, value);\n      /**\n       * Emitted when the \"previous\" button is clicked\n       * @event previous\n       */\n      this.$emit('previous');\n    },\n    handleNext(event, value) {\n      this.handleClick(event, value);\n      /**\n       * Emitted when the \"next\" button is clicked\n       * @event next\n       */\n      this.$emit('next');\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('nav',{staticClass:\"gl-pagination\",attrs:{\"aria-label\":_vm.labelNav}},[_c('ul',{class:_vm.wrapperClasses},[_c('li',{class:{\n        disabled: _vm.prevPageIsDisabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"aria-disabled\":_vm.prevPageIsDisabled,\"aria-hidden\":_vm.prevPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.prevPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-prev\",\"aria-label\":_vm.prevPageAriaLabel,\"href\":_vm.prevPageHref},on:{\"click\":function($event){!_vm.prevPageIsDisabled ? _vm.handlePrevious($event, _vm.value - 1) : null;}}},[_vm._t(\"previous\",function(){return [_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.prevText))])]},null,{ page: _vm.value - 1, disabled: _vm.prevPageIsDisabled })],2)],1),_vm._v(\" \"),_vm._l((_vm.visibleItems),function(item){return _c('li',{key:item.key,class:{\n        disabled: item.disabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"data-testid\":\"gl-pagination-li\"}},[_c(item.component,_vm._g(_vm._b({tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-item\",\"size\":\"md\",\"aria-disabled\":item.disabled}},'component',item.attrs,false),item.listeners),[_vm._t(item.slot,function(){return [_vm._v(_vm._s(item.content))]},null,item.slotData)],2)],1)}),_vm._v(\" \"),_c('li',{class:{\n        disabled: _vm.nextPageIsDisabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"aria-disabled\":_vm.nextPageIsDisabled,\"aria-hidden\":_vm.nextPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.nextPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-next\",\"aria-label\":_vm.nextPageAriaLabel,\"href\":_vm.nextPageHref},on:{\"click\":function($event){!_vm.nextPageIsDisabled ? _vm.handleNext($event, _vm.value + 1) : null;}}},[_vm._t(\"next\",function(){return [_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.nextText))]),_vm._v(\" \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})]},null,{ page: _vm.value + 1, disabled: _vm.nextPageIsDisabled })],2)],1)],2)]):_vm._e()};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport { offset, autoPlacement, shift, size, autoUpdate, computePosition } from '@floating-ui/dom';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';\nimport { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';\nimport { logWarning, isElementFocusable, isElementTabbable } from '../../../../utils/utils';\nimport { OutsideDirective } from '../../../../directives/outside/outside';\nimport GlButton from '../../button/button';\nimport GlIcon from '../../icon/icon';\nimport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BASE_DROPDOWN_CLASS = 'gl-new-dropdown';\nvar script = {\n  name: 'BaseDropdown',\n  BASE_DROPDOWN_CLASS,\n  components: {\n    GlButton,\n    GlIcon\n  },\n  directives: {\n    Outside: OutsideDirective\n  },\n  props: {\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => Object.keys(buttonCategoryOptions).includes(value)\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => Object.keys(dropdownVariantOptions).includes(value)\n    },\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => Object.keys(buttonSizeOptions).includes(value)\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => {\n        if (['left', 'center', 'right'].includes(value)) {\n          logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: \"${value}\" placement is deprecated.\n            Use ${dropdownPlacements[value]} instead.`);\n        }\n        return Object.keys(dropdownPlacements).includes(value);\n      }\n    },\n    // ARIA props\n    ariaHaspopup: {\n      type: [String, Boolean],\n      required: false,\n      default: false,\n      validator: value => {\n        return ['menu', 'listbox', 'tree', 'grid', 'dialog', true, false].includes(value);\n      }\n    },\n    /**\n     * Id that will be referenced by `aria-labelledby` attribute of the dropdown content`\n     */\n    toggleId: {\n      type: String,\n      required: true\n    },\n    /**\n     * The `aria-labelledby` attribute value for the  toggle `button`\n     */\n    ariaLabelledby: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Custom value to be passed to the offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    offset: {\n      type: [Number, Object],\n      required: false,\n      default: () => ({\n        mainAxis: DEFAULT_OFFSET\n      })\n    },\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position\n     * needs to be set to fixed in CSS as well.\n     * https://floating-ui.com/docs/computePosition#strategy\n     */\n    positioningStrategy: {\n      type: String,\n      required: false,\n      default: POSITION_ABSOLUTE,\n      validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n    }\n  },\n  data() {\n    return {\n      openedYet: false,\n      visible: false,\n      baseDropdownId: uniqueId('base-dropdown-')\n    };\n  },\n  computed: {\n    hasNoVisibleToggleText() {\n      var _this$toggleText;\n      return !((_this$toggleText = this.toggleText) !== null && _this$toggleText !== void 0 && _this$toggleText.length) || this.textSrOnly;\n    },\n    isIconOnly() {\n      return Boolean(this.icon && this.hasNoVisibleToggleText);\n    },\n    isEllipsisButton() {\n      return this.isIconOnly && this.icon === 'ellipsis_h';\n    },\n    isCaretOnly() {\n      return !this.noCaret && !this.icon && this.hasNoVisibleToggleText;\n    },\n    ariaAttributes() {\n      return {\n        'aria-haspopup': this.ariaHaspopup,\n        'aria-expanded': String(this.visible),\n        'aria-controls': this.baseDropdownId,\n        'aria-labelledby': this.toggleLabelledBy\n      };\n    },\n    toggleButtonClasses() {\n      return [this.toggleClass, {\n        'gl-new-dropdown-toggle': true,\n        'button-ellipsis-horizontal': this.isEllipsisButton,\n        'gl-new-dropdown-icon-only btn-icon': this.isIconOnly && !this.isEllipsisButton,\n        'gl-new-dropdown-toggle-no-caret': this.noCaret,\n        'gl-new-dropdown-caret-only btn-icon': this.isCaretOnly\n      }];\n    },\n    toggleButtonTextClasses() {\n      return this.block ? 'gl-w-full' : '';\n    },\n    toggleLabelledBy() {\n      return this.ariaLabelledby ? `${this.ariaLabelledby} ${this.toggleId}` : this.toggleId;\n    },\n    isDefaultToggle() {\n      return !this.$scopedSlots.toggle;\n    },\n    toggleOptions() {\n      if (this.isDefaultToggle) {\n        return {\n          is: GlButton,\n          icon: this.icon,\n          block: this.block,\n          buttonTextClasses: this.toggleButtonTextClasses,\n          category: this.category,\n          variant: this.variant,\n          size: this.size,\n          disabled: this.disabled,\n          loading: this.loading,\n          class: this.toggleButtonClasses,\n          ...this.ariaAttributes,\n          listeners: {\n            keydown: event => this.onKeydown(event),\n            click: event => this.toggle(event)\n          }\n        };\n      }\n      return {\n        is: 'div',\n        class: 'gl-new-dropdown-custom-toggle',\n        listeners: {\n          keydown: event => this.onKeydown(event),\n          click: event => this.toggle(event)\n        }\n      };\n    },\n    toggleListeners() {\n      return this.toggleOptions.listeners;\n    },\n    toggleAttributes() {\n      const {\n        listeners,\n        is,\n        ...attributes\n      } = this.toggleOptions;\n      return attributes;\n    },\n    toggleComponent() {\n      return this.toggleOptions.is;\n    },\n    toggleElement() {\n      var _this$$refs$toggle;\n      return this.$refs.toggle.$el || ((_this$$refs$toggle = this.$refs.toggle) === null || _this$$refs$toggle === void 0 ? void 0 : _this$$refs$toggle.firstElementChild);\n    },\n    panelClasses() {\n      return {\n        '!gl-block': this.visible,\n        [FIXED_WIDTH_CLASS]: !this.fluidWidth,\n        'gl-fixed': this.openedYet && this.isFixed,\n        'gl-absolute': this.openedYet && !this.isFixed\n      };\n    },\n    isFixed() {\n      return this.positioningStrategy === POSITION_FIXED;\n    },\n    floatingUIConfig() {\n      const placement = dropdownPlacements[this.placement];\n      const [, alignment] = placement.split('-');\n      return {\n        placement,\n        strategy: this.positioningStrategy,\n        middleware: [offset(this.offset), autoPlacement({\n          alignment,\n          allowedPlacements: dropdownAllowedAutoPlacements[this.placement]\n        }), shift(), size({\n          apply: _ref => {\n            var _this$nonScrollableCo;\n            let {\n              availableHeight,\n              elements\n            } = _ref;\n            const contentsEl = elements.floating.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n            if (!contentsEl) {\n              return;\n            }\n            const contentsAvailableHeight = availableHeight - ((_this$nonScrollableCo = this.nonScrollableContentHeight) !== null && _this$nonScrollableCo !== void 0 ? _this$nonScrollableCo : 0) - DEFAULT_OFFSET;\n            Object.assign(contentsEl.style, {\n              maxHeight: `${Math.max(contentsAvailableHeight, 0)}px`\n            });\n          }\n        })]\n      };\n    }\n  },\n  watch: {\n    ariaAttributes: {\n      deep: true,\n      handler(ariaAttributes) {\n        if (this.$scopedSlots.toggle) {\n          Object.keys(ariaAttributes).forEach(key => {\n            this.toggleElement.setAttribute(key, ariaAttributes[key]);\n          });\n        }\n      }\n    }\n  },\n  mounted() {\n    this.checkToggleFocusable();\n  },\n  beforeDestroy() {\n    this.stopFloating();\n  },\n  methods: {\n    checkToggleFocusable() {\n      if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {\n        logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: Toggle is missing a 'tabindex' and cannot be focused.\n          Use 'a' or 'button' element instead or make sure to add 'role=\"button\"' along with 'tabindex' otherwise.`, this.$el);\n      }\n    },\n    async startFloating() {\n      this.calculateNonScrollableAreaHeight();\n      this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);\n      this.observer.observe(this.$refs.content, {\n        attributes: false,\n        childList: true,\n        subtree: true\n      });\n      this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {\n        const {\n          x,\n          y\n        } = await computePosition(this.toggleElement, this.$refs.content, this.floatingUIConfig);\n\n        /**\n         * Due to the asynchronous nature of computePosition, it's technically possible for the\n         * component to have been destroyed by the time the promise resolves. In such case, we exit\n         * early to prevent a TypeError.\n         */\n        if (!this.$refs.content) return;\n        Object.assign(this.$refs.content.style, {\n          left: `${x}px`,\n          top: `${y}px`\n        });\n      });\n    },\n    stopFloating() {\n      var _this$observer, _this$stopAutoUpdate;\n      (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();\n      (_this$stopAutoUpdate = this.stopAutoUpdate) === null || _this$stopAutoUpdate === void 0 ? void 0 : _this$stopAutoUpdate.call(this);\n    },\n    async toggle(event) {\n      if (event && this.visible) {\n        let prevented = false;\n        this.$emit(GL_DROPDOWN_BEFORE_CLOSE, {\n          originalEvent: event,\n          preventDefault() {\n            prevented = true;\n          }\n        });\n        if (prevented) return false;\n      }\n      this.visible = !this.visible;\n      if (this.visible) {\n        // The dropdown needs to be actually visible before we compute its position with Floating UI.\n        await this.$nextTick();\n        this.openedYet = true;\n        /**\n         * We wait until the dropdown's position has been computed before emitting the `shown` event.\n         * This ensures that, if the parent component attempts to focus an inner element, the dropdown\n         * is already properly placed in the page. Otherwise, the page would scroll back to the top.\n         */\n        this.startFloating();\n        this.$emit(GL_DROPDOWN_SHOWN);\n      } else {\n        this.stopFloating();\n        this.$emit(GL_DROPDOWN_HIDDEN);\n      }\n\n      // this is to check whether `toggle` was prevented or not\n      return true;\n    },\n    open() {\n      if (this.visible) {\n        return;\n      }\n      this.toggle();\n    },\n    close(event) {\n      if (!this.visible) {\n        return;\n      }\n      this.toggle(event);\n    },\n    /**\n     * Closes the dropdown and returns the focus to the toggle unless it has has moved outside\n     * of the dropdown, meaning that the consumer needed to put some other element in focus.\n     *\n     * @param {KeyboardEvent?} event The keyboard event that caused the dropdown to close.\n     */\n    async closeAndFocus(event) {\n      if (!this.visible) {\n        return;\n      }\n      const hadFocusWithin = this.$el.contains(document.activeElement);\n      const hasToggled = await this.toggle(event);\n      if (!hadFocusWithin) {\n        return;\n      }\n      if (hasToggled) {\n        this.focusToggle();\n      }\n    },\n    focusToggle() {\n      this.toggleElement.focus();\n    },\n    onKeydown(event) {\n      const {\n        code,\n        target: {\n          tagName\n        }\n      } = event;\n      let toggleOnEnter = true;\n      let toggleOnSpace = true;\n      if (tagName === 'BUTTON') {\n        toggleOnEnter = false;\n        toggleOnSpace = false;\n      } else if (tagName === 'A') {\n        toggleOnEnter = false;\n      }\n      if (code === ENTER && toggleOnEnter || code === SPACE && toggleOnSpace) {\n        this.toggle(event);\n      }\n      if (code === ARROW_DOWN) {\n        this.$emit(GL_DROPDOWN_FOCUS_CONTENT, event);\n      }\n    },\n    calculateNonScrollableAreaHeight() {\n      var _this$$refs$content;\n      const scrollableArea = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n      if (!scrollableArea) return;\n      const floatingElementBoundingBox = this.$refs.content.getBoundingClientRect();\n      const scrollableAreaBoundingBox = scrollableArea.getBoundingClientRect();\n      this.nonScrollableContentHeight = floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"outside\",rawName:\"v-outside.click.focusin\",value:(_vm.close),expression:\"close\",modifiers:{\"click\":true,\"focusin\":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:\"toggle\",tag:\"component\",attrs:{\"id\":_vm.toggleId,\"data-testid\":\"base-dropdown-toggle\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.close.apply(null, arguments)}}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t(\"toggle\",function(){return [_c('span',{staticClass:\"gl-new-dropdown-button-text\",class:{ 'gl-sr-only': _vm.textSrOnly }},[_vm._v(\"\\n        \"+_vm._s(_vm.toggleText)+\"\\n      \")]),_vm._v(\" \"),(!_vm.noCaret)?_c('gl-icon',{staticClass:\"gl-button-icon gl-new-dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}}):_vm._e()]})],2),_vm._v(\" \"),_c('div',{ref:\"content\",staticClass:\"gl-new-dropdown-panel\",class:_vm.panelClasses,attrs:{\"id\":_vm.baseDropdownId,\"data-testid\":\"base-dropdown-menu\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{staticClass:\"gl-new-dropdown-inner\"},[_vm._t(\"default\")],2)])],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { BASE_DROPDOWN_CLASS };\n","const FIXED_WIDTH_CLASS = '!gl-w-31';\nconst DEFAULT_OFFSET = 4;\n\nexport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS };\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n    rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n  rsUpper + '+' + rsOptContrUpper,\n  rsOrdUpper,\n  rsOrdLower,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","export const AJAX_USERS_SELECT_PARAMS_MAP = {\n  project_id: 'projectId',\n  group_id: 'groupId',\n  todo_filter: 'todoFilter',\n  todo_state_filter: 'todoStateFilter',\n  current_user: 'showCurrentUser',\n  author_id: 'authorId',\n  states: 'states',\n};\n\nexport const ACTIVE_AND_BLOCKED_USER_STATES = ['active', 'blocked', 'ldap_blocked'];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.right\",modifiers:{\"right\":true}}],staticClass:\"file-changed-icon gl-inline-block\",class:{ 'ml-auto': _vm.isCentered },attrs:{\"title\":_vm.tooltipTitle}},[(_vm.showIcon)?_c('gl-icon',{class:_vm.changedIconClass,attrs:{\"name\":_vm.changedIcon,\"size\":_vm.size}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changed_file_icon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changed_file_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlIcon } from '@gitlab/ui';\nimport getCommitIconMap from '~/ide/commit_icon';\nimport { __ } from '~/locale';\n\nexport default {\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    file: {\n      type: Object,\n      required: true,\n    },\n    showTooltip: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showStagedIcon: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    size: {\n      type: Number,\n      required: false,\n      default: 12,\n    },\n    isCentered: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    changedIcon() {\n      // False positive i18n lint: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26\n      // eslint-disable-next-line @gitlab/require-i18n-strings\n      const suffix = this.file.staged && this.showStagedIcon ? '-solid' : '';\n\n      return `${getCommitIconMap(this.file).icon}${suffix}`;\n    },\n    changedIconClass() {\n      return `${this.changedIcon} float-left gl-block`;\n    },\n    tooltipTitle() {\n      if (!this.showTooltip) {\n        return undefined;\n      }\n      if (this.file.deleted) {\n        return __('Deleted');\n      }\n      if (this.file.tempFile) {\n        return __('Added');\n      }\n      if (this.file.changed) {\n        return __('Modified');\n      }\n\n      return undefined;\n    },\n    showIcon() {\n      return (\n        this.file.changed ||\n        this.file.tempFile ||\n        this.file.staged ||\n        this.file.deleted ||\n        this.file.prevPath\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <span\n    v-gl-tooltip.right\n    :title=\"tooltipTitle\"\n    :class=\"{ 'ml-auto': isCentered }\"\n    class=\"file-changed-icon gl-inline-block\"\n  >\n    <gl-icon v-if=\"showIcon\" :name=\"changedIcon\" :size=\"size\" :class=\"changedIconClass\" />\n  </span>\n</template>\n\n<style>\n.file-addition,\n.file-addition-solid {\n  color: #1aaa55;\n}\n\n.file-modified,\n.file-modified-solid {\n  color: #fc9403;\n}\n\n.file-deletion,\n.file-deletion-solid {\n  color: #db3b21;\n}\n</style>\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--20-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changed_file_icon.vue?vue&type=style&index=0&id=46e7608f&prod&lang=css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./changed_file_icon.vue?vue&type=template&id=46e7608f\"\nimport script from \"./changed_file_icon.vue?vue&type=script&lang=js\"\nexport * from \"./changed_file_icon.vue?vue&type=script&lang=js\"\nimport style0 from \"./changed_file_icon.vue?vue&type=style&index=0&id=46e7608f&prod&lang=css\"\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 deburrLetter = require('./_deburrLetter'),\n    toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","var baseIteratee = require('./_baseIteratee'),\n    baseWhile = require('./_baseWhile');\n\n/**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': true },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\nfunction takeRightWhile(array, predicate) {\n  return (array && array.length)\n    ? baseWhile(array, baseIteratee(predicate, 3), false, true)\n    : [];\n}\n\nmodule.exports = takeRightWhile;\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n  CHAR_ASTERISK,             /* * */\n  CHAR_AT,                   /* @ */\n  CHAR_BACKWARD_SLASH,       /* \\ */\n  CHAR_COMMA,                /* , */\n  CHAR_DOT,                  /* . */\n  CHAR_EXCLAMATION_MARK,     /* ! */\n  CHAR_FORWARD_SLASH,        /* / */\n  CHAR_LEFT_CURLY_BRACE,     /* { */\n  CHAR_LEFT_PARENTHESES,     /* ( */\n  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n  CHAR_PLUS,                 /* + */\n  CHAR_QUESTION_MARK,        /* ? */\n  CHAR_RIGHT_CURLY_BRACE,    /* } */\n  CHAR_RIGHT_PARENTHESES,    /* ) */\n  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n  if (token.isPrefix !== true) {\n    token.depth = token.isGlobstar ? Infinity : 1;\n  }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n  const opts = options || {};\n\n  const length = input.length - 1;\n  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n  const slashes = [];\n  const tokens = [];\n  const parts = [];\n\n  let str = input;\n  let index = -1;\n  let start = 0;\n  let lastIndex = 0;\n  let isBrace = false;\n  let isBracket = false;\n  let isGlob = false;\n  let isExtglob = false;\n  let isGlobstar = false;\n  let braceEscaped = false;\n  let backslashes = false;\n  let negated = false;\n  let negatedExtglob = false;\n  let finished = false;\n  let braces = 0;\n  let prev;\n  let code;\n  let token = { value: '', depth: 0, isGlob: false };\n\n  const eos = () => index >= length;\n  const peek = () => str.charCodeAt(index + 1);\n  const advance = () => {\n    prev = code;\n    return str.charCodeAt(++index);\n  };\n\n  while (index < length) {\n    code = advance();\n    let next;\n\n    if (code === CHAR_BACKWARD_SLASH) {\n      backslashes = token.backslashes = true;\n      code = advance();\n\n      if (code === CHAR_LEFT_CURLY_BRACE) {\n        braceEscaped = true;\n      }\n      continue;\n    }\n\n    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n      braces++;\n\n      while (eos() !== true && (code = advance())) {\n        if (code === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (code === CHAR_LEFT_CURLY_BRACE) {\n          braces++;\n          continue;\n        }\n\n        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (braceEscaped !== true && code === CHAR_COMMA) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (code === CHAR_RIGHT_CURLY_BRACE) {\n          braces--;\n\n          if (braces === 0) {\n            braceEscaped = false;\n            isBrace = token.isBrace = true;\n            finished = true;\n            break;\n          }\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (code === CHAR_FORWARD_SLASH) {\n      slashes.push(index);\n      tokens.push(token);\n      token = { value: '', depth: 0, isGlob: false };\n\n      if (finished === true) continue;\n      if (prev === CHAR_DOT && index === (start + 1)) {\n        start += 2;\n        continue;\n      }\n\n      lastIndex = index + 1;\n      continue;\n    }\n\n    if (opts.noext !== true) {\n      const isExtglobChar = code === CHAR_PLUS\n        || code === CHAR_AT\n        || code === CHAR_ASTERISK\n        || code === CHAR_QUESTION_MARK\n        || code === CHAR_EXCLAMATION_MARK;\n\n      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n        isGlob = token.isGlob = true;\n        isExtglob = token.isExtglob = true;\n        finished = true;\n        if (code === CHAR_EXCLAMATION_MARK && index === start) {\n          negatedExtglob = true;\n        }\n\n        if (scanToEnd === true) {\n          while (eos() !== true && (code = advance())) {\n            if (code === CHAR_BACKWARD_SLASH) {\n              backslashes = token.backslashes = true;\n              code = advance();\n              continue;\n            }\n\n            if (code === CHAR_RIGHT_PARENTHESES) {\n              isGlob = token.isGlob = true;\n              finished = true;\n              break;\n            }\n          }\n          continue;\n        }\n        break;\n      }\n    }\n\n    if (code === CHAR_ASTERISK) {\n      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_QUESTION_MARK) {\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n      while (eos() !== true && (next = advance())) {\n        if (next === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          isBracket = token.isBracket = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n          break;\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n      negated = token.negated = true;\n      start++;\n      continue;\n    }\n\n    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n      isGlob = token.isGlob = true;\n\n      if (scanToEnd === true) {\n        while (eos() !== true && (code = advance())) {\n          if (code === CHAR_LEFT_PARENTHESES) {\n            backslashes = token.backslashes = true;\n            code = advance();\n            continue;\n          }\n\n          if (code === CHAR_RIGHT_PARENTHESES) {\n            finished = true;\n            break;\n          }\n        }\n        continue;\n      }\n      break;\n    }\n\n    if (isGlob === true) {\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n  }\n\n  if (opts.noext === true) {\n    isExtglob = false;\n    isGlob = false;\n  }\n\n  let base = str;\n  let prefix = '';\n  let glob = '';\n\n  if (start > 0) {\n    prefix = str.slice(0, start);\n    str = str.slice(start);\n    lastIndex -= start;\n  }\n\n  if (base && isGlob === true && lastIndex > 0) {\n    base = str.slice(0, lastIndex);\n    glob = str.slice(lastIndex);\n  } else if (isGlob === true) {\n    base = '';\n    glob = str;\n  } else {\n    base = str;\n  }\n\n  if (base && base !== '' && base !== '/' && base !== str) {\n    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n      base = base.slice(0, -1);\n    }\n  }\n\n  if (opts.unescape === true) {\n    if (glob) glob = utils.removeBackslashes(glob);\n\n    if (base && backslashes === true) {\n      base = utils.removeBackslashes(base);\n    }\n  }\n\n  const state = {\n    prefix,\n    input,\n    start,\n    base,\n    glob,\n    isBrace,\n    isBracket,\n    isGlob,\n    isExtglob,\n    isGlobstar,\n    negated,\n    negatedExtglob\n  };\n\n  if (opts.tokens === true) {\n    state.maxDepth = 0;\n    if (!isPathSeparator(code)) {\n      tokens.push(token);\n    }\n    state.tokens = tokens;\n  }\n\n  if (opts.parts === true || opts.tokens === true) {\n    let prevIndex;\n\n    for (let idx = 0; idx < slashes.length; idx++) {\n      const n = prevIndex ? prevIndex + 1 : start;\n      const i = slashes[idx];\n      const value = input.slice(n, i);\n      if (opts.tokens) {\n        if (idx === 0 && start !== 0) {\n          tokens[idx].isPrefix = true;\n          tokens[idx].value = prefix;\n        } else {\n          tokens[idx].value = value;\n        }\n        depth(tokens[idx]);\n        state.maxDepth += tokens[idx].depth;\n      }\n      if (idx !== 0 || value !== '') {\n        parts.push(value);\n      }\n      prevIndex = i;\n    }\n\n    if (prevIndex && prevIndex + 1 < input.length) {\n      const value = input.slice(prevIndex + 1);\n      parts.push(value);\n\n      if (opts.tokens) {\n        tokens[tokens.length - 1].value = value;\n        depth(tokens[tokens.length - 1]);\n        state.maxDepth += tokens[tokens.length - 1].depth;\n      }\n    }\n\n    state.slashes = slashes;\n    state.parts = parts;\n  }\n\n  return state;\n};\n\nmodule.exports = scan;\n","var arrayMap = require('./_arrayMap'),\n    baseIntersection = require('./_baseIntersection'),\n    baseRest = require('./_baseRest'),\n    castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n  var mapped = arrayMap(arrays, castArrayLikeObject);\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped)\n    : [];\n});\n\nmodule.exports = intersection;\n","import { extend } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition';\n\n// --- Constants ---\n\nconst MODEL_PROP_NAME_ACTIVE = 'active';\nconst MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE;\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  [MODEL_PROP_NAME_ACTIVE]: makeProp(PROP_TYPE_BOOLEAN, false),\n  buttonId: makeProp(PROP_TYPE_STRING),\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n  tag: makeProp(PROP_TYPE_STRING, 'div'),\n  title: makeProp(PROP_TYPE_STRING),\n  // Sniffed by `<b-tabs>` and added to nav `li.nav-item`\n  titleItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  titleLinkAttributes: makeProp(PROP_TYPE_OBJECT),\n  // Sniffed by `<b-tabs>` and added to nav `a.nav-link`\n  titleLinkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}), NAME_TAB);\n\n// --- Main component ---\n\n// @vue/component\nconst BTab = /*#__PURE__*/extend({\n  name: NAME_TAB,\n  mixins: [idMixin, normalizeSlotMixin],\n  inject: {\n    getBvTabs: {\n      default: () => () => ({})\n    }\n  },\n  props,\n  data() {\n    return {\n      localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n    };\n  },\n  computed: {\n    bvTabs() {\n      return this.getBvTabs();\n    },\n    // For parent sniffing of child\n    _isTab() {\n      return true;\n    },\n    tabClasses() {\n      const {\n        localActive: active,\n        disabled\n      } = this;\n      return [{\n        active,\n        disabled,\n        'card-body': this.bvTabs.card && !this.noBody\n      },\n      // Apply <b-tabs> `activeTabClass` styles when this tab is active\n      active ? this.bvTabs.activeTabClass : null];\n    },\n    controlledBy() {\n      return this.buttonId || this.safeId('__BV_tab_button__');\n    },\n    computedNoFade() {\n      return !(this.bvTabs.fade || false);\n    },\n    computedLazy() {\n      return this.bvTabs.lazy || this.lazy;\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME_ACTIVE](newValue, oldValue) {\n      if (newValue !== oldValue) {\n        if (newValue) {\n          // If activated post mount\n          this.activate();\n        } else {\n          /* istanbul ignore next */\n          if (!this.deactivate()) {\n            // Tab couldn't be deactivated, so we reset the synced active prop\n            // Deactivation will fail if no other tabs to activate\n            this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n          }\n        }\n      }\n    },\n    disabled(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        const {\n          firstTab\n        } = this.bvTabs;\n        if (newValue && this.localActive && firstTab) {\n          this.localActive = false;\n          firstTab();\n        }\n      }\n    },\n    localActive(newValue) {\n      // Make `active` prop work with `.sync` modifier\n      this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n    }\n  },\n  mounted() {\n    // Inform `<b-tabs>` of our presence\n    this.registerTab();\n  },\n  updated() {\n    // Force the tab button content to update (since slots are not reactive)\n    // Only done if we have a title slot, as the title prop is reactive\n    const {\n      updateButton\n    } = this.bvTabs;\n    if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n      updateButton(this);\n    }\n  },\n  beforeDestroy() {\n    // Inform `<b-tabs>` of our departure\n    this.unregisterTab();\n  },\n  methods: {\n    // Private methods\n    registerTab() {\n      // Inform `<b-tabs>` of our presence\n      const {\n        registerTab\n      } = this.bvTabs;\n      if (registerTab) {\n        registerTab(this);\n      }\n    },\n    unregisterTab() {\n      // Inform `<b-tabs>` of our departure\n      const {\n        unregisterTab\n      } = this.bvTabs;\n      if (unregisterTab) {\n        unregisterTab(this);\n      }\n    },\n    // Public methods\n    activate() {\n      // Not inside a `<b-tabs>` component or tab is disabled\n      const {\n        activateTab\n      } = this.bvTabs;\n      return activateTab && !this.disabled ? activateTab(this) : false;\n    },\n    deactivate() {\n      // Not inside a `<b-tabs>` component or not active to begin with\n      const {\n        deactivateTab\n      } = this.bvTabs;\n      return deactivateTab && this.localActive ? deactivateTab(this) : false;\n    }\n  },\n  render(h) {\n    const {\n      localActive\n    } = this;\n    const $content = h(this.tag, {\n      staticClass: 'tab-pane',\n      class: this.tabClasses,\n      directives: [{\n        name: 'show',\n        value: localActive\n      }],\n      attrs: {\n        role: 'tabpanel',\n        id: this.safeId(),\n        'aria-hidden': localActive ? 'false' : 'true',\n        'aria-labelledby': this.controlledBy || null\n      },\n      ref: 'panel'\n    },\n    // Render content lazily if requested\n    [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n    return h(BVTransition, {\n      props: {\n        mode: 'out-in',\n        noFade: this.computedNoFade\n      }\n    }, [$content]);\n  }\n});\n\nexport { BTab, props };\n","import isPlainObject from 'lodash/isPlainObject';\nimport { BTab } from '../../../../vendor/bootstrap-vue/src/components/tabs/tab';\nimport { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlTab',\n  components: {\n    BTab\n  },\n  inheritAttrs: false,\n  props: {\n    titleLinkClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: ''\n    },\n    /**\n     * Query string parameter value to use when `gl-tabs` `sync-active-tab-with-query-params` prop is set to `true`.\n     */\n    queryParamValue: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    linkClass() {\n      const {\n        titleLinkClass\n      } = this;\n      if (Array.isArray(titleLinkClass)) {\n        return [...titleLinkClass, DEFAULT_TAB_TITLE_LINK_CLASS];\n      }\n      if (isPlainObject(titleLinkClass)) {\n        return {\n          ...titleLinkClass,\n          [DEFAULT_TAB_TITLE_LINK_CLASS]: true\n        };\n      }\n      return `${titleLinkClass} ${DEFAULT_TAB_TITLE_LINK_CLASS}`.trim();\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tab',_vm._g(_vm._b({attrs:{\"title-link-class\":_vm.linkClass,\"query-param-value\":_vm.queryParamValue},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'b-tab',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","const DEFAULT_TAB_TITLE_LINK_CLASS = 'gl-tab-nav-item';\n\nexport { DEFAULT_TAB_TITLE_LINK_CLASS };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"observe-visibility\",rawName:\"v-observe-visibility\",value:(_vm.handleVisibilityChange),expression:\"handleVisibilityChange\"}],staticClass:\"vue-recycle-scroller\",class:{\n    ready: _vm.ready,\n    'page-mode': _vm.pageMode,\n    [`direction-${_vm.direction}`]: true,\n  },on:{\"&scroll\":function($event){return _vm.handleScroll.apply(null, arguments)}}},[(_vm.$slots.before)?_c('div',{staticClass:\"vue-recycle-scroller__slot\"},[_vm._t(\"before\")],2):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"wrapper\",staticClass:\"vue-recycle-scroller__item-wrapper\",style:({ [_vm.direction === 'vertical' ? 'minHeight' : 'minWidth']: _vm.totalSize + 'px' })},_vm._l((_vm.pool),function(view){return _c('div',{key:view.nr.id,staticClass:\"vue-recycle-scroller__item-view\",class:{ hover: _vm.hoverKey === view.nr.key, 'will-change-transform': _vm.useTransform },style:(_vm.ready ? {\n        transform: _vm.useTransform ? `translate${_vm.direction === 'vertical' ? 'Y' : 'X'}(${view.position}px)` : null,\n        top: !_vm.useTransform && _vm.direction === 'vertical' ? `${view.position}px` : null,\n        left: !_vm.useTransform && _vm.direction !== 'vertical' ? `${view.position}px` : null,\n      } : null),on:{\"mouseenter\":function($event){_vm.hoverKey = view.nr.key},\"mouseleave\":function($event){_vm.hoverKey = null}}},[_vm._t(\"default\",null,{\"item\":view.item,\"index\":view.nr.index,\"active\":view.nr.used})],2)}),0),_vm._v(\" \"),(_vm.$slots.after)?_c('div',{staticClass:\"vue-recycle-scroller__slot\"},[_vm._t(\"after\")],2):_vm._e(),_vm._v(\" \"),_c('ResizeObserver',{on:{\"notify\":_vm.handleResize}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../css-loader/dist/cjs.js??ref--20-1!./vue-resize.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","export let supportsPassive = false\n\nif (typeof window !== 'undefined') {\n  supportsPassive = false\n  try {\n    var opts = Object.defineProperty({}, 'passive', {\n      get () {\n        supportsPassive = true\n      },\n    })\n    window.addEventListener('test', null, opts)\n  } catch (e) {}\n}\n","<template>\n  <div\n    v-observe-visibility=\"handleVisibilityChange\"\n    class=\"vue-recycle-scroller\"\n    :class=\"{\n      ready,\n      'page-mode': pageMode,\n      [`direction-${direction}`]: true,\n    }\"\n    @scroll.passive=\"handleScroll\"\n  >\n    <div\n      v-if=\"$slots.before\"\n      class=\"vue-recycle-scroller__slot\"\n    >\n      <slot\n        name=\"before\"\n      />\n    </div>\n\n    <div\n      ref=\"wrapper\"\n      :style=\"{ [direction === 'vertical' ? 'minHeight' : 'minWidth']: totalSize + 'px' }\"\n      class=\"vue-recycle-scroller__item-wrapper\"\n    >\n      <div\n        v-for=\"view of pool\"\n        :key=\"view.nr.id\"\n        :style=\"ready ? {\n          transform: useTransform ? `translate${direction === 'vertical' ? 'Y' : 'X'}(${view.position}px)` : null,\n          top: !useTransform && direction === 'vertical' ? `${view.position}px` : null,\n          left: !useTransform && direction !== 'vertical' ? `${view.position}px` : null,\n        } : null\"\n        class=\"vue-recycle-scroller__item-view\"\n        :class=\"{ hover: hoverKey === view.nr.key, 'will-change-transform': useTransform }\"\n        @mouseenter=\"hoverKey = view.nr.key\"\n        @mouseleave=\"hoverKey = null\"\n      >\n        <slot\n          :item=\"view.item\"\n          :index=\"view.nr.index\"\n          :active=\"view.nr.used\"\n        />\n      </div>\n    </div>\n\n    <div\n      v-if=\"$slots.after\"\n      class=\"vue-recycle-scroller__slot\"\n    >\n      <slot\n        name=\"after\"\n      />\n    </div>\n\n    <ResizeObserver @notify=\"handleResize\" />\n  </div>\n</template>\n\n<script>\nimport { ResizeObserver } from 'vue-resize'\nimport 'vue-resize/dist/vue-resize.css'\nimport { ObserveVisibility } from 'vue-observe-visibility'\nimport ScrollParent from 'scrollparent'\nimport config from '../config'\nimport { props, simpleArray } from './common'\nimport { supportsPassive } from '../utils'\n\nlet uid = 0\n\nexport default {\n  name: 'RecycleScroller',\n\n  components: {\n    ResizeObserver,\n  },\n\n  directives: {\n    ObserveVisibility,\n  },\n\n  props: {\n    ...props,\n\n    itemSize: {\n      type: Number,\n      default: null,\n    },\n\n    minItemSize: {\n      type: [Number, String],\n      default: null,\n    },\n\n    sizeField: {\n      type: String,\n      default: 'size',\n    },\n\n    typeField: {\n      type: String,\n      default: 'type',\n    },\n\n    buffer: {\n      type: Number,\n      default: 200,\n    },\n\n    pageMode: {\n      type: Boolean,\n      default: false,\n    },\n\n    prerender: {\n      type: Number,\n      default: 0,\n    },\n\n    emitUpdate: {\n      type: Boolean,\n      default: false,\n    },\n\n    useTransform: {\n      type: Boolean,\n      default: true,\n    }\n  },\n\n  data () {\n    return {\n      pool: [],\n      totalSize: 0,\n      ready: false,\n      hoverKey: null,\n    }\n  },\n\n  computed: {\n    sizes () {\n      if (this.itemSize === null) {\n        const sizes = {\n          '-1': { accumulator: 0 },\n        }\n        const items = this.items\n        const field = this.sizeField\n        const minItemSize = this.minItemSize\n        let computedMinSize = this.buffer\n        let accumulator = 0\n        let current\n        for (let i = 0, l = items.length; i < l; i++) {\n          current = items[i][field] || minItemSize\n          if (current < computedMinSize) {\n            computedMinSize = current\n          }\n          accumulator += current\n          sizes[i] = { accumulator, size: current }\n        }\n        // eslint-disable-next-line\n        this.$_computedMinItemSize = computedMinSize\n        return sizes\n      }\n      return []\n    },\n\n    simpleArray,\n  },\n\n  watch: {\n    items () {\n      this.updateVisibleItems(true)\n    },\n\n    pageMode () {\n      this.applyPageMode()\n      this.updateVisibleItems(false)\n    },\n\n    sizes: {\n      handler () {\n        this.updateVisibleItems(false)\n      },\n      deep: true,\n    },\n  },\n\n  created () {\n    this.$_startIndex = 0\n    this.$_endIndex = 0\n    this.$_views = new Map()\n    this.$_unusedViews = new Map()\n    this.$_scrollDirty = false\n    this.$_lastUpdateScrollPosition = 0\n\n    // In SSR mode, we also prerender the same number of item for the first render\n    // to avoir mismatch between server and client templates\n    if (this.prerender) {\n      this.$_prerender = true\n      this.updateVisibleItems(false)\n    }\n  },\n\n  mounted () {\n    this.applyPageMode()\n    this.$nextTick(() => {\n      // In SSR mode, render the real number of visible items\n      this.$_prerender = false\n      this.updateVisibleItems(true)\n      this.ready = true\n    })\n  },\n\n  beforeDestroy () {\n    this.removeListeners()\n  },\n\n  methods: {\n    addView (pool, index, item, key, type) {\n      const view = {\n        item,\n        position: 0,\n      }\n      const nonReactive = {\n        // FIXME: replace with markRaw in Vue3\n        // See https://gitlab.com/gitlab-org/gitlab/-/issues/395772\n        __v_skip: true,\n        \n        id: uid++,\n        index,\n        used: true,\n        key,\n        type,\n      }\n      Object.defineProperty(view, 'nr', {\n        configurable: false,\n        value: nonReactive,\n      })\n      pool.push(view)\n      return view\n    },\n\n    unuseView (view, fake = false) {\n      const unusedViews = this.$_unusedViews\n      const type = view.nr.type\n      let unusedPool = unusedViews.get(type)\n      if (!unusedPool) {\n        unusedPool = []\n        unusedViews.set(type, unusedPool)\n      }\n      unusedPool.push(view)\n      if (!fake) {\n        view.nr.used = false\n        view.position = -9999\n        this.$_views.delete(view.nr.key)\n      }\n    },\n\n    handleResize () {\n      this.$emit('resize')\n      if (this.ready) this.updateVisibleItems(false)\n    },\n\n    handleScroll (event) {\n      if (!this.$_scrollDirty) {\n        this.$_scrollDirty = true\n        requestAnimationFrame(() => {\n          this.$_scrollDirty = false\n          const { continuous } = this.updateVisibleItems(false, true)\n\n          // It seems sometimes chrome doesn't fire scroll event :/\n          // When non continous scrolling is ending, we force a refresh\n          if (!continuous) {\n            clearTimeout(this.$_refreshTimout)\n            this.$_refreshTimout = setTimeout(this.handleScroll, 100)\n          }\n        })\n      }\n    },\n\n    handleVisibilityChange (isVisible, entry) {\n      if (this.ready) {\n        if (isVisible || entry.boundingClientRect.width !== 0 || entry.boundingClientRect.height !== 0) {\n          this.$emit('visible')\n          requestAnimationFrame(() => {\n            this.updateVisibleItems(false)\n          })\n        } else {\n          this.$emit('hidden')\n        }\n      }\n    },\n\n    updateVisibleItems (checkItem, checkPositionDiff = false) {\n      const itemSize = this.itemSize\n      const minItemSize = this.$_computedMinItemSize\n      const typeField = this.typeField\n      const keyField = this.simpleArray ? null : this.keyField\n      const items = this.items\n      const count = items.length\n      const sizes = this.sizes\n      const views = this.$_views\n      const unusedViews = this.$_unusedViews\n      const pool = this.pool\n      let startIndex, endIndex\n      let totalSize\n\n      if (!count) {\n        startIndex = endIndex = totalSize = 0\n      } else if (this.$_prerender) {\n        startIndex = 0\n        endIndex = this.prerender\n        totalSize = null\n      } else {\n        const scroll = this.getScroll()\n\n        // Skip update if use hasn't scrolled enough\n        if (checkPositionDiff) {\n          let positionDiff = scroll.start - this.$_lastUpdateScrollPosition\n          if (positionDiff < 0) positionDiff = -positionDiff\n          if ((itemSize === null && positionDiff < minItemSize) || positionDiff < itemSize) {\n            return {\n              continuous: true,\n            }\n          }\n        }\n        this.$_lastUpdateScrollPosition = scroll.start\n\n        const buffer = this.buffer\n        scroll.start -= buffer\n        scroll.end += buffer\n\n        // Variable size mode\n        if (itemSize === null) {\n          let h\n          let a = 0\n          let b = count - 1\n          let i = ~~(count / 2)\n          let oldI\n\n          // Searching for startIndex\n          do {\n            oldI = i\n            h = sizes[i].accumulator\n            if (h < scroll.start) {\n              a = i\n            } else if (i < count - 1 && sizes[i + 1].accumulator > scroll.start) {\n              b = i\n            }\n            i = ~~((a + b) / 2)\n          } while (i !== oldI)\n          i < 0 && (i = 0)\n          startIndex = i\n\n          // For container style\n          totalSize = sizes[count - 1].accumulator\n\n          // Searching for endIndex\n          for (endIndex = i; endIndex < count && sizes[endIndex].accumulator < scroll.end; endIndex++);\n          if (endIndex === -1) {\n            endIndex = items.length - 1\n          } else {\n            endIndex++\n            // Bounds\n            endIndex > count && (endIndex = count)\n          }\n        } else {\n          // Fixed size mode\n          startIndex = ~~(scroll.start / itemSize)\n          endIndex = Math.ceil(scroll.end / itemSize)\n\n          // Bounds\n          startIndex < 0 && (startIndex = 0)\n          endIndex > count && (endIndex = count)\n\n          totalSize = count * itemSize\n        }\n      }\n\n      if (endIndex - startIndex > config.itemsLimit) {\n        this.itemsLimitError()\n      }\n\n      this.totalSize = totalSize\n\n      let view\n\n      const continuous = startIndex <= this.$_endIndex && endIndex >= this.$_startIndex\n\n      if (this.$_continuous !== continuous) {\n        if (continuous) {\n          views.clear()\n          unusedViews.clear()\n          for (let i = 0, l = pool.length; i < l; i++) {\n            view = pool[i]\n            this.unuseView(view)\n          }\n        }\n        this.$_continuous = continuous\n      } else if (continuous) {\n        for (let i = 0, l = pool.length; i < l; i++) {\n          view = pool[i]\n          if (view.nr.used) {\n            // Update view item index\n            if (checkItem) {\n              view.nr.index = items.findIndex(\n                item => keyField ? item[keyField] === view.item[keyField] : item === view.item,\n              )\n            }\n\n            // Check if index is still in visible range\n            if (\n              view.nr.index === -1 ||\n              view.nr.index < startIndex ||\n              view.nr.index >= endIndex\n            ) {\n              this.unuseView(view)\n            }\n          }\n        }\n      }\n\n      const unusedIndex = continuous ? null : new Map()\n\n      let item, type, unusedPool\n      let v\n      for (let i = startIndex; i < endIndex; i++) {\n        item = items[i]\n        const key = keyField ? item[keyField] : item\n        if (key == null) {\n          throw new Error(`Key is ${key} on item (keyField is '${keyField}')`)\n        }\n        view = views.get(key)\n\n        if (!itemSize && !sizes[i].size) {\n          if (view) this.unuseView(view)\n          continue\n        }\n\n        // No view assigned to item\n        if (!view) {\n          type = item[typeField]\n          unusedPool = unusedViews.get(type)\n\n          if (continuous) {\n            // Reuse existing view\n            if (unusedPool && unusedPool.length) {\n              view = unusedPool.pop()\n              view.item = item\n              view.nr.used = true\n              view.nr.index = i\n              view.nr.key = key\n              view.nr.type = type\n            } else {\n              view = this.addView(pool, i, item, key, type)\n            }\n          } else {\n            // Use existing view\n            // We don't care if they are already used\n            // because we are not in continous scrolling\n            v = unusedIndex.get(type) || 0\n\n            if (!unusedPool || v >= unusedPool.length) {\n              view = this.addView(pool, i, item, key, type)\n              this.unuseView(view, true)\n              unusedPool = unusedViews.get(type)\n            }\n\n            view = unusedPool[v]\n            view.item = item\n            view.nr.used = true\n            view.nr.index = i\n            view.nr.key = key\n            view.nr.type = type\n            unusedIndex.set(type, v + 1)\n            v++\n          }\n          views.set(key, view)\n        } else {\n          view.nr.used = true\n          view.item = item\n        }\n\n        // Update position\n        if (itemSize === null) {\n          view.position = sizes[i - 1].accumulator\n        } else {\n          view.position = i * itemSize\n        }\n      }\n\n      this.$_startIndex = startIndex\n      this.$_endIndex = endIndex\n\n      if (this.emitUpdate) this.$emit('update', startIndex, endIndex)\n\n      // After the user has finished scrolling\n      // Sort views so text selection is correct\n      clearTimeout(this.$_sortTimer)\n      this.$_sortTimer = setTimeout(this.sortViews, 300)\n\n      return {\n        continuous,\n      }\n    },\n\n    getListenerTarget () {\n      let target = ScrollParent(this.$el)\n      // Fix global scroll target for Chrome and Safari\n      if (window.document && (target === window.document.documentElement || target === window.document.body)) {\n        target = window\n      }\n      return target\n    },\n\n    getScroll () {\n      const { $el: el, direction } = this\n      const isVertical = direction === 'vertical'\n      let scrollState\n\n      if (this.pageMode) {\n        const bounds = el.getBoundingClientRect()\n        const boundsSize = isVertical ? bounds.height : bounds.width\n        let start = -(isVertical ? bounds.top : bounds.left)\n        let size = isVertical ? window.innerHeight : window.innerWidth\n        if (start < 0) {\n          size += start\n          start = 0\n        }\n        if (start + size > boundsSize) {\n          size = boundsSize - start\n        }\n        scrollState = {\n          start,\n          end: start + size,\n        }\n      } else if (isVertical) {\n        scrollState = {\n          start: el.scrollTop,\n          end: el.scrollTop + el.clientHeight,\n        }\n      } else {\n        scrollState = {\n          start: el.scrollLeft,\n          end: el.scrollLeft + el.clientWidth,\n        }\n      }\n\n      return scrollState\n    },\n\n    applyPageMode () {\n      if (this.pageMode) {\n        this.addListeners()\n      } else {\n        this.removeListeners()\n      }\n    },\n\n    addListeners () {\n      this.listenerTarget = this.getListenerTarget()\n      this.listenerTarget.addEventListener('scroll', this.handleScroll, supportsPassive ? {\n        passive: true,\n      } : false)\n      this.listenerTarget.addEventListener('resize', this.handleResize)\n    },\n\n    removeListeners () {\n      if (!this.listenerTarget) {\n        return\n      }\n\n      this.listenerTarget.removeEventListener('scroll', this.handleScroll)\n      this.listenerTarget.removeEventListener('resize', this.handleResize)\n\n      this.listenerTarget = null\n    },\n\n    scrollToItem (index) {\n      this.$_scrollDirty = true\n      const { viewport, scrollDirection, scrollDistance } = this.scrollToPosition(index)\n      viewport[scrollDirection] = scrollDistance\n\n      setTimeout(() => {\n        this.$_scrollDirty = false\n        this.updateVisibleItems(false, true)\n      })\n    },\n\n    scrollToPosition (index) {\n      const getPositionOfItem = (index) => {\n        if (this.itemSize === null) {\n          return index > 0 ? this.sizes[index - 1].accumulator : 0\n        } else {\n          return index * this.itemSize\n        }\n      }\n      const position = getPositionOfItem(index)\n      const direction = this.direction === 'vertical'\n        ? { scroll: 'scrollTop', start: 'top' }\n        : { scroll: 'scrollLeft', start: 'left' }\n\n      if (this.pageMode) {\n        const viewportEl = ScrollParent(this.$el)\n        // HTML doesn't overflow like other elements\n        const scrollTop = viewportEl.tagName === 'HTML' ? 0 : viewportEl[direction.scroll]\n        const viewport = viewportEl.getBoundingClientRect()\n\n        const scroller = this.$el.getBoundingClientRect()\n        const scrollerPosition = scroller[direction.start] - viewport[direction.start]\n\n        return {\n          viewport: viewportEl,\n          scrollDirection: direction.scroll,\n          scrollDistance: position + scrollTop + scrollerPosition,\n        }\n      }\n\n      return {\n        viewport: this.$el,\n        scrollDirection: direction.scroll,\n        scrollDistance: position,\n      }\n    },\n\n    itemsLimitError () {\n      setTimeout(() => {\n        console.log('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', this.$el)\n        console.log('Make sure the scroller has a fixed height (or width) and \\'overflow-y\\' (or \\'overflow-x\\') set to \\'auto\\' so it can scroll correctly and only render the items visible in the scroll viewport.')\n      })\n      throw new Error('Rendered items limit reached')\n    },\n\n    sortViews () {\n      this.pool.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index)\n    },\n  },\n}\n</script>\n\n<style>\n.vue-recycle-scroller {\n  position: relative;\n}\n\n.vue-recycle-scroller.direction-vertical:not(.page-mode) {\n  overflow-y: auto;\n}\n\n.vue-recycle-scroller.direction-horizontal:not(.page-mode) {\n  overflow-x: auto;\n}\n\n.vue-recycle-scroller.direction-horizontal {\n  display: flex;\n}\n\n.vue-recycle-scroller__slot {\n  flex: auto 0 0;\n}\n\n.vue-recycle-scroller__item-wrapper {\n  flex: 1;\n  box-sizing: border-box;\n  overflow: hidden;\n  position: relative;\n}\n\n.vue-recycle-scroller.ready .vue-recycle-scroller__item-view {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\n.will-change-transform {\n  will-change: transform;\n}\n\n.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper {\n  width: 100%;\n}\n\n.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper {\n  height: 100%;\n}\n\n.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view {\n  width: 100%;\n}\n\n.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view {\n  height: 100%;\n}\n</style>\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!./RecycleScroller.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!./RecycleScroller.vue?vue&type=script&lang=js\"","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--20-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecycleScroller.vue?vue&type=style&index=0&id=14d05706&prod&lang=css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./RecycleScroller.vue?vue&type=template&id=14d05706\"\nimport script from \"./RecycleScroller.vue?vue&type=script&lang=js\"\nexport * from \"./RecycleScroller.vue?vue&type=script&lang=js\"\nimport style0 from \"./RecycleScroller.vue?vue&type=style&index=0&id=14d05706&prod&lang=css\"\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 * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n  if (isNumber(min) === false) {\n    throw new TypeError('toRegexRange: expected the first argument to be a number');\n  }\n\n  if (max === void 0 || min === max) {\n    return String(min);\n  }\n\n  if (isNumber(max) === false) {\n    throw new TypeError('toRegexRange: expected the second argument to be a number.');\n  }\n\n  let opts = { relaxZeros: true, ...options };\n  if (typeof opts.strictZeros === 'boolean') {\n    opts.relaxZeros = opts.strictZeros === false;\n  }\n\n  let relax = String(opts.relaxZeros);\n  let shorthand = String(opts.shorthand);\n  let capture = String(opts.capture);\n  let wrap = String(opts.wrap);\n  let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n  if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n    return toRegexRange.cache[cacheKey].result;\n  }\n\n  let a = Math.min(min, max);\n  let b = Math.max(min, max);\n\n  if (Math.abs(a - b) === 1) {\n    let result = min + '|' + max;\n    if (opts.capture) {\n      return `(${result})`;\n    }\n    if (opts.wrap === false) {\n      return result;\n    }\n    return `(?:${result})`;\n  }\n\n  let isPadded = hasPadding(min) || hasPadding(max);\n  let state = { min, max, a, b };\n  let positives = [];\n  let negatives = [];\n\n  if (isPadded) {\n    state.isPadded = isPadded;\n    state.maxLen = String(state.max).length;\n  }\n\n  if (a < 0) {\n    let newMin = b < 0 ? Math.abs(b) : 1;\n    negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n    a = state.a = 0;\n  }\n\n  if (b >= 0) {\n    positives = splitToPatterns(a, b, state, opts);\n  }\n\n  state.negatives = negatives;\n  state.positives = positives;\n  state.result = collatePatterns(negatives, positives, opts);\n\n  if (opts.capture === true) {\n    state.result = `(${state.result})`;\n  } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n    state.result = `(?:${state.result})`;\n  }\n\n  toRegexRange.cache[cacheKey] = state;\n  return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n  let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n  let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n  let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n  let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n  return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n  let nines = 1;\n  let zeros = 1;\n\n  let stop = countNines(min, nines);\n  let stops = new Set([max]);\n\n  while (min <= stop && stop <= max) {\n    stops.add(stop);\n    nines += 1;\n    stop = countNines(min, nines);\n  }\n\n  stop = countZeros(max + 1, zeros) - 1;\n\n  while (min < stop && stop <= max) {\n    stops.add(stop);\n    zeros += 1;\n    stop = countZeros(max + 1, zeros) - 1;\n  }\n\n  stops = [...stops];\n  stops.sort(compare);\n  return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n  if (start === stop) {\n    return { pattern: start, count: [], digits: 0 };\n  }\n\n  let zipped = zip(start, stop);\n  let digits = zipped.length;\n  let pattern = '';\n  let count = 0;\n\n  for (let i = 0; i < digits; i++) {\n    let [startDigit, stopDigit] = zipped[i];\n\n    if (startDigit === stopDigit) {\n      pattern += startDigit;\n\n    } else if (startDigit !== '0' || stopDigit !== '9') {\n      pattern += toCharacterClass(startDigit, stopDigit, options);\n\n    } else {\n      count++;\n    }\n  }\n\n  if (count) {\n    pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n  }\n\n  return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n  let ranges = splitToRanges(min, max);\n  let tokens = [];\n  let start = min;\n  let prev;\n\n  for (let i = 0; i < ranges.length; i++) {\n    let max = ranges[i];\n    let obj = rangeToPattern(String(start), String(max), options);\n    let zeros = '';\n\n    if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n      if (prev.count.length > 1) {\n        prev.count.pop();\n      }\n\n      prev.count.push(obj.count[0]);\n      prev.string = prev.pattern + toQuantifier(prev.count);\n      start = max + 1;\n      continue;\n    }\n\n    if (tok.isPadded) {\n      zeros = padZeros(max, tok, options);\n    }\n\n    obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n    tokens.push(obj);\n    start = max + 1;\n    prev = obj;\n  }\n\n  return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n  let result = [];\n\n  for (let ele of arr) {\n    let { string } = ele;\n\n    // only push if _both_ are negative...\n    if (!intersection && !contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n\n    // or _both_ are positive\n    if (intersection && contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n  }\n  return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n  let arr = [];\n  for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n  return arr;\n}\n\nfunction compare(a, b) {\n  return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n  return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n  return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n  return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n  let [start = 0, stop = ''] = digits;\n  if (stop || start > 1) {\n    return `{${start + (stop ? ',' + stop : '')}}`;\n  }\n  return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n  return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n  return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n  if (!tok.isPadded) {\n    return value;\n  }\n\n  let diff = Math.abs(tok.maxLen - String(value).length);\n  let relax = options.relaxZeros !== false;\n\n  switch (diff) {\n    case 0:\n      return '';\n    case 1:\n      return relax ? '0?' : '0';\n    case 2:\n      return relax ? '0{0,2}' : '00';\n    default: {\n      return relax ? `0{0,${diff}}` : `0{${diff}}`;\n    }\n  }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('timeline-entry-item',{staticClass:\"note note-wrapper note-comment being-posted fade-in-half\",class:_vm.internalNoteClass},[_c('div',{staticClass:\"timeline-avatar gl-float-left\"},[_c('gl-avatar-link',{attrs:{\"href\":_vm.getUserData.path}},[_c('gl-avatar',{attrs:{\"src\":_vm.getUserData.avatar_url,\"entity-name\":_vm.getUserData.username,\"alt\":_vm.getUserData.name,\"size\":32}})],1)],1),_vm._v(\" \"),_c('div',{ref:\"note\",staticClass:\"timeline-content\",class:{ discussion: !_vm.note.individual_note }},[_c('div',{staticClass:\"note-header\"},[_c('div',{staticClass:\"note-header-info\"},[_c('a',{attrs:{\"href\":_vm.getUserData.path}},[_c('span',{staticClass:\"gl-hidden gl-font-bold sm:gl-inline-block\"},[_vm._v(_vm._s(_vm.getUserData.name))]),_vm._v(\" \"),_c('span',{staticClass:\"note-headline-light\"},[_vm._v(\"@\"+_vm._s(_vm.getUserData.username))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"timeline-discussion-body\"},[_c('div',{staticClass:\"note-body\"},[_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.renderedNote),expression:\"renderedNote\"}],staticClass:\"note-text md\"})])])])])\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!./placeholder_note.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!./placeholder_note.vue?vue&type=script&lang=js\"","<script>\n/**\n * Common component to render a placeholder note and user information.\n *\n * This component needs to be used with a vuex store.\n * That vuex store needs to have a `getUserData` getter that contains\n * {\n *   path: String,\n *   avatar_url: String,\n *   name: String,\n *   username: String,\n * }\n *\n * @example\n * <placeholder-note\n *   :note=\"{body: 'This is a note'}\"\n *   />\n */\nimport { GlAvatarLink, GlAvatar } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { renderMarkdown } from '~/notes/utils';\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\n\nexport default {\n  name: 'PlaceholderNote',\n  directives: { SafeHtml },\n  components: {\n    GlAvatarLink,\n    GlAvatar,\n    TimelineEntryItem,\n  },\n  props: {\n    note: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    isOverviewTab: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    internalNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    ...mapGetters(['getUserData']),\n    renderedNote() {\n      return renderMarkdown(this.note.body);\n    },\n    internalNoteClass() {\n      return {\n        'internal-note': this.internalNote,\n      };\n    },\n  },\n};\n</script>\n\n<template>\n  <timeline-entry-item\n    class=\"note note-wrapper note-comment being-posted fade-in-half\"\n    :class=\"internalNoteClass\"\n  >\n    <div class=\"timeline-avatar gl-float-left\">\n      <gl-avatar-link :href=\"getUserData.path\">\n        <gl-avatar\n          :src=\"getUserData.avatar_url\"\n          :entity-name=\"getUserData.username\"\n          :alt=\"getUserData.name\"\n          :size=\"32\"\n        />\n      </gl-avatar-link>\n    </div>\n    <div ref=\"note\" :class=\"{ discussion: !note.individual_note }\" class=\"timeline-content\">\n      <div class=\"note-header\">\n        <div class=\"note-header-info\">\n          <a :href=\"getUserData.path\">\n            <span class=\"gl-hidden gl-font-bold sm:gl-inline-block\">{{ getUserData.name }}</span>\n            <span class=\"note-headline-light\">@{{ getUserData.username }}</span>\n          </a>\n        </div>\n      </div>\n      <div class=\"timeline-discussion-body\">\n        <div class=\"note-body\">\n          <div v-safe-html=\"renderedNote\" class=\"note-text md\"></div>\n        </div>\n      </div>\n    </div>\n  </timeline-entry-item>\n</template>\n","import { render, staticRenderFns } from \"./placeholder_note.vue?vue&type=template&id=b3280ce2\"\nimport script from \"./placeholder_note.vue?vue&type=script&lang=js\"\nexport * from \"./placeholder_note.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","<script>\nexport default {\n  name: 'DynamicScrollerItem',\n\n  inject: [\n    'vscrollData',\n    'vscrollParent',\n    'vscrollResizeObserver',\n  ],\n\n  props: {\n    // eslint-disable-next-line vue/require-prop-types\n    item: {\n      required: true,\n    },\n\n    watchData: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Indicates if the view is actively used to display an item.\n     */\n    active: {\n      type: Boolean,\n      required: true,\n    },\n\n    index: {\n      type: Number,\n      default: undefined,\n    },\n\n    sizeDependencies: {\n      type: [Array, Object],\n      default: null,\n    },\n\n    emitResize: {\n      type: Boolean,\n      default: false,\n    },\n\n    tag: {\n      type: String,\n      default: 'div',\n    },\n  },\n\n  computed: {\n    id () {\n      return this.vscrollData.simpleArray ? this.index : this.item[this.vscrollData.keyField]\n    },\n\n    size () {\n      return (this.vscrollData.validSizes[this.id] && this.vscrollData.sizes[this.id]) || 0\n    },\n\n    finalActive () {\n      return this.active && this.vscrollData.active\n    },\n  },\n\n  watch: {\n    watchData: 'updateWatchData',\n\n    id () {\n      if (!this.size) {\n        this.onDataUpdate()\n      }\n    },\n\n    finalActive (value) {\n      if (!this.size) {\n        if (value) {\n          if (!this.vscrollParent.$_undefinedMap[this.id]) {\n            this.vscrollParent.$_undefinedSizes++\n            this.vscrollParent.$_undefinedMap[this.id] = true\n          }\n        } else {\n          if (this.vscrollParent.$_undefinedMap[this.id]) {\n            this.vscrollParent.$_undefinedSizes--\n            this.vscrollParent.$_undefinedMap[this.id] = false\n          }\n        }\n      }\n\n      if (this.vscrollResizeObserver) {\n        if (value) {\n          this.observeSize()\n        } else {\n          this.unobserveSize()\n        }\n      } else if (value && this.$_pendingVScrollUpdate === this.id) {\n        this.updateSize()\n      }\n    },\n  },\n\n  created () {\n    if (this.$isServer) return\n\n    this.$_forceNextVScrollUpdate = null\n    this.updateWatchData()\n\n    if (!this.vscrollResizeObserver) {\n      for (const k in this.sizeDependencies) {\n        this.$watch(() => this.sizeDependencies[k], this.onDataUpdate)\n      }\n\n      this.vscrollParent.$on('vscroll:update', this.onVscrollUpdate)\n      this.vscrollParent.$on('vscroll:update-size', this.onVscrollUpdateSize)\n    }\n  },\n\n  mounted () {\n    if (this.vscrollData.active) {\n      this.updateSize()\n      this.observeSize()\n    }\n  },\n\n  beforeDestroy () {\n    this.vscrollParent.$off('vscroll:update', this.onVscrollUpdate)\n    this.vscrollParent.$off('vscroll:update-size', this.onVscrollUpdateSize)\n    this.unobserveSize()\n  },\n\n  methods: {\n    updateSize () {\n      if (this.finalActive) {\n        if (this.$_pendingSizeUpdate !== this.id) {\n          this.$_pendingSizeUpdate = this.id\n          this.$_forceNextVScrollUpdate = null\n          this.$_pendingVScrollUpdate = null\n          this.computeSize(this.id)\n        }\n      } else {\n        this.$_forceNextVScrollUpdate = this.id\n      }\n    },\n\n    updateWatchData () {\n      if (this.watchData) {\n        this.$_watchData = this.$watch('data', () => {\n          this.onDataUpdate()\n        }, {\n          deep: true,\n        })\n      } else if (this.$_watchData) {\n        this.$_watchData()\n        this.$_watchData = null\n      }\n    },\n\n    onVscrollUpdate ({ force }) {\n      // If not active, sechedule a size update when it becomes active\n      if (!this.finalActive && force) {\n        this.$_pendingVScrollUpdate = this.id\n      }\n\n      if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n        this.updateSize()\n      }\n    },\n\n    onDataUpdate () {\n      this.updateSize()\n    },\n\n    computeSize (id) {\n      this.$nextTick(() => {\n        if (this.id === id) {\n          const width = this.$el.offsetWidth\n          const height = this.$el.offsetHeight\n          this.applySize(width, height)\n        }\n        this.$_pendingSizeUpdate = null\n      })\n    },\n\n    applySize (width, height) {\n      const size = Math.round(this.vscrollParent.direction === 'vertical' ? height : width)\n      if (size && this.size !== size) {\n        if (this.vscrollParent.$_undefinedMap[this.id]) {\n          this.vscrollParent.$_undefinedSizes--\n          this.vscrollParent.$_undefinedMap[this.id] = undefined\n        }\n        this.$set(this.vscrollData.sizes, this.id, size)\n        this.$set(this.vscrollData.validSizes, this.id, true)\n        if (this.emitResize) this.$emit('resize', this.id)\n      }\n    },\n\n    observeSize () {\n      if (!this.vscrollResizeObserver) return\n      this.$_parentNode = this.$el.parentNode;\n      this.vscrollResizeObserver.observe(this.$_parentNode)\n      this.$_parentNode.addEventListener('resize', this.onResize)\n    },\n\n    unobserveSize () {\n      if (!this.vscrollResizeObserver) return\n      this.vscrollResizeObserver.unobserve(this.$_parentNode)\n      this.$_parentNode.removeEventListener('resize', this.onResize)\n    },\n\n    onResize (event) {\n      const { width, height } = event.detail.contentRect\n      this.applySize(width, height)\n    },\n  },\n\n  render (h) {\n    return h(this.tag, this.$slots.default)\n  },\n}\n</script>\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!./DynamicScrollerItem.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!./DynamicScrollerItem.vue?vue&type=script&lang=js\"","var render, staticRenderFns\nimport script from \"./DynamicScrollerItem.vue?vue&type=script&lang=js\"\nexport * from \"./DynamicScrollerItem.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 { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  caption: makeProp(PROP_TYPE_STRING),\n  captionHtml: makeProp(PROP_TYPE_STRING)\n  // `caption-top` is part of table-render mixin (styling)\n  // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst captionMixin = extend({\n  props,\n  computed: {\n    captionId() {\n      return this.isStacked ? this.safeId('_caption_') : null;\n    }\n  },\n  methods: {\n    renderCaption() {\n      const {\n        caption,\n        captionHtml\n      } = this;\n      const h = this.$createElement;\n      let $caption = h();\n      const hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n      if (hasCaptionSlot || caption || captionHtml) {\n        $caption = h('caption', {\n          attrs: {\n            id: this.captionId\n          },\n          domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n          key: 'caption',\n          ref: 'caption'\n        }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n      }\n      return $caption;\n    }\n  }\n});\n\nexport { captionMixin, props };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-editable-item',{ref:\"editable\",attrs:{\"title\":_vm.attributeTypeTitle,\"data-testid\":`${_vm.formatIssuableAttribute.kebab}-edit`,\"button-id\":`${_vm.formatIssuableAttribute.kebab}-edit`,\"tracking\":_vm.tracking,\"should-show-confirmation-popover\":_vm.shouldShowConfirmationPopover,\"loading\":_vm.updating || _vm.loading},on:{\"open\":_vm.showDropdown,\"edit-confirm\":_vm.handleEditConfirmation},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_vm._t(\"value-collapsed\",function(){return [(_vm.isClassicSidebar)?_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.attributeTypeTitle}},[_c('gl-icon',{attrs:{\"aria-label\":_vm.attributeTypeTitle,\"name\":_vm.attributeTypeIcon}}),_vm._v(\" \"),_c('span',{staticClass:\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(\"\\n          \"+_vm._s(_vm.attributeTitle)+\"\\n        \")])],1):_vm._e()]},{\"currentAttribute\":_vm.currentAttribute}),_vm._v(\" \"),_c('div',{class:_vm.isClassicSidebar ? 'hide-collapsed' : 'gl-mt-3',attrs:{\"data-testid\":`select-${_vm.formatIssuableAttribute.kebab}`}},[(_vm.updating)?_c('span',[_vm._v(_vm._s(_vm.selectedTitle))]):(!_vm.currentAttribute && _vm.hasCurrentAttribute)?[_c('gl-icon',{attrs:{\"name\":\"warning\",\"variant\":\"warning\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.i18n.noPermissionToView))])]:(!_vm.currentAttribute)?_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.none)+\"\\n      \")]):_vm._t(\"value\",function(){return [_c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:(_vm.tooltipText),expression:\"tooltipText\"}],staticClass:\"gl-text-inherit hover:gl-text-blue-800\",attrs:{\"href\":_vm.attributeUrl,\"data-testid\":`${_vm.formatIssuableAttribute.kebab}-link`}},[_vm._v(\"\\n          \"+_vm._s(_vm.attributeTitle)+\"\\n          \"),(_vm.isAttributeOverdue(_vm.currentAttribute))?_c('span',[_vm._v(_vm._s(_vm.$options.i18n.expired))]):_vm._e()])]},{\"attributeTitle\":_vm.attributeTitle,\"attributeUrl\":_vm.attributeUrl,\"currentAttribute\":_vm.currentAttribute})],2)]},proxy:true},(_vm.shouldShowConfirmationPopover)?{key:\"default\",fn:function({ toggle }){return [_c('gl-popover',{ref:\"popover\",attrs:{\"target\":`${_vm.formatIssuableAttribute.kebab}-edit`,\"placement\":\"bottomleft\",\"boundary\":\"viewport\",\"triggers\":\"click\"}},[_c('div',{staticClass:\"gl-mb-4 gl-text-base\"},[_vm._v(\"\\n        \"+_vm._s(_vm.i18n.editConfirmation)+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('gl-button',{attrs:{\"size\":\"small\",\"variant\":\"confirm\",\"category\":\"primary\",\"data-testid\":\"confirm-edit-cta\"},on:{\"click\":function($event){$event.preventDefault();return (() => _vm.handlePopoverConfirm(toggle)).apply(null, arguments)}}},[_vm._v(_vm._s(_vm.i18n.editConfirmationCta))]),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-ml-auto\",attrs:{\"size\":\"small\",\"name\":\"cancel\",\"variant\":\"default\",\"category\":\"primary\",\"data-testid\":\"confirm-edit-cancel\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handlePopoverClose.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.i18n.editConfirmationCancel))])],1)])]}}:{key:\"default\",fn:function(){return [_c('sidebar-dropdown',{ref:\"dropdown\",attrs:{\"attr-workspace-path\":_vm.attrWorkspacePath,\"current-attribute\":_vm.currentAttribute,\"issuable-attribute\":_vm.issuableAttribute,\"issuable-type\":_vm.issuableType,\"show-work-item-epics\":_vm.showWorkItemEpics},on:{\"change\":_vm.updateAttribute},scopedSlots:_vm._u([{key:\"list\",fn:function({ attributesList, isAttributeChecked, updateAttribute: update }){return [_vm._t(\"list\",null,{\"attributesList\":attributesList,\"isAttributeChecked\":isAttributeChecked,\"updateAttribute\":update})]}}],null,true)})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_dropdown_widget.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_dropdown_widget.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlIcon, GlLink, GlPopover, GlTooltipDirective } from '@gitlab/ui';\nimport { kebabCase, snakeCase } from 'lodash';\nimport { createAlert } from '~/alert';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { timeFor } from '~/lib/utils/datetime_utility';\nimport { __ } from '~/locale';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\n\nimport {\n  dropdowni18nText,\n  LocalizedIssuableAttributeType,\n  IssuableAttributeTypeKeyMap,\n  IssuableAttributeType,\n  Tracking,\n} from 'ee_else_ce/sidebar/constants';\nimport { issuableAttributesQueries } from 'ee_else_ce/sidebar/queries/constants';\nimport SidebarDropdown from './sidebar_dropdown.vue';\nimport SidebarEditableItem from './sidebar_editable_item.vue';\n\nexport default {\n  i18n: {\n    expired: __('(expired)'),\n    none: __('None'),\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlLink,\n    GlIcon,\n    GlPopover,\n    GlButton,\n    SidebarDropdown,\n    SidebarEditableItem,\n  },\n  mixins: [glFeatureFlagMixin()],\n  inject: {\n    isClassicSidebar: {\n      default: false,\n    },\n    issuableAttributesQueries: {\n      default: issuableAttributesQueries,\n    },\n    widgetTitleText: {\n      default: {\n        [IssuableAttributeType.Milestone]: __('Milestone'),\n        expired: __('(expired)'),\n        none: __('None'),\n      },\n    },\n  },\n  props: {\n    issuableAttribute: {\n      type: String,\n      required: true,\n    },\n    workspacePath: {\n      required: true,\n      type: String,\n    },\n    iid: {\n      required: true,\n      type: String,\n    },\n    attrWorkspacePath: {\n      required: true,\n      type: String,\n    },\n    issuableType: {\n      type: String,\n      required: true,\n      validator(value) {\n        return [TYPE_ISSUE, TYPE_MERGE_REQUEST].includes(value);\n      },\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    showWorkItemEpics: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isEpicAttribute: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    issuableParent: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n  },\n  apollo: {\n    issuable: {\n      query() {\n        const { current } = this.issuableAttributeQuery;\n        const { query } = current[this.issuableType];\n\n        return query;\n      },\n      variables() {\n        return {\n          fullPath: this.workspacePath,\n          iid: this.iid,\n        };\n      },\n      update(data) {\n        return data.workspace?.issuable || {};\n      },\n      result({ data }) {\n        if (this.glFeatures?.epicWidgetEditConfirmation && this.isEpicAttribute) {\n          this.hasCurrentAttribute = data?.workspace?.issuable.hasEpic;\n        }\n      },\n      skip() {\n        return !this.iid;\n      },\n      error(error) {\n        createAlert({\n          message: this.i18n.currentFetchError,\n          captureError: true,\n          error,\n        });\n      },\n      subscribeToMore: {\n        document() {\n          return issuableAttributesQueries[this.issuableAttribute].subscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return this.shouldSkipRealTimeEpicLinkUpdates;\n        },\n      },\n    },\n  },\n  data() {\n    return {\n      updating: false,\n      selectedTitle: null,\n      issuable: {},\n      hasCurrentAttribute: false,\n      editConfirmation: false,\n      tracking: {\n        event: Tracking.editEvent,\n        label: Tracking.rightSidebarLabel,\n        property: this.issuableAttribute,\n      },\n    };\n  },\n  computed: {\n    currentAttribute() {\n      if (this.isEpicAttribute && this.issuableParent?.attribute) {\n        return this.issuableParent.attribute;\n      }\n      return this.issuable.attribute;\n    },\n    issuableId() {\n      return this.issuable.id;\n    },\n    issuableAttributeQuery() {\n      return this.issuableAttributesQueries[this.issuableAttribute];\n    },\n    attributeTitle() {\n      return this.currentAttribute?.title || __('None');\n    },\n    attributeUrl() {\n      return this.currentAttribute?.webUrl;\n    },\n    loading() {\n      return this.$apollo.queries.issuable.loading;\n    },\n    attributeTypeTitle() {\n      return this.widgetTitleText[this.issuableAttribute];\n    },\n    attributeTypeIcon() {\n      return this.icon || this.issuableAttribute;\n    },\n    tooltipText() {\n      return timeFor(this.currentAttribute?.dueDate);\n    },\n    i18n() {\n      const localizedAttribute =\n        LocalizedIssuableAttributeType[IssuableAttributeTypeKeyMap[this.issuableAttribute]];\n      return dropdowni18nText(localizedAttribute, this.issuableType);\n    },\n    formatIssuableAttribute() {\n      return {\n        kebab: kebabCase(this.issuableAttribute),\n        snake: snakeCase(this.issuableAttribute),\n      };\n    },\n    shouldShowConfirmationPopover() {\n      if (!this.glFeatures?.epicWidgetEditConfirmation) {\n        return false;\n      }\n\n      return this.isEpicAttribute && this.currentAttribute === null && this.hasCurrentAttribute\n        ? !this.editConfirmation\n        : false;\n    },\n    shouldSkipRealTimeEpicLinkUpdates() {\n      return !this.issuableId || this.issuableAttribute !== IssuableAttributeType.Epic;\n    },\n  },\n  methods: {\n    updateAttribute({ id, workItemType }) {\n      if (this.currentAttribute === null && id === null) return;\n      if (id === this.currentAttribute?.id) return;\n\n      if (this.showWorkItemEpics && this.isEpicAttribute) {\n        this.$emit('updateAttribute', { id, workItemType });\n      } else {\n        this.updating = true;\n\n        const { current } = this.issuableAttributeQuery;\n        const { mutation } = current[this.issuableType];\n\n        this.$apollo\n          .mutate({\n            mutation,\n            variables: {\n              fullPath: this.workspacePath,\n              attributeId:\n                this.issuableAttribute === IssuableAttributeType.Milestone &&\n                this.issuableType === TYPE_ISSUE\n                  ? getIdFromGraphQLId(id)\n                  : id,\n              iid: this.iid,\n            },\n          })\n          .then(({ data }) => {\n            if (data.issuableSetAttribute?.errors?.length) {\n              createAlert({\n                message: data.issuableSetAttribute.errors[0],\n                captureError: true,\n                error: data.issuableSetAttribute.errors[0],\n              });\n            } else {\n              this.$emit('attribute-updated', data);\n            }\n          })\n          .catch((error) => {\n            createAlert({ message: this.i18n.updateError, captureError: true, error });\n          })\n          .finally(() => {\n            this.updating = false;\n            this.selectedTitle = null;\n          });\n      }\n    },\n    isAttributeOverdue(attribute) {\n      return this.issuableAttribute === IssuableAttributeType.Milestone\n        ? attribute?.expired\n        : false;\n    },\n    showDropdown() {\n      this.$refs.dropdown.show();\n    },\n    handlePopoverClose() {\n      this.$refs.popover.$emit('close');\n    },\n    handlePopoverConfirm(cb) {\n      this.editConfirmation = true;\n      this.handlePopoverClose();\n      setTimeout(cb, 0);\n    },\n    handleEditConfirmation() {\n      this.$refs.popover.$emit('open');\n    },\n  },\n};\n</script>\n\n<template>\n  <sidebar-editable-item\n    ref=\"editable\"\n    :title=\"attributeTypeTitle\"\n    :data-testid=\"`${formatIssuableAttribute.kebab}-edit`\"\n    :button-id=\"`${formatIssuableAttribute.kebab}-edit`\"\n    :tracking=\"tracking\"\n    :should-show-confirmation-popover=\"shouldShowConfirmationPopover\"\n    :loading=\"updating || loading\"\n    @open=\"showDropdown\"\n    @edit-confirm=\"handleEditConfirmation\"\n  >\n    <template #collapsed>\n      <slot name=\"value-collapsed\" :current-attribute=\"currentAttribute\">\n        <div\n          v-if=\"isClassicSidebar\"\n          v-gl-tooltip.left.viewport\n          :title=\"attributeTypeTitle\"\n          class=\"sidebar-collapsed-icon\"\n        >\n          <gl-icon :aria-label=\"attributeTypeTitle\" :name=\"attributeTypeIcon\" />\n          <span class=\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\">\n            {{ attributeTitle }}\n          </span>\n        </div>\n      </slot>\n      <div\n        :data-testid=\"`select-${formatIssuableAttribute.kebab}`\"\n        :class=\"isClassicSidebar ? 'hide-collapsed' : 'gl-mt-3'\"\n      >\n        <span v-if=\"updating\">{{ selectedTitle }}</span>\n        <template v-else-if=\"!currentAttribute && hasCurrentAttribute\">\n          <gl-icon name=\"warning\" variant=\"warning\" />\n          <span class=\"gl-text-subtle\">{{ i18n.noPermissionToView }}</span>\n        </template>\n        <span v-else-if=\"!currentAttribute\" class=\"gl-text-subtle\">\n          {{ $options.i18n.none }}\n        </span>\n        <slot\n          v-else\n          name=\"value\"\n          :attribute-title=\"attributeTitle\"\n          :attribute-url=\"attributeUrl\"\n          :current-attribute=\"currentAttribute\"\n        >\n          <gl-link\n            v-gl-tooltip=\"tooltipText\"\n            class=\"gl-text-inherit hover:gl-text-blue-800\"\n            :href=\"attributeUrl\"\n            :data-testid=\"`${formatIssuableAttribute.kebab}-link`\"\n          >\n            {{ attributeTitle }}\n            <span v-if=\"isAttributeOverdue(currentAttribute)\">{{ $options.i18n.expired }}</span>\n          </gl-link>\n        </slot>\n      </div>\n    </template>\n    <template v-if=\"shouldShowConfirmationPopover\" #default=\"{ toggle }\">\n      <gl-popover\n        ref=\"popover\"\n        :target=\"`${formatIssuableAttribute.kebab}-edit`\"\n        placement=\"bottomleft\"\n        boundary=\"viewport\"\n        triggers=\"click\"\n      >\n        <div class=\"gl-mb-4 gl-text-base\">\n          {{ i18n.editConfirmation }}\n        </div>\n        <div class=\"gl-flex gl-items-center\">\n          <gl-button\n            size=\"small\"\n            variant=\"confirm\"\n            category=\"primary\"\n            data-testid=\"confirm-edit-cta\"\n            @click.prevent=\"() => handlePopoverConfirm(toggle)\"\n            >{{ i18n.editConfirmationCta }}</gl-button\n          >\n          <gl-button\n            class=\"gl-ml-auto\"\n            size=\"small\"\n            name=\"cancel\"\n            variant=\"default\"\n            category=\"primary\"\n            data-testid=\"confirm-edit-cancel\"\n            @click.prevent=\"handlePopoverClose\"\n            >{{ i18n.editConfirmationCancel }}</gl-button\n          >\n        </div>\n      </gl-popover>\n    </template>\n    <template v-else #default>\n      <sidebar-dropdown\n        ref=\"dropdown\"\n        :attr-workspace-path=\"attrWorkspacePath\"\n        :current-attribute=\"currentAttribute\"\n        :issuable-attribute=\"issuableAttribute\"\n        :issuable-type=\"issuableType\"\n        :show-work-item-epics=\"showWorkItemEpics\"\n        @change=\"updateAttribute\"\n      >\n        <template #list=\"{ attributesList, isAttributeChecked, updateAttribute: update }\">\n          <slot\n            name=\"list\"\n            :attributes-list=\"attributesList\"\n            :is-attribute-checked=\"isAttributeChecked\"\n            :update-attribute=\"update\"\n          >\n          </slot>\n        </template>\n      </sidebar-dropdown>\n    </template>\n  </sidebar-editable-item>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_dropdown_widget.vue?vue&type=template&id=5aba64de\"\nimport script from \"./sidebar_dropdown_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_dropdown_widget.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    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"projectIssueIterationMutation\"},\"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\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"attributeId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IterationID\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuableSetAttribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"issueSetIteration\"},\"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\":\"fullPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iterationId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"attributeId\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuable\"},\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"attribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"iteration\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":354}};\n    doc.loc.source = {\"body\":\"mutation projectIssueIterationMutation($fullPath: ID!, $iid: String!, $attributeId: IterationID) {\\n  issuableSetAttribute: issueSetIteration(\\n    input: { projectPath: $fullPath, iid: $iid, iterationId: $attributeId }\\n  ) {\\n    errors\\n    issuable: issue {\\n      id\\n      attribute: iteration {\\n        title\\n        id\\n        state\\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[\"projectIssueIterationMutation\"] = oneQuery(doc, \"projectIssueIterationMutation\");\n        \n","import { clamp } from 'lodash';\nimport {\n  ARROW_DOWN_KEY,\n  ARROW_UP_KEY,\n  END_KEY,\n  HOME_KEY,\n  ESC_KEY,\n  NUMPAD_ENTER_KEY,\n} from '~/lib/utils/keys';\n\nexport default {\n  methods: {\n    getFocusableOptions() {\n      return Array.from(this.$refs.resultsList?.querySelectorAll('.gl-new-dropdown-item') || []);\n    },\n    onKeydown(event) {\n      const { code, target } = event;\n\n      let stop = true;\n\n      const elements = this.getFocusableOptions();\n      if (elements.length < 1) return;\n\n      const isSearchInput = target.matches('input[role=\"searchbox\"]');\n\n      if (code === HOME_KEY) {\n        if (isSearchInput) return;\n\n        this.focusItem(0, elements);\n      } else if (code === END_KEY) {\n        if (isSearchInput) return;\n\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP_KEY) {\n        if (isSearchInput) return;\n\n        if (elements.indexOf(target) === 0) {\n          this.focusSearchInput();\n        } else {\n          this.focusNextItem(event, elements, -1);\n        }\n      } else if (code === ARROW_DOWN_KEY) {\n        this.focusNextItem(event, elements, 1);\n      } else if (code === ESC_KEY) {\n        this.$refs.modal.close();\n      } else if (code === NUMPAD_ENTER_KEY) {\n        event.target?.firstChild.click();\n      } else {\n        stop = false;\n      }\n\n      if (stop) {\n        event.preventDefault();\n      }\n    },\n    focusSearchInput() {\n      this.$refs.searchInput.$el.querySelector('input')?.focus();\n    },\n    focusNextItem(event, elements, offset) {\n      const { target } = event;\n      const currentIndex = elements.indexOf(target);\n      const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n\n      this.focusItem(nextIndex, elements);\n    },\n    focusItem(index, elements) {\n      this.nextFocusedItemIndex = index;\n\n      elements[index]?.focus();\n    },\n  },\n};\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"time-tracker sidebar-help-wrap\",attrs:{\"data-testid\":\"time-tracker\"}},[(_vm.showCollapsed)?_c('time-tracking-collapsed-state',{attrs:{\"show-comparison-state\":_vm.showComparisonState,\"show-no-time-tracking-state\":_vm.showNoTimeTrackingState,\"show-spent-only-state\":_vm.showSpentOnlyState,\"show-estimate-only-state\":_vm.showEstimateOnlyState,\"time-spent-human-readable\":_vm.humanTotalTimeSpent,\"time-estimate-human-readable\":_vm.humanTimeEstimate}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hide-collapsed gl-flex gl-items-center gl-font-bold gl-leading-20 gl-text-default\"},[_vm._v(\"\\n    \"+_vm._s(_vm.__('Time tracking'))+\"\\n    \"),(_vm.isTimeTrackingInfoLoading)?_c('gl-loading-icon',{staticClass:\"gl-ml-2\",attrs:{\"size\":\"sm\",\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.canSetTimeEstimate || _vm.canAddTimeEntries)?_c('div',{staticClass:\"gl-ml-auto gl-flex\"},[(_vm.canSetTimeEstimate)?_c('gl-button',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal\",value:(_vm.$options.setTimeEstimateModalId),expression:\"$options.setTimeEstimateModalId\"},{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.top\",modifiers:{\"top\":true}}],attrs:{\"category\":\"tertiary\",\"icon\":\"timer\",\"size\":\"small\",\"data-testid\":\"set-time-estimate-button\",\"title\":_vm.timeEstimateTooltip,\"aria-label\":_vm.timeEstimateTooltip}}):_vm._e(),_vm._v(\" \"),(_vm.canAddTimeEntries)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.top\",modifiers:{\"top\":true}}],attrs:{\"category\":\"tertiary\",\"icon\":\"plus\",\"size\":\"small\",\"data-testid\":\"add-time-entry-button\",\"title\":_vm.__('Add time entry')},on:{\"click\":function($event){return _vm.openRegisterTimeSpentModal()}}}):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(!_vm.isTimeTrackingInfoLoading)?_c('div',{staticClass:\"hide-collapsed\"},[(_vm.showEstimateOnlyState)?_c('div',{attrs:{\"data-testid\":\"estimateOnlyPane\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.estimatedOnlyText)+\" \"+_vm._s(_vm.humanTimeEstimate)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showSpentOnlyState)?_c('time-tracking-spent-only-pane',{attrs:{\"time-spent-human-readable\":_vm.humanTotalTimeSpent}}):_vm._e(),_vm._v(\" \"),(_vm.showNoTimeTrackingState)?_c('div',{attrs:{\"data-testid\":\"noTrackingPane\"}},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.$options.i18n.noTimeTrackingText))])]):_vm._e(),_vm._v(\" \"),(_vm.showComparisonState)?_c('time-tracking-comparison-pane',{attrs:{\"time-estimate\":_vm.timeEstimate,\"time-spent\":_vm.totalTimeSpent,\"time-spent-human-readable\":_vm.humanTotalTimeSpent,\"time-estimate-human-readable\":_vm.humanTimeEstimate,\"limit-to-hours\":_vm.limitToHours}}):_vm._e(),_vm._v(\" \"),(_vm.isTimeReportSupported)?_c('div',[(_vm.hasTotalTimeSpent)?_c('gl-link',{directives:[{name:\"gl-modal\",rawName:\"v-gl-modal\",value:('time-tracking-report'),expression:\"'time-tracking-report'\"}],staticClass:\"gl-text-default\",attrs:{\"data-testid\":\"reportLink\",\"href\":\"#\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Time tracking report'))+\"\\n      \")]):_vm._e(),_vm._v(\" \"),_c('gl-modal',{attrs:{\"modal-id\":\"time-tracking-report\",\"size\":\"lg\",\"title\":_vm.__('Time tracking report'),\"hide-footer\":true}},[_c('time-tracking-report',{attrs:{\"limit-to-hours\":_vm.limitToHours,\"issuable-id\":_vm.issuableId}})],1)],1):_vm._e(),_vm._v(\" \"),_c('create-timelog-form',{attrs:{\"issuable-id\":_vm.issuableId}}),_vm._v(\" \"),_c('set-time-estimate-form',{attrs:{\"full-path\":_vm.fullPath,\"issuable-iid\":_vm.issuableIid,\"time-tracking\":_vm.timeTracking}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./collapsed_state.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!./collapsed_state.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n  name: 'TimeTrackingCollapsedState',\n  components: {\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    showComparisonState: {\n      type: Boolean,\n      required: true,\n    },\n    showSpentOnlyState: {\n      type: Boolean,\n      required: true,\n    },\n    showEstimateOnlyState: {\n      type: Boolean,\n      required: true,\n    },\n    showNoTimeTrackingState: {\n      type: Boolean,\n      required: true,\n    },\n    timeSpentHumanReadable: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    timeEstimateHumanReadable: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    divClass() {\n      if (this.showComparisonState) {\n        return 'compare';\n      }\n      if (this.showEstimateOnlyState) {\n        return 'estimate-only';\n      }\n      if (this.showSpentOnlyState) {\n        return 'spend-only';\n      }\n      if (this.showNoTimeTrackingState) {\n        return 'no-tracking';\n      }\n\n      return '';\n    },\n    spanClass() {\n      if (this.showNoTimeTrackingState) {\n        return 'no-value collapse-truncated-title gl-pt-2 gl-px-3 gl-text-sm';\n      }\n\n      return '';\n    },\n    text() {\n      if (this.showComparisonState) {\n        return `${this.timeSpentHumanReadable} / ${this.timeEstimateHumanReadable}`;\n      }\n      if (this.showEstimateOnlyState) {\n        return `-- / ${this.timeEstimateHumanReadable}`;\n      }\n      if (this.showSpentOnlyState) {\n        return `${this.timeSpentHumanReadable} / --`;\n      }\n      if (this.showNoTimeTrackingState) {\n        return __('None');\n      }\n\n      return '';\n    },\n    timeTrackedTooltipText() {\n      let title;\n      if (this.showComparisonState) {\n        title = __('Time remaining');\n      } else if (this.showEstimateOnlyState) {\n        title = __('Estimated');\n      } else if (this.showSpentOnlyState) {\n        title = __('Time spent');\n      }\n\n      return sprintf('%{title}: %{text}', { title, text: this.text });\n    },\n    tooltipText() {\n      return this.showNoTimeTrackingState ? __('Time tracking') : this.timeTrackedTooltipText;\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    v-gl-tooltip:body.viewport.left\n    :title=\"tooltipText\"\n    data-testid=\"collapsedState\"\n    class=\"sidebar-collapsed-icon py-1 !gl-h-auto\"\n  >\n    <gl-icon name=\"timer\" />\n    <div class=\"time-tracking-collapsed-summary\">\n      <div class=\"gl-px-4\" :class=\"divClass\">\n        <span class=\"gl-text-sm\" :class=\"spanClass\"> {{ text }} </span>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./collapsed_state.vue?vue&type=template&id=74d723ca\"\nimport script from \"./collapsed_state.vue?vue&type=script&lang=js\"\nexport * from \"./collapsed_state.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',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip:body.viewport.left\",arg:\"body\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"sidebar-collapsed-icon py-1 !gl-h-auto\",attrs:{\"title\":_vm.tooltipText,\"data-testid\":\"collapsedState\"}},[_c('gl-icon',{attrs:{\"name\":\"timer\"}}),_vm._v(\" \"),_c('div',{staticClass:\"time-tracking-collapsed-summary\"},[_c('div',{staticClass:\"gl-px-4\",class:_vm.divClass},[_c('span',{staticClass:\"gl-text-sm\",class:_vm.spanClass},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")])])])],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!./comparison_pane.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!./comparison_pane.vue?vue&type=script&lang=js\"","<script>\nimport { GlProgressBar, GlTooltipDirective } from '@gitlab/ui';\nimport { parseSeconds, stringifyTime } from '~/lib/utils/datetime_utility';\nimport { s__, sprintf } from '~/locale';\n\nexport default {\n  name: 'TimeTrackingComparisonPane',\n  components: {\n    GlProgressBar,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    timeSpent: {\n      type: Number,\n      required: true,\n    },\n    timeEstimate: {\n      type: Number,\n      required: true,\n    },\n    timeSpentHumanReadable: {\n      type: String,\n      required: true,\n    },\n    timeEstimateHumanReadable: {\n      type: String,\n      required: true,\n    },\n    limitToHours: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    parsedTimeRemaining() {\n      const diffSeconds = this.timeEstimate - this.timeSpent;\n      return parseSeconds(diffSeconds, { limitToHours: this.limitToHours });\n    },\n    timeRemainingHumanReadable() {\n      return stringifyTime(this.parsedTimeRemaining);\n    },\n    timeRemainingTooltip() {\n      const { timeRemainingHumanReadable, timeRemainingMinutes } = this;\n      return timeRemainingMinutes < 0\n        ? sprintf(s__('TimeTracking|Over by %{timeRemainingHumanReadable}'), {\n            timeRemainingHumanReadable,\n          })\n        : sprintf(s__('TimeTracking|Time remaining: %{timeRemainingHumanReadable}'), {\n            timeRemainingHumanReadable,\n          });\n    },\n    /* Diff values for comparison meter */\n    timeRemainingMinutes() {\n      return this.timeEstimate - this.timeSpent;\n    },\n    timeRemainingPercent() {\n      return Math.floor((this.timeSpent / this.timeEstimate) * 100);\n    },\n    timeRemainingStatusClass() {\n      return this.timeEstimate >= this.timeSpent ? 'within_estimate' : 'over_estimate';\n    },\n    progressBarVariant() {\n      return this.timeRemainingPercent > 100 ? 'danger' : 'primary';\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-mt-2\" data-testid=\"timeTrackingComparisonPane\">\n    <div\n      v-gl-tooltip\n      data-testid=\"compareMeter\"\n      :title=\"timeRemainingTooltip\"\n      :class=\"timeRemainingStatusClass\"\n      class=\"compare-meter\"\n    >\n      <gl-progress-bar\n        data-testid=\"timeRemainingProgress\"\n        :value=\"timeRemainingPercent\"\n        :variant=\"progressBarVariant\"\n      />\n      <div class=\"compare-display-container gl-mt-2 gl-flex gl-justify-between\">\n        <div class=\"gl-float-left\">\n          <span class=\"gl-text-subtle\">{{ s__('TimeTracking|Spent') }}</span>\n          <span class=\"compare-value spent\">{{ timeSpentHumanReadable }}</span>\n        </div>\n        <div class=\"estimated gl-float-right\">\n          <span class=\"gl-text-subtle\">{{ s__('TimeTrackingEstimated|Est') }}</span>\n          <span class=\"compare-value\">{{ timeEstimateHumanReadable }}</span>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./comparison_pane.vue?vue&type=template&id=7d5da840\"\nimport script from \"./comparison_pane.vue?vue&type=script&lang=js\"\nexport * from \"./comparison_pane.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-mt-2\",attrs:{\"data-testid\":\"timeTrackingComparisonPane\"}},[_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"compare-meter\",class:_vm.timeRemainingStatusClass,attrs:{\"data-testid\":\"compareMeter\",\"title\":_vm.timeRemainingTooltip}},[_c('gl-progress-bar',{attrs:{\"data-testid\":\"timeRemainingProgress\",\"value\":_vm.timeRemainingPercent,\"variant\":_vm.progressBarVariant}}),_vm._v(\" \"),_c('div',{staticClass:\"compare-display-container gl-mt-2 gl-flex gl-justify-between\"},[_c('div',{staticClass:\"gl-float-left\"},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.s__('TimeTracking|Spent')))]),_vm._v(\" \"),_c('span',{staticClass:\"compare-value spent\"},[_vm._v(_vm._s(_vm.timeSpentHumanReadable))])]),_vm._v(\" \"),_c('div',{staticClass:\"estimated gl-float-right\"},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.s__('TimeTrackingEstimated|Est')))]),_vm._v(\" \"),_c('span',{staticClass:\"compare-value\"},[_vm._v(_vm._s(_vm.timeEstimateHumanReadable))])])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlSprintf } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nconst timeSpent = s__('TimeTracking|%{spentStart}Spent: %{spentEnd}');\n\nexport default {\n  name: 'TimeTrackingSpentOnlyPane',\n  timeSpent,\n  components: {\n    GlSprintf,\n  },\n  props: {\n    timeSpentHumanReadable: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"spentOnlyPane\">\n    <gl-sprintf :message=\"$options.timeSpent\">\n      <template #spent=\"{ content }\">\n        <span class=\"gl-font-bold\">{{ content }}</span\n        >{{ timeSpentHumanReadable }}\n      </template>\n    </gl-sprintf>\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!./spent_only_pane.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!./spent_only_pane.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./spent_only_pane.vue?vue&type=template&id=0706bdc9\"\nimport script from \"./spent_only_pane.vue?vue&type=script&lang=js\"\nexport * from \"./spent_only_pane.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',{attrs:{\"data-testid\":\"spentOnlyPane\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.timeSpent},scopedSlots:_vm._u([{key:\"spent\",fn:function({ content }){return [_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(content))]),_vm._v(_vm._s(_vm.timeSpentHumanReadable)+\"\\n    \")]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_tracker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_tracker.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlLink,\n  GlModal,\n  GlButton,\n  GlModalDirective,\n  GlLoadingIcon,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { BV_SHOW_MODAL } from '~/lib/utils/constants';\nimport { s__, __ } from '~/locale';\n\nimport { timeTrackingQueries } from '../../queries/constants';\nimport eventHub from '../../event_hub';\nimport TimeTrackingCollapsedState from './collapsed_state.vue';\nimport TimeTrackingComparisonPane from './comparison_pane.vue';\nimport TimeTrackingSpentOnlyPane from './spent_only_pane.vue';\nimport TimeTrackingReport from './time_tracking_report.vue';\nimport { CREATE_TIMELOG_MODAL_ID, SET_TIME_ESTIMATE_MODAL_ID } from './constants';\nimport CreateTimelogForm from './create_timelog_form.vue';\nimport SetTimeEstimateForm from './set_time_estimate_form.vue';\n\nexport default {\n  name: 'IssuableTimeTracker',\n  i18n: {\n    noTimeTrackingText: __('No estimate or time spent'),\n    estimatedOnlyText: s__('TimeTracking|Estimated:'),\n  },\n  components: {\n    GlLink,\n    GlModal,\n    GlButton,\n    GlLoadingIcon,\n    TimeTrackingCollapsedState,\n    TimeTrackingSpentOnlyPane,\n    TimeTrackingComparisonPane,\n    TimeTrackingReport,\n    CreateTimelogForm,\n    SetTimeEstimateForm,\n  },\n  directives: {\n    GlModal: GlModalDirective,\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: {\n    issuableType: {\n      default: null,\n    },\n  },\n  props: {\n    limitToHours: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    fullPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issuableId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    issuableIid: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    initialTimeTracking: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    /*\n      In issue list, \"time-tracking-collapsed-state\" is always rendered even if the sidebar isn't collapsed.\n      The actual hiding is controlled with css classes:\n        Hide \"time-tracking-collapsed-state\"\n          if .right-sidebar .right-sidebar-collapsed .sidebar-collapsed-icon\n        Show \"time-tracking-collapsed-state\"\n          if .right-sidebar .right-sidebar-expanded .sidebar-collapsed-icon\n\n      In Swimlanes sidebar, we do not use collapsed state at all.\n    */\n    showCollapsed: {\n      type: Boolean,\n      default: true,\n      required: false,\n    },\n    canAddTimeEntries: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    canSetTimeEstimate: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      timeTracking: {\n        ...this.initialTimeTracking,\n      },\n    };\n  },\n  apollo: {\n    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties\n    issuableTimeTracking: {\n      query() {\n        return timeTrackingQueries[this.issuableType].query;\n      },\n      skip() {\n        // Skip the query if either of the conditions are true\n        // 1. issuableType is not provided\n        // 2. Time tracking info was provided via prop\n        // 3. issuableIid and fullPath are not provided\n        if (!this.issuableType || !timeTrackingQueries[this.issuableType]) {\n          return true;\n        }\n        if (this.initialTimeTracking) {\n          return true;\n        }\n        if (!this.issuableIid || !this.fullPath) {\n          return true;\n        }\n        return false;\n      },\n      variables() {\n        return {\n          iid: this.issuableIid,\n          fullPath: this.fullPath,\n        };\n      },\n      update(data) {\n        this.timeTracking = {\n          ...data.workspace?.issuable,\n        };\n      },\n    },\n  },\n  computed: {\n    isTimeTrackingInfoLoading() {\n      return this.$apollo?.queries.issuableTimeTracking?.loading ?? false;\n    },\n    timeEstimate() {\n      return this.timeTracking?.timeEstimate || 0;\n    },\n    totalTimeSpent() {\n      return this.timeTracking?.totalTimeSpent || 0;\n    },\n    humanTimeEstimate() {\n      return this.timeTracking?.humanTimeEstimate || '';\n    },\n    humanTotalTimeSpent() {\n      return this.timeTracking?.humanTotalTimeSpent || '';\n    },\n    hasTotalTimeSpent() {\n      return Boolean(this.totalTimeSpent);\n    },\n    hasTimeEstimate() {\n      return Boolean(this.timeEstimate);\n    },\n    showComparisonState() {\n      return this.hasTimeEstimate && this.hasTotalTimeSpent;\n    },\n    showEstimateOnlyState() {\n      return this.hasTimeEstimate && !this.hasTotalTimeSpent;\n    },\n    showSpentOnlyState() {\n      return this.hasTotalTimeSpent && !this.hasTimeEstimate;\n    },\n    showNoTimeTrackingState() {\n      return !this.hasTimeEstimate && !this.hasTotalTimeSpent;\n    },\n    isTimeReportSupported() {\n      return [TYPE_ISSUE, TYPE_MERGE_REQUEST].includes(this.issuableType) && this.issuableId;\n    },\n    timeEstimateTooltip() {\n      return this.hasTimeEstimate\n        ? s__('TimeTracking|Edit estimate')\n        : s__('TimeTracking|Set estimate');\n    },\n  },\n  watch: {\n    /**\n     * When `initialTimeTracking` is provided via prop,\n     * we don't query the same via GraphQl and instead\n     * monitor it for any updates (eg; Epic Swimlanes)\n     */\n    initialTimeTracking(timeTracking) {\n      this.timeTracking = timeTracking;\n    },\n  },\n  created() {\n    eventHub.$on('timeTracker:refresh', this.refresh);\n  },\n  methods: {\n    refresh() {\n      this.$apollo.queries.issuableTimeTracking.refetch();\n    },\n    openRegisterTimeSpentModal() {\n      this.$root.$emit(BV_SHOW_MODAL, CREATE_TIMELOG_MODAL_ID);\n    },\n  },\n  setTimeEstimateModalId: SET_TIME_ESTIMATE_MODAL_ID,\n};\n</script>\n\n<template>\n  <div v-cloak class=\"time-tracker sidebar-help-wrap\" data-testid=\"time-tracker\">\n    <time-tracking-collapsed-state\n      v-if=\"showCollapsed\"\n      :show-comparison-state=\"showComparisonState\"\n      :show-no-time-tracking-state=\"showNoTimeTrackingState\"\n      :show-spent-only-state=\"showSpentOnlyState\"\n      :show-estimate-only-state=\"showEstimateOnlyState\"\n      :time-spent-human-readable=\"humanTotalTimeSpent\"\n      :time-estimate-human-readable=\"humanTimeEstimate\"\n    />\n    <div class=\"hide-collapsed gl-flex gl-items-center gl-font-bold gl-leading-20 gl-text-default\">\n      {{ __('Time tracking') }}\n      <gl-loading-icon v-if=\"isTimeTrackingInfoLoading\" size=\"sm\" class=\"gl-ml-2\" inline />\n      <div v-if=\"canSetTimeEstimate || canAddTimeEntries\" class=\"gl-ml-auto gl-flex\">\n        <gl-button\n          v-if=\"canSetTimeEstimate\"\n          v-gl-modal=\"$options.setTimeEstimateModalId\"\n          v-gl-tooltip.top\n          category=\"tertiary\"\n          icon=\"timer\"\n          size=\"small\"\n          data-testid=\"set-time-estimate-button\"\n          :title=\"timeEstimateTooltip\"\n          :aria-label=\"timeEstimateTooltip\"\n        />\n        <gl-button\n          v-if=\"canAddTimeEntries\"\n          v-gl-tooltip.top\n          category=\"tertiary\"\n          icon=\"plus\"\n          size=\"small\"\n          data-testid=\"add-time-entry-button\"\n          :title=\"__('Add time entry')\"\n          @click=\"openRegisterTimeSpentModal()\"\n        />\n      </div>\n    </div>\n    <div v-if=\"!isTimeTrackingInfoLoading\" class=\"hide-collapsed\">\n      <div v-if=\"showEstimateOnlyState\" data-testid=\"estimateOnlyPane\">\n        {{ $options.i18n.estimatedOnlyText }} {{ humanTimeEstimate }}\n      </div>\n      <time-tracking-spent-only-pane\n        v-if=\"showSpentOnlyState\"\n        :time-spent-human-readable=\"humanTotalTimeSpent\"\n      />\n      <div v-if=\"showNoTimeTrackingState\" data-testid=\"noTrackingPane\">\n        <span class=\"gl-text-subtle\">{{ $options.i18n.noTimeTrackingText }}</span>\n      </div>\n      <time-tracking-comparison-pane\n        v-if=\"showComparisonState\"\n        :time-estimate=\"timeEstimate\"\n        :time-spent=\"totalTimeSpent\"\n        :time-spent-human-readable=\"humanTotalTimeSpent\"\n        :time-estimate-human-readable=\"humanTimeEstimate\"\n        :limit-to-hours=\"limitToHours\"\n      />\n      <div v-if=\"isTimeReportSupported\">\n        <gl-link\n          v-if=\"hasTotalTimeSpent\"\n          v-gl-modal=\"'time-tracking-report'\"\n          class=\"gl-text-default\"\n          data-testid=\"reportLink\"\n          href=\"#\"\n        >\n          {{ __('Time tracking report') }}\n        </gl-link>\n        <gl-modal\n          modal-id=\"time-tracking-report\"\n          size=\"lg\"\n          :title=\"__('Time tracking report')\"\n          :hide-footer=\"true\"\n        >\n          <time-tracking-report :limit-to-hours=\"limitToHours\" :issuable-id=\"issuableId\" />\n        </gl-modal>\n      </div>\n      <create-timelog-form :issuable-id=\"issuableId\" />\n      <set-time-estimate-form\n        :full-path=\"fullPath\"\n        :issuable-iid=\"issuableIid\"\n        :time-tracking=\"timeTracking\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./time_tracker.vue?vue&type=template&id=a3c3d876\"\nimport script from \"./time_tracker.vue?vue&type=script&lang=js\"\nexport * from \"./time_tracker.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 { escape } from 'lodash';\n\n/**\n * Highlight.js plugin for wrapping nodes with the correct selectors to ensure\n * child-elements are highlighted correctly after we split up the result into chunks and lines.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {Object} Result - an object that represents the highlighted result from Highlight.js\n */\nconst newlineRegex = /\\r?\\n/;\nconst generateClassName = (suffix) => (suffix ? `hljs-${escape(suffix)}` : '');\nconst generateCloseTag = (includeClose) => (includeClose ? '</span>' : '');\nconst generateHLJSTag = (scope, content = '', includeClose) =>\n  `<span class=\"${generateClassName(scope)}\">${escape(content)}${generateCloseTag(includeClose)}`;\n\nconst format = (node, scope = '') => {\n  let buffer = '';\n\n  if (typeof node === 'string') {\n    buffer += node\n      .split(newlineRegex)\n      .map((newline) => generateHLJSTag(scope, newline, true))\n      .join('\\n');\n  } else if (node.children) {\n    const { children } = node;\n    if (children.length && children.length === 1) {\n      buffer += format(children[0], node.scope);\n    } else {\n      buffer += generateHLJSTag(node.scope);\n      children.forEach((subChild) => {\n        buffer += format(subChild, node.scope);\n      });\n      buffer += `</span>`;\n    }\n  }\n\n  return buffer;\n};\n\nexport default (result) => {\n  // NOTE: We're using the private Emitter API here as we expect the Emitter API to be publicly available soon (https://github.com/highlightjs/highlight.js/issues/3621)\n  // eslint-disable-next-line no-param-reassign, no-underscore-dangle\n  result.value = result._emitter.rootNode.children.reduce((val, node) => val + format(node), ''); // Highlight.js expects the result param to be mutated for plugins to work\n};\n","import {\n  BIDI_CHARS,\n  BIDI_CHARS_CLASS_LIST,\n  BIDI_CHAR_TOOLTIP,\n} from '~/vue_shared/components/source_viewer/constants';\n\n/**\n * Highlight.js plugin for wrapping BIDI chars.\n * This ensures potentially dangerous BIDI characters are highlighted.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {Object} Result - an object that represents the highlighted result from Highlight.js\n */\n\nfunction wrapBidiChar(bidiChar) {\n  return `<span class=\"${BIDI_CHARS_CLASS_LIST}\" title=\"${BIDI_CHAR_TOOLTIP}\">${bidiChar}</span>`;\n}\n\nexport default (result) => {\n  let { value } = result;\n  BIDI_CHARS.forEach((bidiChar) => {\n    if (value.includes(bidiChar)) {\n      value = value.replace(bidiChar, wrapBidiChar(bidiChar));\n    }\n  });\n\n  // eslint-disable-next-line no-param-reassign\n  result.value = value; // Highlight.js expects the result param to be mutated for plugins to work\n};\n","import { escape } from 'lodash';\n\nexport const createLink = (href, innerText) =>\n  `<a href=\"${escape(href)}\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">${escape(\n    innerText,\n  )}</a>`;\n\nexport const generateHLJSOpenTag = (type, delimiter = '&quot;') =>\n  `<span class=\"hljs-${escape(type)}\">${delimiter}`;\n\nexport const getObjectKeysByKeyName = (obj, keyName, acc) => {\n  if (obj instanceof Array) {\n    obj.map((subObj) => getObjectKeysByKeyName(subObj, keyName, acc));\n  } else {\n    for (const key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        if (key === keyName) {\n          acc.push(...Object.keys(obj[key]));\n        }\n        if (obj[key] instanceof Object || obj[key] instanceof Array) {\n          getObjectKeysByKeyName(obj[key], keyName, acc);\n        }\n      }\n    }\n  }\n  return acc;\n};\n","import { unescape } from 'lodash';\nimport { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst NPM_URL = 'https://npmjs.com/package/';\nconst attrOpenTag = generateHLJSOpenTag('attr');\nconst stringOpenTag = generateHLJSOpenTag('string');\nconst closeTag = '&quot;</span>';\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;@babel/core&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;^7.18.5&quot;</span>\n   * Group 1:  @babel/core\n   * Group 2:  ^7.18.5\n   */\n  `${attrOpenTag}(.*)${closeTag}.*${stringOpenTag}(.*[0-9].*)(${closeTag})`,\n  'gm',\n);\n\n// eslint-disable-next-line max-params\nconst handleReplace = (original, packageName, version, dependenciesToLink) => {\n  const unescapedPackageName = unescape(packageName);\n  const unescapedVersion = unescape(version);\n  const href = `${NPM_URL}${unescapedPackageName}`;\n  const packageLink = createLink(href, unescapedPackageName);\n  const versionLink = createLink(href, unescapedVersion);\n  const closeAndOpenTag = `${closeTag}: ${attrOpenTag}`;\n  const dependencyToLink = dependenciesToLink[unescapedPackageName];\n\n  if (dependencyToLink && dependencyToLink === unescapedVersion) {\n    return `${attrOpenTag}${packageLink}${closeAndOpenTag}${versionLink}${closeTag}`;\n  }\n\n  return original;\n};\n\nexport default (result, raw) => {\n  const { dependencies, devDependencies, peerDependencies, optionalDependencies } = JSON.parse(raw);\n\n  const dependenciesToLink = {\n    ...dependencies,\n    ...devDependencies,\n    ...peerDependencies,\n    ...optionalDependencies,\n  };\n\n  return result.value.replace(DEPENDENCY_REGEX, (original, packageName, version) =>\n    handleReplace(original, packageName, version, dependenciesToLink),\n  );\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst GEM_URL = 'https://rubygems.org/gems/';\nconst methodRegex = '.*add_dependency.*|.*add_runtime_dependency.*|.*add_development_dependency.*';\nconst openTagRegex = generateHLJSOpenTag('string', '(&.*;)');\nconst closeTagRegex = '&.*</span>';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects gemspec dependencies inside of content that is highlighted by Highlight.js\n   * Example: s.add_dependency(<span class=\"hljs-string\">&#x27;rugged&#x27;</span>, <span class=\"hljs-string\">&#x27;~&gt; 0.24.0&#x27;</span>)\n   *\n   * Group 1 (method)     :  s.add_dependency(\n   * Group 2 (delimiter)  :  &#x27;\n   * Group 3 (packageName):  rugged\n   * Group 4 (closeTag)   :  &#x27;</span>\n   * Group 5 (rest)       :  \t, <span class=\"hljs-string\">&#x27;~&gt; 0.24.0&#x27;</span>)\n   */\n  `(${methodRegex})${openTagRegex}(.*)(${closeTagRegex})(.*${closeTagRegex})`,\n  'gm',\n);\n\n// eslint-disable-next-line max-params\nconst handleReplace = (method, delimiter, packageName, closeTag, rest) => {\n  // eslint-disable-next-line @gitlab/require-i18n-strings\n  const openTag = generateHLJSOpenTag('string linked', delimiter);\n  const href = `${GEM_URL}${packageName}`;\n  const packageLink = createLink(href, packageName);\n\n  return `${method}${openTag}${packageLink}${closeTag}${rest}`;\n};\n\nexport default (result) => {\n  return result.value.replace(\n    DEPENDENCY_REGEX,\n    // eslint-disable-next-line max-params\n    (_, method, delimiter, packageName, closeTag, rest) =>\n      handleReplace(method, delimiter, packageName, closeTag, rest),\n  );\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst PROTOCOL = 'https://';\nconst GODOCS_DOMAIN = 'godoc.org/';\nconst REPO_PATH = '/tree/master/';\nconst GODOCS_REGEX = /golang.org/;\nconst GITLAB_REPO_PATH = `/_${REPO_PATH}`;\nconst REPO_REGEX = `[^/'\"]+/[^/'\"]+`;\nconst NESTED_REPO_REGEX = '([^/]+/)+[^/]+?';\nconst GITHUB_REPO_REGEX = new RegExp(`(github.com/${REPO_REGEX})/(.+)`);\nconst GITLAB_REPO_REGEX = new RegExp(`(gitlab.com/${REPO_REGEX})/(.+)`);\nconst GITLAB_NESTED_REPO_REGEX = new RegExp(`(gitlab.com/${NESTED_REPO_REGEX}).git/(.+)`);\nconst attrOpenTag = generateHLJSOpenTag('attr');\nconst stringOpenTag = generateHLJSOpenTag('string');\nconst closeTag = '&quot;</span>';\nconst importPathString =\n  'ImportPath&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span>';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;ImportPath&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span><span class=\"hljs-string\">&quot;github.com/ayufan/golang-kardianos-service&quot;</span>\n   * Group 1:  github.com/ayufan/golang-kardianos-service\n   */\n  `${importPathString}${stringOpenTag}(.*)${closeTag}`,\n  'gm',\n);\n\nconst replaceRepoPath = (dependency, regex, repoPath) =>\n  dependency.replace(regex, (_, repo, path) => `${PROTOCOL}${repo}${repoPath}${path}`);\n\nconst regexConfigs = [\n  {\n    matcher: GITHUB_REPO_REGEX,\n    resolver: (dep) => replaceRepoPath(dep, GITHUB_REPO_REGEX, REPO_PATH),\n  },\n  {\n    matcher: GITLAB_REPO_REGEX,\n    resolver: (dep) => replaceRepoPath(dep, GITLAB_REPO_REGEX, GITLAB_REPO_PATH),\n  },\n  {\n    matcher: GITLAB_NESTED_REPO_REGEX,\n    resolver: (dep) => replaceRepoPath(dep, GITLAB_NESTED_REPO_REGEX, GITLAB_REPO_PATH),\n  },\n  {\n    matcher: GODOCS_REGEX,\n    resolver: (dep) => `${PROTOCOL}${GODOCS_DOMAIN}${dep}`,\n  },\n];\n\nconst getLinkHref = (dependency) => {\n  const regexConfig = regexConfigs.find((config) => dependency.match(config.matcher));\n  return regexConfig ? regexConfig.resolver(dependency) : `${PROTOCOL}${dependency}`;\n};\n\nconst handleReplace = (dependency) => {\n  const linkHref = getLinkHref(dependency);\n  const link = createLink(linkHref, dependency);\n  return `${importPathString}${attrOpenTag}${link}${closeTag}`;\n};\n\nexport default (result) => {\n  return result.value.replace(DEPENDENCY_REGEX, (_, dependency) => handleReplace(dependency));\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst GEM_URL = 'https://rubygems.org/gems/';\nconst GEM_STRING = 'gem </span>';\nconst delimiter = '&#39;';\nconst stringOpenTag = generateHLJSOpenTag('string', delimiter);\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: 'gem </span><span class=\"hljs-string\">&#39;paranoia&#39;'\n   * Group 1 (packageName)     :  'paranoia'\n   */\n  `${GEM_STRING}${stringOpenTag}(.+?(?=${delimiter}))`,\n  'gm',\n);\n\nconst handleReplace = (packageName) => {\n  const href = `${GEM_URL}${packageName}`;\n  const packageLink = createLink(href, packageName);\n  return `${GEM_STRING}${stringOpenTag}${packageLink}`;\n};\nexport default (result) => {\n  return result.value.replace(DEPENDENCY_REGEX, (_, packageName) => handleReplace(packageName));\n};\n","import { createLink, generateHLJSOpenTag, getObjectKeysByKeyName } from './dependency_linker_util';\n\nconst COCOAPODS_URL = 'https://cocoapods.org/pods/';\nconst beginString = generateHLJSOpenTag('attr');\nconst endString =\n  '&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span><span class=\"hljs-punctuation\">\\\\[';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;AFNetworking/Security&quot;</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span><span class=\"hljs-punctuation\"> [\n   * Group 1:  AFNetworking/Serialization\n   */\n  `${beginString}([^/]+/?[^/]+.)${endString}`,\n  'gm',\n);\n\nconst handleReplace = (original, dependency, dependenciesToLink) => {\n  if (dependenciesToLink.includes(dependency)) {\n    const href = `${COCOAPODS_URL}${dependency.split('/')[0]}`;\n    const link = createLink(href, dependency);\n    return `${beginString}${link}${endString.replace('\\\\', '')}`;\n  }\n  return original;\n};\n\nexport default (result, raw) => {\n  const dependenciesToLink = getObjectKeysByKeyName(JSON.parse(raw), 'dependencies', []);\n  return result.value.replace(DEPENDENCY_REGEX, (original, dependency) =>\n    handleReplace(original, dependency, dependenciesToLink),\n  );\n};\n","import { createLink, generateHLJSOpenTag } from './dependency_linker_util';\n\nconst PACKAGIST_URL = 'https://packagist.org/packages/';\nconst DRUPAL_URL = 'https://www.drupal.org/project/';\n\nconst attrOpenTag = generateHLJSOpenTag('attr');\nconst stringOpenTag = generateHLJSOpenTag('string');\nconst closeTag = '&quot;</span>';\nconst DRUPAL_PROJECT_SEPARATOR = 'drupal/';\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: <span class=\"hljs-attr\">&quot;composer/installers&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;^1.2&quot;</span>\n   * Group 1:  composer/installers\n   * Group 2:  ^1.2\n   */\n  `${attrOpenTag}([^/]+/[^/]+.)${closeTag}.*${stringOpenTag}(.*[0-9].*)(${closeTag})`,\n  'gm',\n);\n\n// eslint-disable-next-line max-params\nconst handleReplace = (original, packageName, version, dependenciesToLink) => {\n  const isDrupalDependency = packageName.includes(DRUPAL_PROJECT_SEPARATOR);\n  const href = isDrupalDependency\n    ? `${DRUPAL_URL}${packageName.split(DRUPAL_PROJECT_SEPARATOR)[1]}`\n    : `${PACKAGIST_URL}${packageName}`;\n  const packageLink = createLink(href, packageName);\n  const versionLink = createLink(href, version);\n  const closeAndOpenTag = `${closeTag}: ${attrOpenTag}`;\n  const dependencyToLink = dependenciesToLink[packageName];\n\n  if (dependencyToLink && dependencyToLink === version) {\n    return `${attrOpenTag}${packageLink}${closeAndOpenTag}${versionLink}${closeTag}`;\n  }\n\n  return original;\n};\n\nexport default (result, raw) => {\n  const rawParsed = JSON.parse(raw);\n\n  const dependenciesToLink = {\n    ...rawParsed.require,\n    ...rawParsed['require-dev'],\n  };\n\n  return result.value.replace(DEPENDENCY_REGEX, (original, packageName, version) =>\n    handleReplace(original, packageName, version, dependenciesToLink),\n  );\n};\n","import { createLink } from './dependency_linker_util';\n\nconst openTag = '<span class=\"\">';\nconst closeTag = '</span>';\nconst TAG_URL = 'https://sum.golang.org/lookup/';\nconst GO_PACKAGE_URL = 'https://pkg.go.dev/';\n\nconst DEPENDENCY_REGEX = new RegExp(\n  /*\n   * Detects dependencies inside of content that is highlighted by Highlight.js\n   * Example: '<span class=\"\">cloud.google.com/Go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=</span>'\n   * Group 1 (packagePath):  'cloud.google.com/Go/bigquery'\n   * Group 2 (version): 'v1.0.1/go.mod'\n   * Group 3 (base64url): 'i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o='\n   */\n  `${openTag}(.*) (v.*) h1:(.*)${closeTag}`,\n  'gm',\n);\n\nconst handleReplace = (packagePath, version, tag) => {\n  const lowercasePath = packagePath.toLowerCase();\n  const packageHref = `${GO_PACKAGE_URL}${lowercasePath}`;\n  const packageLink = createLink(packageHref, packagePath);\n  const tagHref = `${TAG_URL}${lowercasePath}@${version.split('/go.mod')[0]}`;\n  const tagLink = createLink(tagHref, tag);\n\n  return `${openTag}${packageLink} ${version} h1:${tagLink}${closeTag}`;\n};\n\nexport default (result) => {\n  // eslint-disable-next-line max-params\n  return result.value.replace(DEPENDENCY_REGEX, (_, packagePath, version, tag) =>\n    handleReplace(packagePath, version, tag),\n  );\n};\n","import packageJsonLinker from './utils/package_json_linker';\nimport gemspecLinker from './utils/gemspec_linker';\nimport godepsJsonLinker from './utils/godeps_json_linker';\nimport gemfileLinker from './utils/gemfile_linker';\nimport podspecJsonLinker from './utils/podspec_json_linker';\nimport composerJsonLinker from './utils/composer_json_linker';\nimport goSumLinker from './utils/go_sum_linker';\n\nconst DEPENDENCY_LINKERS = {\n  package_json: packageJsonLinker,\n  gemspec: gemspecLinker,\n  godeps_json: godepsJsonLinker,\n  gemfile: gemfileLinker,\n  podspec_json: podspecJsonLinker,\n  composer_json: composerJsonLinker,\n  go_sum: goSumLinker,\n};\n\n/**\n * Highlight.js plugin for generating links to dependencies when viewing dependency files.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param {Object} result - an object that represents the highlighted result from Highlight.js\n * @param {String} fileType - a string containing the file type\n * @param {String} rawContent - raw (non-highlighted) file content\n */\nexport default (result, fileType, rawContent) => {\n  if (DEPENDENCY_LINKERS[fileType]) {\n    try {\n      // eslint-disable-next-line no-param-reassign\n      result.value = DEPENDENCY_LINKERS[fileType](result, rawContent);\n    } catch (e) {\n      // Shallowed (do nothing), in this case the original unlinked dependencies will be rendered.\n    }\n  }\n};\n","/**\n * Highlight.js plugin for wrapping lines in the correct classes and attributes.\n * Needed for things like hash highlighting to work.\n *\n * Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\n *\n * @param content - represents the highlighted content\n * @param number - represents the highlighted line number\n * @param language - represents the highlighted language\n */\n\nfunction wrapLine(content, number, language) {\n  return `<div id=\"LC${number}\" lang=\"${language}\" class=\"line\">${content}</div>`;\n}\n\nexport default (result) => {\n  // eslint-disable-next-line no-param-reassign\n  result.value = result.value\n    .split(/\\r?\\n/)\n    .map((content, index) => wrapLine(content, index + 1, result.language))\n    .join('\\n');\n};\n","import wrapChildNodes from '~/vue_shared/components/source_viewer/plugins/wrap_child_nodes';\nimport wrapBidiChars from '~/vue_shared/components/source_viewer/plugins/wrap_bidi_chars';\nimport linkDependencies from '~/vue_shared/components/source_viewer/plugins/link_dependencies';\nimport wrapLines from '~/vue_shared/components/source_viewer/plugins/wrap_lines';\n\nconst HLJS_ON_AFTER_HIGHLIGHT = 'after:highlight';\n\n// Registers our plugins for Highlight.js\n// Plugin API: https://github.com/highlightjs/highlight.js/blob/main/docs/plugin-api.rst\nexport const highlightPlugins = (fileType, rawContent, shouldWrapLines) => {\n  const plugins = [\n    wrapChildNodes,\n    wrapBidiChars,\n    (result) => linkDependencies(result, fileType, rawContent),\n  ];\n  if (shouldWrapLines) {\n    plugins.push(wrapLines);\n  }\n  return plugins;\n};\n\nexport const registerPlugins = (hljs, plugins) => {\n  if (!plugins) {\n    return;\n  }\n  for (const plugin of plugins) {\n    hljs.addPlugin({ [HLJS_ON_AFTER_HIGHLIGHT]: plugin });\n  }\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"issueEscalationPolicyMutation\"},\"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\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"attributeId\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IncidentManagementEscalationPolicyID\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuableSetAttribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"issueSetEscalationPolicy\"},\"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\":\"fullPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"escalationPolicyId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"attributeId\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"issuable\"},\"name\":{\"kind\":\"Name\",\"value\":\"issue\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"attribute\"},\"name\":{\"kind\":\"Name\",\"value\":\"escalationPolicy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"EscalationPolicyFragment\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"escalationStatus\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":474}};\n    doc.loc.source = {\"body\":\"#import \\\"./escalation_policy.fragment.graphql\\\"\\n\\nmutation issueEscalationPolicyMutation(\\n  $fullPath: ID!\\n  $iid: String!\\n  $attributeId: IncidentManagementEscalationPolicyID\\n) {\\n  issuableSetAttribute: issueSetEscalationPolicy(\\n    input: { projectPath: $fullPath, iid: $iid, escalationPolicyId: $attributeId }\\n  ) {\\n    errors\\n    issuable: issue {\\n      id\\n      attribute: escalationPolicy {\\n        ...EscalationPolicyFragment\\n      }\\n      escalationStatus\\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(\"./escalation_policy.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[\"issueEscalationPolicyMutation\"] = oneQuery(doc, \"issueEscalationPolicyMutation\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.showInDropdown && !_vm.isNotificationsTodosButtons)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"notification-toggle\"},on:{\"action\":_vm.toggleSubscribed},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('gl-toggle',{staticClass:\"merge-request-notification-toggle\",attrs:{\"value\":_vm.subscribed,\"label\":_vm.__('Notifications'),\"label-position\":\"left\"}})]},proxy:true}],null,false,2441604390)}):(_vm.isNotificationsTodosButtons)?_c('div',{class:{ 'inline-block': !_vm.isMergeRequest }},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.top\",modifiers:{\"hover\":true,\"top\":true}}],ref:\"tooltip\",staticClass:\"hide-collapsed\",class:{ 'gl-ml-2': _vm.isIssuable, 'btn-icon': _vm.isNotificationsTodosButtons },attrs:{\"category\":\"secondary\",\"data-testid\":\"subscribe-button\",\"title\":_vm.notificationTooltip},on:{\"click\":_vm.toggleSubscribed}},[_c('gl-animated-notification-icon',{class:{ '!gl-text-blue-500': _vm.subscribed },attrs:{\"is-on\":!_vm.subscribed}})],1),_vm._v(\" \"),(!_vm.isMergeRequest)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],ref:\"tooltip\",staticClass:\"sidebar-collapsed-icon sidebar-collapsed-container !gl-rounded-none !gl-border-0\",attrs:{\"category\":\"secondary\",\"data-testid\":\"subscribe-button\",\"title\":_vm.notificationTooltip},on:{\"click\":_vm.toggleSubscribed}},[_c('gl-animated-notification-icon',{class:{ '!gl-text-blue-500': _vm.subscribed },attrs:{\"is-on\":!_vm.subscribed}})],1):_vm._e()],1):_c('sidebar-editable-item',{ref:\"editable\",staticClass:\"block subscriptions\",attrs:{\"title\":_vm.$options.i18n.notifications,\"tracking\":_vm.$options.tracking,\"loading\":_vm.isLoading,\"can-edit\":false},scopedSlots:_vm._u([{key:\"collapsed-right\",fn:function(){return [_c('gl-toggle',{staticClass:\"hide-collapsed gl-ml-auto\",attrs:{\"value\":_vm.subscribed,\"is-loading\":_vm.isLoading,\"disabled\":_vm.canSubscribe,\"data-testid\":\"subscription-toggle\",\"label\":_vm.$options.i18n.notifications,\"label-position\":\"hidden\"},on:{\"change\":_vm.setSubscribed}})]},proxy:true},{key:\"collapsed\",fn:function(){return [_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],ref:\"tooltip\",staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.notificationTooltip},on:{\"click\":_vm.toggleSubscribed}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"sidebar-item-icon is-active\",attrs:{\"size\":\"sm\"}}):_c('gl-icon',{staticClass:\"sidebar-item-icon is-active\",attrs:{\"name\":_vm.notificationIcon,\"size\":16}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.emailsDisabled),expression:\"emailsDisabled\"}],staticClass:\"hide-collapsed gl-mt-3 gl-text-subtle\"},[_vm._v(\"\\n      \"+_vm._s(_vm.subscribeDisabledDescription)+\"\\n    \")])]},proxy:true},{key:\"default\",fn:function(){return undefined},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n  GlButton,\n  GlDisclosureDropdownItem,\n  GlIcon,\n  GlLoadingIcon,\n  GlToggle,\n  GlTooltipDirective,\n  GlAnimatedNotificationIcon,\n} from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { TYPE_ISSUE, TYPE_EPIC, WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants';\nimport { isLoggedIn } from '~/lib/utils/common_utils';\nimport { __, sprintf } from '~/locale';\nimport glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { subscribedQueries } from '../../queries/constants';\nimport { Tracking } from '../../constants';\nimport SidebarEditableItem from '../sidebar_editable_item.vue';\n\nconst ICON_ON = 'notifications';\nconst ICON_OFF = 'notifications-off';\n\nexport default {\n  tracking: {\n    event: Tracking.editEvent,\n    label: Tracking.rightSidebarLabel,\n    property: 'subscriptions',\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlButton,\n    GlDisclosureDropdownItem,\n    GlIcon,\n    GlLoadingIcon,\n    GlToggle,\n    GlAnimatedNotificationIcon,\n    SidebarEditableItem,\n  },\n  mixins: [glFeatureFlagMixin()],\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n    showInDropdown: {\n      required: false,\n      type: Boolean,\n      default: true,\n    },\n  },\n  data() {\n    return {\n      subscribed: false,\n      loading: false,\n      emailsDisabled: false,\n    };\n  },\n  apollo: {\n    subscribed: {\n      query() {\n        return subscribedQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: String(this.iid),\n        };\n      },\n      skip() {\n        return !this.iid;\n      },\n      update(data) {\n        return data.workspace?.issuable?.subscribed || false;\n      },\n      result({ data }) {\n        if (!data) {\n          return;\n        }\n        this.emailsDisabled = this.parentIsGroup\n          ? data.workspace?.emailsDisabled\n          : data.workspace?.issuable?.emailsDisabled;\n        this.$emit('subscribedUpdated', data.workspace?.issuable?.subscribed);\n      },\n      error() {\n        createAlert({\n          message: sprintf(\n            __('Something went wrong while setting %{issuableType} notifications.'),\n            {\n              issuableType: this.issuableType,\n            },\n          ),\n        });\n      },\n    },\n  },\n  computed: {\n    isIssuable() {\n      return this.issuableType === TYPE_ISSUE;\n    },\n    isLoading() {\n      return this.$apollo.queries?.subscribed?.loading || this.loading;\n    },\n    notificationTooltip() {\n      if (this.emailsDisabled) {\n        return this.subscribeDisabledDescription;\n      }\n      return this.subscribed ? this.$options.i18n.labelOn : this.$options.i18n.labelOff;\n    },\n    notificationIcon() {\n      if (this.emailsDisabled || !this.subscribed) {\n        return ICON_OFF;\n      }\n      return ICON_ON;\n    },\n    parentIsGroup() {\n      return this.issuableType === TYPE_EPIC;\n    },\n    subscribeDisabledDescription() {\n      return sprintf(__('Disabled by %{parent} owner'), {\n        parent: this.parentIsGroup ? WORKSPACE_GROUP : WORKSPACE_PROJECT,\n      });\n    },\n    isLoggedIn() {\n      return isLoggedIn();\n    },\n    canSubscribe() {\n      return this.emailsDisabled || !this.isLoggedIn;\n    },\n    isNotificationsTodosButtons() {\n      return this.glFeatures.notificationsTodosButtons;\n    },\n    isMergeRequest() {\n      return this.issuableType === 'merge_request';\n    },\n  },\n  methods: {\n    setSubscribed(subscribed) {\n      this.loading = true;\n      this.$apollo\n        .mutate({\n          mutation: subscribedQueries[this.issuableType].mutation,\n          variables: {\n            fullPath: this.fullPath,\n            iid: this.iid,\n            subscribedState: subscribed,\n          },\n        })\n        .then(\n          ({\n            data: {\n              updateIssuableSubscription: { errors },\n            },\n          }) => {\n            if (errors.length) {\n              createAlert({\n                message: errors[0],\n              });\n            }\n\n            toast(subscribed ? __('Notifications turned on.') : __('Notifications turned off.'));\n          },\n        )\n        .catch(() => {\n          createAlert({\n            message: sprintf(\n              __('Something went wrong while setting %{issuableType} notifications.'),\n              {\n                issuableType: this.issuableType,\n              },\n            ),\n          });\n        })\n        .finally(() => {\n          this.loading = false;\n        });\n    },\n    toggleSubscribed() {\n      if (this.emailsDisabled) {\n        this.expandSidebar();\n      } else {\n        this.setSubscribed(!this.subscribed);\n      }\n    },\n    expandSidebar() {\n      this.$emit('expandSidebar');\n    },\n  },\n  i18n: {\n    notifications: __('Notifications'),\n    labelOn: __('Notifications on'),\n    labelOff: __('Notifications off'),\n  },\n};\n</script>\n\n<template>\n  <gl-disclosure-dropdown-item\n    v-if=\"showInDropdown && !isNotificationsTodosButtons\"\n    data-testid=\"notification-toggle\"\n    @action=\"toggleSubscribed\"\n  >\n    <template #list-item>\n      <gl-toggle\n        :value=\"subscribed\"\n        :label=\"__('Notifications')\"\n        class=\"merge-request-notification-toggle\"\n        label-position=\"left\"\n      />\n    </template>\n  </gl-disclosure-dropdown-item>\n  <div v-else-if=\"isNotificationsTodosButtons\" :class=\"{ 'inline-block': !isMergeRequest }\">\n    <gl-button\n      ref=\"tooltip\"\n      v-gl-tooltip.hover.top\n      category=\"secondary\"\n      data-testid=\"subscribe-button\"\n      class=\"hide-collapsed\"\n      :title=\"notificationTooltip\"\n      :class=\"{ 'gl-ml-2': isIssuable, 'btn-icon': isNotificationsTodosButtons }\"\n      @click=\"toggleSubscribed\"\n    >\n      <gl-animated-notification-icon\n        :class=\"{ '!gl-text-blue-500': subscribed }\"\n        :is-on=\"!subscribed\"\n      />\n    </gl-button>\n    <gl-button\n      v-if=\"!isMergeRequest\"\n      ref=\"tooltip\"\n      v-gl-tooltip.left.viewport\n      category=\"secondary\"\n      data-testid=\"subscribe-button\"\n      :title=\"notificationTooltip\"\n      class=\"sidebar-collapsed-icon sidebar-collapsed-container !gl-rounded-none !gl-border-0\"\n      @click=\"toggleSubscribed\"\n    >\n      <gl-animated-notification-icon\n        :class=\"{ '!gl-text-blue-500': subscribed }\"\n        :is-on=\"!subscribed\"\n      />\n    </gl-button>\n  </div>\n  <sidebar-editable-item\n    v-else\n    ref=\"editable\"\n    :title=\"$options.i18n.notifications\"\n    :tracking=\"$options.tracking\"\n    :loading=\"isLoading\"\n    :can-edit=\"false\"\n    class=\"block subscriptions\"\n  >\n    <template #collapsed-right>\n      <gl-toggle\n        :value=\"subscribed\"\n        :is-loading=\"isLoading\"\n        :disabled=\"canSubscribe\"\n        class=\"hide-collapsed gl-ml-auto\"\n        data-testid=\"subscription-toggle\"\n        :label=\"$options.i18n.notifications\"\n        label-position=\"hidden\"\n        @change=\"setSubscribed\"\n      />\n    </template>\n    <template #collapsed>\n      <span\n        ref=\"tooltip\"\n        v-gl-tooltip.viewport.left\n        :title=\"notificationTooltip\"\n        class=\"sidebar-collapsed-icon\"\n        @click=\"toggleSubscribed\"\n      >\n        <gl-loading-icon v-if=\"isLoading\" size=\"sm\" class=\"sidebar-item-icon is-active\" />\n        <gl-icon v-else :name=\"notificationIcon\" :size=\"16\" class=\"sidebar-item-icon is-active\" />\n      </span>\n      <div v-show=\"emailsDisabled\" class=\"hide-collapsed gl-mt-3 gl-text-subtle\">\n        {{ subscribeDisabledDescription }}\n      </div>\n    </template>\n    <template #default> </template>\n  </sidebar-editable-item>\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_subscriptions_widget.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_subscriptions_widget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sidebar_subscriptions_widget.vue?vue&type=template&id=b8d97386\"\nimport script from \"./sidebar_subscriptions_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_subscriptions_widget.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 { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs';\n\n// Main `<table>` render mixin\n// Includes all main table styling options\n\n// --- Props ---\n\nconst props = {\n  bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n  borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n  captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  dark: makeProp(PROP_TYPE_BOOLEAN, false),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  hover: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n  outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n  responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If a string, it is assumed to be the table `max-height` value\n  stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  striped: makeProp(PROP_TYPE_BOOLEAN, false),\n  tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tableVariant: makeProp(PROP_TYPE_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tableRendererMixin = extend({\n  mixins: [attrsMixin],\n  provide() {\n    return {\n      getBvTable: () => this\n    };\n  },\n  // Don't place attributes on root element automatically,\n  // as table could be wrapped in responsive `<div>`\n  inheritAttrs: false,\n  props,\n  computed: {\n    isTableSimple() {\n      return false;\n    },\n    // Layout related computed props\n    isResponsive() {\n      const {\n        responsive\n      } = this;\n      return responsive === '' ? true : responsive;\n    },\n    isStickyHeader() {\n      let {\n        stickyHeader\n      } = this;\n      stickyHeader = stickyHeader === '' ? true : stickyHeader;\n      return this.isStacked ? false : stickyHeader;\n    },\n    wrapperClasses() {\n      const {\n        isResponsive\n      } = this;\n      return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? `table-responsive-${this.responsive}` : ''].filter(identity);\n    },\n    wrapperStyles() {\n      const {\n        isStickyHeader\n      } = this;\n      return isStickyHeader && !isBoolean(isStickyHeader) ? {\n        maxHeight: isStickyHeader\n      } : {};\n    },\n    tableClasses() {\n      let {\n        hover,\n        tableVariant,\n        selectableTableClasses,\n        stackedTableClasses,\n        tableClass,\n        computedBusy\n      } = safeVueInstance(this);\n      hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !computedBusy;\n      return [\n      // User supplied classes\n      tableClass,\n      // Styling classes\n      {\n        'table-striped': this.striped,\n        'table-hover': hover,\n        'table-dark': this.dark,\n        'table-bordered': this.bordered,\n        'table-borderless': this.borderless,\n        'table-sm': this.small,\n        // The following are b-table custom styles\n        'gl-border': this.outlined,\n        'b-table-fixed': this.fixed,\n        'b-table-caption-top': this.captionTop,\n        'b-table-no-border-collapse': this.noBorderCollapse\n      }, tableVariant ? `${this.dark ? 'bg' : 'table'}-${tableVariant}` : '',\n      // Stacked table classes\n      stackedTableClasses,\n      // Selectable classes\n      selectableTableClasses];\n    },\n    tableAttrs() {\n      const {\n        computedItems: items,\n        filteredItems,\n        computedFields: fields,\n        selectableTableAttrs,\n        computedBusy\n      } = safeVueInstance(this);\n      const ariaAttrs = this.isTableSimple ? {} : {\n        'aria-busy': toString(computedBusy),\n        'aria-colcount': toString(fields.length),\n        // Preserve user supplied `aria-describedby`, if provided\n        'aria-describedby': this.bvAttrs['aria-describedby'] || this.$refs.caption ? this.captionId : null\n      };\n      const rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n      return {\n        // We set `aria-rowcount` before merging in `$attrs`,\n        // in case user has supplied their own\n        'aria-rowcount': rowCount,\n        // Merge in user supplied `$attrs` if any\n        ...this.bvAttrs,\n        // Now we can override any `$attrs` here\n        id: this.safeId(),\n        role: this.bvAttrs.role || 'table',\n        ...ariaAttrs,\n        ...selectableTableAttrs\n      };\n    }\n  },\n  render(h) {\n    const {\n      wrapperClasses,\n      renderCaption,\n      renderColgroup,\n      renderThead,\n      renderTbody,\n      renderTfoot\n    } = safeVueInstance(this);\n    const $content = [];\n    if (this.isTableSimple) {\n      $content.push(this.normalizeSlot());\n    } else {\n      // Build the `<caption>` (from caption mixin)\n      $content.push(renderCaption ? renderCaption() : null);\n\n      // Build the `<colgroup>`\n      $content.push(renderColgroup ? renderColgroup() : null);\n\n      // Build the `<thead>`\n      $content.push(renderThead ? renderThead() : null);\n\n      // Build the `<tbody>`\n      $content.push(renderTbody ? renderTbody() : null);\n\n      // Build the `<tfoot>`\n      $content.push(renderTfoot ? renderTfoot() : null);\n    }\n\n    // Assemble `<table>`\n    const $table = h('table', {\n      staticClass: 'table b-table',\n      class: this.tableClasses,\n      attrs: this.tableAttrs,\n      key: 'b-table'\n    }, $content.filter(identity));\n\n    // Add responsive/sticky wrapper if needed and return table\n    return wrapperClasses.length > 0 ? h('div', {\n      class: wrapperClasses,\n      style: this.wrapperStyles,\n      key: 'wrap'\n    }, [$table]) : $table;\n  }\n});\n\nexport { props, tableRendererMixin };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueEpics\"},\"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\":\"title\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"EpicState\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableSearchableField\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iidStartsWith\"}},\"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\":\"group\"},\"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\":\"attributes\"},\"name\":{\"kind\":\"Name\",\"value\":\"epics\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeAncestorGroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeDescendantGroups\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iidStartsWith\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iidStartsWith\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"EpicFragment\"},\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":496}};\n    doc.loc.source = {\"body\":\"#import \\\"./epic.fragment.graphql\\\"\\n\\nquery issueEpics(\\n  $fullPath: ID!\\n  $title: String\\n  $state: EpicState\\n  $in: [IssuableSearchableField!]\\n  $iidStartsWith: String\\n) {\\n  workspace: group(fullPath: $fullPath) {\\n    id\\n    attributes: epics(\\n      search: $title\\n      in: $in\\n      state: $state\\n      includeAncestorGroups: true\\n      includeDescendantGroups: false\\n      iidStartsWith: $iidStartsWith\\n    ) {\\n      nodes {\\n        ...EpicFragment\\n        state\\n        iid\\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(\"./epic.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[\"issueEpics\"] = oneQuery(doc, \"issueEpics\");\n        \n","import { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { sortKeys, omit } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, BForm } from '../form/form';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n  formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}), NAME_DROPDOWN_FORM);\n\n// --- Main component ---\n\n// @vue/component\nconst BDropdownForm = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_FORM,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      listeners,\n      children\n    } = _ref;\n    return h('li', mergeData(omit(data, ['attrs', 'on']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(BForm, {\n      staticClass: 'b-dropdown-form',\n      class: [props.formClass, {\n        disabled: props.disabled\n      }],\n      props,\n      attrs: {\n        ...(data.attrs || {}),\n        disabled: props.disabled,\n        // Tab index of -1 for keyboard navigation\n        tabindex: props.disabled ? null : '-1'\n      },\n      on: listeners,\n      ref: 'form'\n    }, children)]);\n  }\n});\n\nexport { BDropdownForm, props };\n","import { BDropdownForm } from '../../../vendor/bootstrap-vue/src/components/dropdown/dropdown-form';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlDropdownForm',\n  components: {\n    BDropdownForm\n  },\n  inheritAttrs: false\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-dropdown-form',_vm._g(_vm._b({attrs:{\"form-class\":\"gl-p-0\"}},'b-dropdown-form',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import isString from 'lodash/isString';\nimport Pikaday from 'pikaday';\nimport { defaultDateFormat, datepickerWidthOptionsMap } from '../../../utils/constants';\nimport { areDatesEqual } from '../../../utils/datetime_utility';\nimport GlButton from '../button/button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pad = function (val) {\n  let len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  return `0${val}`.slice(-len);\n};\n\n/**\n * Used `onSelect` method in pickaday\n * @param {Date} date UTC format\n * @return {String} Date formated in yyyy-mm-dd\n */\nconst defaultDateFormatter = date => {\n  const day = pad(date.getDate());\n  const month = pad(date.getMonth() + 1);\n  const year = date.getFullYear();\n  return `${year}-${month}-${day}`;\n};\nconst isBefore = (compareTo, date) => compareTo && date && date.getTime() < compareTo.getTime();\nconst highlightPastDates = pikaday => {\n  const pikaButtons = pikaday.el.querySelectorAll('.pika-button');\n  const today = new Date();\n  pikaButtons.forEach(pikaButton => {\n    const {\n      pikaYear,\n      pikaMonth,\n      pikaDay\n    } = pikaButton.dataset;\n    const pikaButtonDate = new Date(pikaYear, pikaMonth, pikaDay);\n    if (isBefore(today, pikaButtonDate)) {\n      pikaButton.classList.add('is-past-date');\n    }\n  });\n};\nconst addAccessibleLabels = element => {\n  // Pikaday sets `role=\"heading\"`, which requires a corresponding\n  // `aria-level`. Ensure we have one.\n  const titleEl = element.querySelector('.pika-title[role=\"heading\"]');\n  if (titleEl) {\n    titleEl.setAttribute('aria-level', 3);\n  }\n\n  // Add aria-label to month & year select dropdowns\n  const monthEl = element.querySelector('select.pika-select-month');\n  if (monthEl) {\n    monthEl.setAttribute('aria-label', translate('GlDatepicker.monthLabel', 'Month'));\n  }\n  const yearEl = element.querySelector('select.pika-select-year');\n  if (yearEl) {\n    yearEl.setAttribute('aria-label', translate('GlDatepicker.yearLabel', 'Year'));\n  }\n};\nvar script = {\n  name: 'GlDatepicker',\n  components: {\n    GlFormInput,\n    GlIcon,\n    GlButton\n  },\n  props: {\n    /**\n     * Selector of element that triggers the datepicker. Defaults to the calendar icon. Pass `null` to trigger on input focus.\n     */\n    target: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * DOM node to render calendar into. Defaults to the datepicker container. Pass `null` to use Pikaday default.\n     */\n    container: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    value: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    minDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    maxDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    startRange: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    endRange: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    /**\n     * Accepts a function that accepts a date as argument and returns true if the date is disabled.\n     */\n    disableDayFn: {\n      type: Function,\n      required: false,\n      default: null\n    },\n    firstDay: {\n      type: Number,\n      required: false,\n      default: 0\n    },\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    placeholder: {\n      type: String,\n      required: false,\n      default: defaultDateFormat\n    },\n    /**\n     * Defaults to `off` when datepicker opens on focus, otherwise defaults to `null`.\n     */\n    autocomplete: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    displayField: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Use this prop to set the initial date for the datepicker.\n     */\n    defaultDate: {\n      type: Date,\n      required: false,\n      default: null\n    },\n    i18n: {\n      type: Object,\n      required: false,\n      default: null\n    },\n    theme: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    showClearButton: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    inputId: {\n      type: String,\n      required: false,\n      default: null\n    },\n    inputLabel: {\n      type: String,\n      required: false,\n      default: 'Enter date'\n    },\n    inputName: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Maximum width of the Datepicker\n     */\n    width: {\n      type: String,\n      required: false,\n      default: null,\n      validator: value => Object.keys(datepickerWidthOptionsMap).includes(value)\n    },\n    state: {\n      type: Boolean,\n      required: false,\n      default: null\n    }\n  },\n  data() {\n    return {\n      textInput: ''\n    };\n  },\n  computed: {\n    formattedDate() {\n      return 'calendar' in this ? this.calendar.toString() : '';\n    },\n    customTrigger() {\n      return isString(this.target) && this.target !== '';\n    },\n    triggerOnFocus() {\n      return this.target === null;\n    },\n    showDefaultField() {\n      return !this.customTrigger || this.triggerOnFocus;\n    },\n    renderClearButton() {\n      return this.showClearButton && this.textInput !== '' && !this.disabled;\n    },\n    inputAutocomplete() {\n      if (this.autocomplete !== '') {\n        return this.autocomplete;\n      }\n      if (this.triggerOnFocus) {\n        return 'off';\n      }\n      return null;\n    },\n    datepickerClasses() {\n      return ['gl-datepicker', 'gl-inline-block', 'gl-w-full',\n      // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n      `gl-form-input-${this.computedWidth}`];\n    },\n    computedWidth() {\n      if (this.width) {\n        return this.width;\n      }\n      return 'md';\n    }\n  },\n  watch: {\n    value(val) {\n      if (!areDatesEqual(val, this.calendar.getDate())) {\n        this.calendar.setDate(val, true);\n      }\n    },\n    minDate(minDate) {\n      this.calendar.setMinDate(minDate);\n    },\n    maxDate(maxDate) {\n      this.calendar.setMaxDate(maxDate);\n    },\n    startRange(startRange) {\n      this.calendar.setStartRange(startRange);\n    },\n    endRange(endRange) {\n      this.calendar.setEndRange(endRange);\n    }\n  },\n  mounted() {\n    const $parentEl = this.$parent.$el;\n    const openedEvent = this.opened.bind(this);\n    const drawEvent = this.draw.bind(this);\n    const pikadayConfig = {\n      field: this.$el.querySelector('input[type=\"text\"]'),\n      // `!gl-absolute` is needed because of this bug: https://github.com/Pikaday/Pikaday/issues/840\n      theme: `gl-datepicker-theme !gl-absolute ${this.theme}`,\n      defaultDate: this.defaultDate || this.value,\n      setDefaultDate: Boolean(this.value) || Boolean(this.defaultDate),\n      minDate: this.minDate,\n      maxDate: this.maxDate,\n      // Only supports default gitlab format YYYY-MM-DD. We have to decide if we want to support other formats.\n      format: defaultDateFormat,\n      parse: dateString => {\n        const parsedDate = Date.parse(dateString.replace(/-/g, '/'));\n        return Number.isNaN(parsedDate) ? new Date() : new Date(parsedDate);\n      },\n      disableDayFn: this.disableDayFn,\n      firstDay: this.firstDay,\n      ariaLabel: this.ariaLabel,\n      toString: date => defaultDateFormatter(date),\n      onSelect: this.selected.bind(this),\n      onClose: this.closed.bind(this),\n      onOpen: () => {\n        addAccessibleLabels(this.$el);\n        openedEvent();\n      },\n      onDraw: pikaday => {\n        highlightPastDates(pikaday);\n        drawEvent();\n      }\n    };\n\n    // Pass `null` as `target` prop to use the `field` as the trigger (open on focus)\n    if (!this.triggerOnFocus && !this.disabled) {\n      const trigger = this.customTrigger ? $parentEl.querySelector(this.target) : this.$refs.calendarTriggerBtn.$el;\n      pikadayConfig.trigger = trigger;\n\n      // Set `trigger` as the `field` if `field` element doesn't exist (not passed via the slot)\n      if (!pikadayConfig.field && this.customTrigger) {\n        pikadayConfig.field = trigger;\n      }\n    }\n\n    // Pass `null` as `container` prop to prevent passing the `container` option to Pikaday\n    if (this.container !== null) {\n      const container = this.container ? $parentEl.querySelector(this.container) : this.$el;\n      pikadayConfig.container = container;\n    }\n    if (this.i18n) {\n      pikadayConfig.i18n = this.i18n;\n    }\n    this.calendar = new Pikaday(pikadayConfig);\n    if (this.startOpened) {\n      this.calendar.show();\n    }\n  },\n  beforeDestroy() {\n    this.calendar.destroy();\n  },\n  methods: {\n    // is used to open datepicker programmatically\n    show() {\n      this.calendar.show();\n    },\n    selected(date) {\n      /**\n       * Emitted when a new date has been selected.\n       * @property {Date} date The selected date\n       */\n      this.$emit('input', date);\n    },\n    closed() {\n      /**\n       * Emitted when the datepicker is hidden.\n       */\n      this.$emit('close');\n    },\n    opened() {\n      /**\n       * Emitted when the datepicker becomes visible.\n       */\n      this.$emit('open');\n    },\n    cleared() {\n      this.textInput = '';\n      /**\n       * Emitted when the clear button is clicked.\n       */\n      this.$emit('clear');\n    },\n    draw() {\n      /**\n       * Emitted when the datepicker draws a new month.\n       */\n      this.$emit('monthChange');\n    },\n    onKeydown() {\n      if (this.textInput === '') {\n        const resetDate = this.minDate || null;\n        this.calendar.setDate(resetDate);\n        this.selected(resetDate);\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.datepickerClasses},[(_vm.showDefaultField)?_c('div',{staticClass:\"gl-flex gl-items-start gl-gap-3\"},[_c('div',{staticClass:\"gl-relative gl-flex gl-grow\"},[_vm._t(\"default\",function(){return [_c('gl-form-input',{class:_vm.renderClearButton ? '!gl-pr-9' : '!gl-pr-7',attrs:{\"id\":_vm.inputId,\"name\":_vm.inputName,\"data-testid\":\"gl-datepicker-input\",\"value\":_vm.formattedDate,\"placeholder\":_vm.placeholder,\"autocomplete\":_vm.inputAutocomplete,\"disabled\":_vm.disabled,\"aria-label\":_vm.inputLabel,\"state\":_vm.state},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onKeydown.apply(null, arguments)}},model:{value:(_vm.textInput),callback:function ($$v) {_vm.textInput=$$v;},expression:\"textInput\"}})]},{\"formattedDate\":_vm.formattedDate}),_vm._v(\" \"),_c('div',{staticClass:\"gl-datepicker-actions\"},[(_vm.renderClearButton)?_c('gl-button',{staticClass:\"gl-pointer-events-auto\",attrs:{\"data-testid\":\"clear-button\",\"aria-label\":\"Clear date\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"clear\"},on:{\"click\":_vm.cleared}}):_vm._e(),_vm._v(\" \"),(_vm.triggerOnFocus || _vm.disabled)?_c('span',{staticClass:\"gl-px-2\",class:_vm.disabled ? 'gl-text-gray-400' : 'gl-text-gray-500',attrs:{\"data-testid\":\"datepicker-calendar-icon\"}},[_c('gl-icon',{staticClass:\"gl-block\",attrs:{\"name\":\"calendar\",\"size\":16}})],1):_c('gl-button',{ref:\"calendarTriggerBtn\",staticClass:\"gl-pointer-events-auto\",attrs:{\"aria-label\":\"Open datepicker\",\"category\":\"tertiary\",\"size\":\"small\",\"icon\":\"calendar\"}})],1)],2),_vm._v(\" \"),_vm._t(\"after\")],2):_vm._t(\"default\",null,{\"formattedDate\":_vm.formattedDate})],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { defaultDateFormatter, pad };\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"EpicFragment\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Epic\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":56}};\n    doc.loc.source = {\"body\":\"fragment EpicFragment on Epic {\\n  id\\n  title\\n  webUrl\\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[\"EpicFragment\"] = oneQuery(doc, \"EpicFragment\");\n        \n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n  return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\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!./report_abuse_dropdown_item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./report_abuse_dropdown_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlDropdownItem } from '@gitlab/ui';\nimport { MountingPortal } from 'portal-vue';\nimport { s__ } from '~/locale';\n\nimport AbuseCategorySelector from '~/abuse_reports/components/abuse_category_selector.vue';\n\nexport default {\n  name: 'ReportAbuseDropdownItem',\n  components: {\n    GlDropdownItem,\n    MountingPortal,\n    AbuseCategorySelector,\n  },\n  inject: ['reportedUserId', 'reportedFromUrl'],\n  i18n: {\n    reportAbuse: s__('ReportAbuse|Report abuse'),\n  },\n  data() {\n    return {\n      open: false,\n    };\n  },\n  methods: {\n    toggleDrawer(open) {\n      this.open = open;\n    },\n  },\n};\n</script>\n<template>\n  <span>\n    <gl-dropdown-item @click=\"toggleDrawer(true)\">{{ $options.i18n.reportAbuse }}</gl-dropdown-item>\n\n    <mounting-portal mount-to=\"#js-report-abuse-drawer\" name=\"abuse-category-selector\" append>\n      <abuse-category-selector\n        :reported-user-id=\"reportedUserId\"\n        :reported-from-url=\"reportedFromUrl\"\n        :show-drawer=\"open\"\n        @close-drawer=\"toggleDrawer(false)\"\n      />\n    </mounting-portal>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./report_abuse_dropdown_item.vue?vue&type=template&id=59e7af4a\"\nimport script from \"./report_abuse_dropdown_item.vue?vue&type=script&lang=js\"\nexport * from \"./report_abuse_dropdown_item.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_c('gl-dropdown-item',{on:{\"click\":function($event){return _vm.toggleDrawer(true)}}},[_vm._v(_vm._s(_vm.$options.i18n.reportAbuse))]),_vm._v(\" \"),_c('mounting-portal',{attrs:{\"mount-to\":\"#js-report-abuse-drawer\",\"name\":\"abuse-category-selector\",\"append\":\"\"}},[_c('abuse-category-selector',{attrs:{\"reported-user-id\":_vm.reportedUserId,\"reported-from-url\":_vm.reportedFromUrl,\"show-drawer\":_vm.open},on:{\"close-drawer\":function($event){return _vm.toggleDrawer(false)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport ReportAbuseDropdownItem from './components/report_abuse_dropdown_item.vue';\n\nexport const initReportAbuse = () => {\n  const items = document.querySelectorAll('.js-report-abuse-dropdown-item');\n\n  items.forEach((el) => {\n    if (!el) return false;\n\n    const { reportAbusePath, reportedUserId, reportedFromUrl } = el.dataset;\n\n    return new Vue({\n      el,\n      name: 'ReportAbuseDropdownItemRoot',\n      provide: {\n        reportAbusePath,\n        reportedUserId: parseInt(reportedUserId, 10),\n        reportedFromUrl,\n      },\n      render(createElement) {\n        return createElement(ReportAbuseDropdownItem);\n      },\n    });\n  });\n};\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n  const walk = (node, parent = {}) => {\n    const invalidBlock = utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    const invalid = invalidBlock === true || invalidNode === true;\n    const prefix = options.escapeInvalid === true ? '\\\\' : '';\n    let output = '';\n\n    if (node.isOpen === true) {\n      return prefix + node.value;\n    }\n\n    if (node.isClose === true) {\n      console.log('node.isClose', prefix, node.value);\n      return prefix + node.value;\n    }\n\n    if (node.type === 'open') {\n      return invalid ? prefix + node.value : '(';\n    }\n\n    if (node.type === 'close') {\n      return invalid ? prefix + node.value : ')';\n    }\n\n    if (node.type === 'comma') {\n      return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n      const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n      if (range.length !== 0) {\n        return args.length > 1 && range.length > 1 ? `(${range})` : range;\n      }\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += walk(child, node);\n      }\n    }\n\n    return output;\n  };\n\n  return walk(ast);\n};\n\nmodule.exports = compile;\n","import axios from '~/lib/utils/axios_utils';\n\nexport default {\n  createNewDraft(endpoint, data) {\n    const postData = { ...data, draft_note: data.note };\n    delete postData.note;\n\n    return axios.post(endpoint, postData);\n  },\n  deleteDraft(endpoint, draftId) {\n    return axios.delete(`${endpoint}/${draftId}`);\n  },\n  publishDraft(endpoint, draftId) {\n    return axios.post(endpoint, { id: draftId });\n  },\n  addDraftToDiscussion(endpoint, data) {\n    return axios.post(endpoint, data);\n  },\n  fetchDrafts(endpoint) {\n    return axios.get(endpoint);\n  },\n  publish(endpoint, noteData) {\n    return axios.post(endpoint, noteData);\n  },\n  discard(endpoint) {\n    return axios.delete(endpoint);\n  },\n  update(endpoint, { draftId, note, resolveDiscussion, position }) {\n    return axios.put(`${endpoint}/${draftId}`, {\n      draft_note: { note, resolve_discussion: resolveDiscussion, position },\n    });\n  },\n};\n","import { isEmpty } from 'lodash';\nimport { createAlert } from '~/alert';\nimport { scrollToElement } from '~/lib/utils/common_utils';\nimport { __ } from '~/locale';\nimport { FILE_DIFF_POSITION_TYPE } from '~/diffs/constants';\nimport { updateNoteErrorMessage } from '~/notes/utils';\nimport { CHANGES_TAB, DISCUSSION_TAB, SHOW_TAB } from '../../../constants';\nimport service from '../../../services/drafts_service';\nimport * as types from './mutation_types';\n\nexport const saveDraft = ({ dispatch }, draft) =>\n  dispatch('saveNote', { ...draft, isDraft: true }, { root: true });\n\nexport const addDraftToDiscussion = ({ commit }, { endpoint, data }) =>\n  service\n    .addDraftToDiscussion(endpoint, data)\n    .then((res) => res.data)\n    .then((res) => {\n      commit(types.ADD_NEW_DRAFT, res);\n      return res;\n    })\n    .catch((e) => {\n      throw e.response;\n    });\n\nexport const createNewDraft = ({ commit, dispatch }, { endpoint, data }) =>\n  service\n    .createNewDraft(endpoint, data)\n    .then((res) => res.data)\n    .then((res) => {\n      commit(types.ADD_NEW_DRAFT, res);\n\n      if (res.position?.position_type === FILE_DIFF_POSITION_TYPE) {\n        dispatch('diffs/addDraftToFile', { filePath: res.file_path, draft: res }, { root: true });\n      }\n\n      return res;\n    })\n    .catch((e) => {\n      throw e.response;\n    });\n\nexport const deleteDraft = ({ commit, getters }, draft) =>\n  service\n    .deleteDraft(getters.getNotesData.draftsPath, draft.id)\n    .then(() => {\n      commit(types.DELETE_DRAFT, draft.id);\n    })\n    .catch(() =>\n      createAlert({\n        message: __('An error occurred while deleting the comment'),\n      }),\n    );\n\nexport const fetchDrafts = ({ commit, getters, state, dispatch }) =>\n  service\n    .fetchDrafts(getters.getNotesData.draftsPath)\n    .then((res) => res.data)\n    .then((data) => commit(types.SET_BATCH_COMMENTS_DRAFTS, data))\n    .then(() => {\n      state.drafts.forEach((draft) => {\n        if (draft.position?.position_type === FILE_DIFF_POSITION_TYPE) {\n          dispatch('diffs/addDraftToFile', { filePath: draft.file_path, draft }, { root: true });\n        } else if (!draft.line_code) {\n          dispatch('convertToDiscussion', draft.discussion_id, { root: true });\n        }\n      });\n    })\n    .catch(() =>\n      createAlert({\n        message: __('An error occurred while fetching pending comments'),\n      }),\n    );\n\nexport const publishSingleDraft = ({ commit, getters }, draftId) => {\n  commit(types.REQUEST_PUBLISH_DRAFT, draftId);\n\n  service\n    .publishDraft(getters.getNotesData.draftsPublishPath, draftId)\n    .then(() => commit(types.RECEIVE_PUBLISH_DRAFT_SUCCESS, draftId))\n    .catch(() => commit(types.RECEIVE_PUBLISH_DRAFT_ERROR, draftId));\n};\n\nexport const publishReview = ({ commit, getters }, noteData = {}) => {\n  commit(types.REQUEST_PUBLISH_REVIEW);\n\n  return service\n    .publish(getters.getNotesData.draftsPublishPath, noteData)\n    .then(() => commit(types.RECEIVE_PUBLISH_REVIEW_SUCCESS))\n    .catch((e) => {\n      commit(types.RECEIVE_PUBLISH_REVIEW_ERROR);\n\n      throw e.response;\n    });\n};\n\nexport const updateDraft = (\n  { commit, getters },\n  { note, noteText, resolveDiscussion, position, flashContainer, callback, errorCallback },\n) => {\n  const params = {\n    draftId: note.id,\n    note: noteText,\n    resolveDiscussion,\n  };\n  // Stringifying an empty object yields `{}` which breaks graphql queries\n  // https://gitlab.com/gitlab-org/gitlab/-/issues/298827\n  if (!isEmpty(position)) params.position = JSON.stringify(position);\n\n  return service\n    .update(getters.getNotesData.draftsPath, params)\n    .then((res) => res.data)\n    .then((data) => commit(types.RECEIVE_DRAFT_UPDATE_SUCCESS, data))\n    .then(callback)\n    .catch((e) => {\n      createAlert({\n        message: updateNoteErrorMessage(e),\n        parent: flashContainer,\n      });\n\n      errorCallback();\n    });\n};\n\nexport const scrollToDraft = ({ dispatch, rootGetters }, draft) => {\n  const discussion = draft.discussion_id && rootGetters.getDiscussion(draft.discussion_id);\n  const tab =\n    draft.file_hash || (discussion && discussion.diff_discussion) ? CHANGES_TAB : SHOW_TAB;\n  const tabEl = tab === CHANGES_TAB ? CHANGES_TAB : DISCUSSION_TAB;\n  const draftID = `note_${draft.id}`;\n  const el = document.querySelector(`#${tabEl} #${draftID}`);\n\n  window.location.hash = draftID;\n\n  if (window.mrTabs.currentAction !== tab) {\n    window.mrTabs.tabShown(tab);\n  }\n\n  const { file_path: filePath } = draft;\n\n  if (filePath) {\n    dispatch('diffs/setFileCollapsedAutomatically', { filePath, collapsed: false }, { root: true });\n  }\n\n  if (discussion) {\n    dispatch('expandDiscussion', { discussionId: discussion.id }, { root: true });\n  }\n\n  if (el) {\n    setTimeout(() => scrollToElement(el.closest('.draft-note-component')));\n  }\n};\n\nexport const expandAllDiscussions = ({ dispatch, state }) =>\n  state.drafts\n    .filter((draft) => draft.discussion_id)\n    .forEach((draft) => {\n      dispatch('expandDiscussion', { discussionId: draft.discussion_id }, { root: true });\n    });\n\nexport const toggleResolveDiscussion = ({ commit }, draftId) => {\n  commit(types.TOGGLE_RESOLVE_DISCUSSION, draftId);\n};\n\nexport const clearDrafts = ({ commit }) => commit(types.CLEAR_DRAFTS);\n\nexport const discardDrafts = ({ getters, commit }) => {\n  return service\n    .discard(getters.getNotesData.draftsDiscardPath)\n    .then(() => {\n      commit(types.CLEAR_DRAFTS);\n    })\n    .catch((error) =>\n      createAlert({\n        captureError: true,\n        error,\n        message: __('An error occurred while discarding your review. Please try again.'),\n      }),\n    );\n};\n","import { parallelLineKey, showDraftOnSide } from '../../../utils';\n\nexport const draftsCount = (state) => state.drafts.length;\n\n// eslint-disable-next-line max-params\nexport const getNotesData = (state, getters, rootState, rootGetters) => rootGetters.getNotesData;\n\nexport const hasDrafts = (state) => state.drafts.length > 0;\n\nexport const draftsPerDiscussionId = (state) =>\n  state.drafts.reduce((acc, draft) => {\n    if (draft.discussion_id) {\n      acc[draft.discussion_id] = draft;\n    }\n\n    return acc;\n  }, {});\n\nexport const draftsPerFileHashAndLine = (state) =>\n  state.drafts.reduce((acc, draft) => {\n    if (draft.file_hash) {\n      if (!acc[draft.file_hash]) {\n        acc[draft.file_hash] = {};\n      }\n\n      if (!acc[draft.file_hash][draft.line_code]) {\n        acc[draft.file_hash][draft.line_code] = [];\n      }\n\n      acc[draft.file_hash][draft.line_code].push(draft);\n    }\n\n    return acc;\n  }, {});\n\nexport const shouldRenderDraftRow = (state, getters) => (diffFileSha, line) =>\n  Boolean(\n    diffFileSha in getters.draftsPerFileHashAndLine &&\n      getters.draftsPerFileHashAndLine[diffFileSha][line.line_code],\n  );\n\nexport const shouldRenderParallelDraftRow = (state, getters) => (diffFileSha, line) => {\n  const draftsForFile = getters.draftsPerFileHashAndLine[diffFileSha];\n  const [lkey, rkey] = [parallelLineKey(line, 'left'), parallelLineKey(line, 'right')];\n\n  return draftsForFile ? Boolean(draftsForFile[lkey] || draftsForFile[rkey]) : false;\n};\n\nexport const hasParallelDraftLeft = (state, getters) => (diffFileSha, line) => {\n  const draftsForFile = getters.draftsPerFileHashAndLine[diffFileSha];\n  const lkey = parallelLineKey(line, 'left');\n\n  return draftsForFile ? Boolean(draftsForFile[lkey]) : false;\n};\n\nexport const hasParallelDraftRight = (state, getters) => (diffFileSha, line) => {\n  const draftsForFile = getters.draftsPerFileHashAndLine[diffFileSha];\n  const rkey = parallelLineKey(line, 'left');\n\n  return draftsForFile ? Boolean(draftsForFile[rkey]) : false;\n};\n\nexport const shouldRenderDraftRowInDiscussion = (state, getters) => (discussionId) =>\n  typeof getters.draftsPerDiscussionId[discussionId] !== 'undefined';\n\nexport const draftForDiscussion = (state, getters) => (discussionId) =>\n  getters.draftsPerDiscussionId[discussionId] || {};\n\nexport const draftsForLine =\n  (state, getters) =>\n  (diffFileSha, line, side = null) => {\n    const draftsForFile = getters.draftsPerFileHashAndLine[diffFileSha];\n    const key = side !== null ? parallelLineKey(line, side) : line.line_code;\n    const showDraftsForThisSide = showDraftOnSide(line, side);\n\n    if (showDraftsForThisSide && draftsForFile?.[key]) {\n      return draftsForFile[key].filter((d) => d.position.position_type === 'text');\n    }\n    return [];\n  };\n\nexport const draftsForFile = (state) => (diffFileSha) =>\n  state.drafts.filter((draft) => draft.file_hash === diffFileSha);\n\nexport const isPublishingDraft = (state) => (draftId) =>\n  state.currentlyPublishingDrafts.indexOf(draftId) !== -1;\n\nexport const sortedDrafts = (state) => [...state.drafts].sort((a, b) => a.id > b.id);\n","import * as types from './mutation_types';\n\nconst processDraft = (draft) => ({\n  ...draft,\n  isDraft: true,\n});\n\nexport default {\n  [types.ADD_NEW_DRAFT](state, draft) {\n    state.drafts.push(processDraft(draft));\n    if (state.drafts.length === 1) {\n      state.shouldAnimateReviewButton = true;\n    }\n  },\n\n  [types.DELETE_DRAFT](state, draftId) {\n    state.drafts = state.drafts.filter((draft) => draft.id !== draftId);\n  },\n\n  [types.SET_BATCH_COMMENTS_DRAFTS](state, drafts) {\n    state.drafts = drafts.map(processDraft);\n  },\n\n  [types.REQUEST_PUBLISH_DRAFT](state, draftId) {\n    state.currentlyPublishingDrafts.push(draftId);\n  },\n  [types.RECEIVE_PUBLISH_DRAFT_SUCCESS](state, draftId) {\n    state.currentlyPublishingDrafts = state.currentlyPublishingDrafts.filter(\n      (publishingDraftId) => publishingDraftId !== draftId,\n    );\n    state.drafts = state.drafts.filter((d) => d.id !== draftId);\n  },\n  [types.RECEIVE_PUBLISH_DRAFT_ERROR](state, draftId) {\n    state.currentlyPublishingDrafts = state.currentlyPublishingDrafts.filter(\n      (publishingDraftId) => publishingDraftId !== draftId,\n    );\n  },\n\n  [types.REQUEST_PUBLISH_REVIEW](state) {\n    state.isPublishing = true;\n  },\n  [types.RECEIVE_PUBLISH_REVIEW_SUCCESS](state) {\n    state.isPublishing = false;\n  },\n  [types.RECEIVE_PUBLISH_REVIEW_ERROR](state) {\n    state.isPublishing = false;\n  },\n  [types.RECEIVE_DRAFT_UPDATE_SUCCESS](state, data) {\n    const index = state.drafts.findIndex((draft) => draft.id === data.id);\n\n    if (index >= 0) {\n      state.drafts.splice(index, 1, processDraft(data));\n    }\n  },\n  [types.TOGGLE_RESOLVE_DISCUSSION](state, draftId) {\n    state.drafts = state.drafts.map((draft) => {\n      if (draft.id === draftId) {\n        return {\n          ...draft,\n          resolve_discussion: !draft.resolve_discussion,\n        };\n      }\n\n      return draft;\n    });\n  },\n  [types.CLEAR_DRAFTS](state) {\n    state.drafts = [];\n  },\n  [types.SET_REVIEW_BAR_RENDERED](state) {\n    state.reviewBarRendered = true;\n  },\n  [types.SET_DRAFT_EDITING](state, { draftId, isEditing }) {\n    const draftIndex = state.drafts.findIndex((draft) => draft.id === draftId);\n    const draft = state.drafts[draftIndex];\n    state.drafts.splice(draftIndex, 1, { ...draft, isEditing });\n  },\n};\n","function removeEmptyProperties(dict) {\n  const noBlanks = Object.entries(dict).reduce((final, [key, value]) => {\n    const upd = { ...final };\n\n    // The number 0 shouldn't be falsey when we're printing variables\n    if (value || value === 0) {\n      upd[key] = value;\n    }\n\n    return upd;\n  }, {});\n\n  return noBlanks;\n}\n\nexport function computeSuggestionCommitMessage({ message, values = {} } = {}) {\n  const noEmpties = removeEmptyProperties(values);\n  const matchPhrases = Object.keys(noEmpties)\n    .map((key) => `%{${key}}`)\n    .join('|');\n  const replacementExpression = new RegExp(`(${matchPhrases})`, 'gm');\n\n  return message.replace(replacementExpression, (match) => {\n    const key = match.replace(/(^%{|}$)/gm, '');\n\n    return noEmpties[key];\n  });\n}\n","import { parseBoolean } from '~/lib/utils/common_utils';\nimport { getParameterByName } from '~/lib/utils/url_utility';\nimport { __, n__, sprintf } from '~/locale';\nimport { DIFF_COMPARE_BASE_VERSION_INDEX, DIFF_COMPARE_HEAD_VERSION_INDEX } from '../constants';\n\nexport const selectedTargetIndex = (state) =>\n  state.startVersion?.version_index || DIFF_COMPARE_BASE_VERSION_INDEX;\n\nexport const selectedSourceIndex = (state) => state.mergeRequestDiff.version_index;\n\nexport const selectedContextCommitsDiffs = (state) =>\n  state.contextCommitsDiff && state.contextCommitsDiff.showing_context_commits_diff;\n\nexport const diffCompareDropdownTargetVersions = (state, getters) => {\n  // startVersion only exists if the user has selected a version other\n  // than \"base\" so if startVersion is null then base must be selected\n\n  const diffHeadParam = getParameterByName('diff_head');\n  const diffHead = parseBoolean(diffHeadParam) || !diffHeadParam;\n  const isBaseSelected = !state.startVersion;\n  const isHeadSelected = !state.startVersion && diffHead;\n  let baseVersion = null;\n\n  if (!state.mergeRequestDiff.head_version_path) {\n    baseVersion = {\n      versionName: state.targetBranchName,\n      version_index: DIFF_COMPARE_BASE_VERSION_INDEX,\n      href: state.mergeRequestDiff.base_version_path,\n      isBase: true,\n      selected: isBaseSelected,\n    };\n  }\n\n  const headVersion = {\n    versionName: state.targetBranchName,\n    version_index: DIFF_COMPARE_HEAD_VERSION_INDEX,\n    href: state.mergeRequestDiff.head_version_path,\n    isHead: true,\n    selected: isHeadSelected,\n  };\n  // Appended properties here are to make the compare_dropdown_layout easier to reason about\n  const formatVersion = (v) => {\n    return {\n      href: v.compare_path,\n      versionName: sprintf(__(`version %{versionIndex}`), { versionIndex: v.version_index }),\n      selected: v.version_index === getters.selectedTargetIndex,\n      ...v,\n    };\n  };\n\n  return [\n    ...state.mergeRequestDiffs.slice(1).map(formatVersion),\n    baseVersion,\n    state.mergeRequestDiff.head_version_path && headVersion,\n  ].filter((a) => a);\n};\n\nexport const diffCompareDropdownSourceVersions = (state, getters) => {\n  // Appended properties here are to make the compare_dropdown_layout easier to reason about\n  const versions = state.mergeRequestDiffs.map((v, i) => {\n    const isLatestVersion = i === 0;\n\n    return {\n      ...v,\n      href: v.version_path,\n      commitsText: n__(`%d commit,`, `%d commits,`, v.commits_count),\n      isLatestVersion,\n      versionName: isLatestVersion\n        ? __('latest version')\n        : sprintf(__(`version %{versionIndex}`), { versionIndex: v.version_index }),\n      selected:\n        v.version_index === getters.selectedSourceIndex && !getters.selectedContextCommitsDiffs,\n    };\n  });\n\n  const { contextCommitsDiff } = state;\n  if (contextCommitsDiff) {\n    versions.push({\n      href: contextCommitsDiff.diffs_path,\n      commitsText: n__(`%d commit`, `%d commits`, contextCommitsDiff.commits_count),\n      versionName: __('previously merged commits'),\n      selected: getters.selectedContextCommitsDiffs,\n      addDivider: state.mergeRequestDiffs.length > 0,\n    });\n  }\n  return versions;\n};\n","import { __, n__ } from '~/locale';\nimport { getParameterValues } from '~/lib/utils/url_utility';\nimport {\n  PARALLEL_DIFF_VIEW_TYPE,\n  INLINE_DIFF_VIEW_TYPE,\n  INLINE_DIFF_LINES_KEY,\n} from '../constants';\nimport { computeSuggestionCommitMessage } from '../utils/suggestions';\nimport { parallelizeDiffLines } from './utils';\n\nexport * from './getters_versions_dropdowns';\n\nexport const isParallelView = (state) => state.diffViewType === PARALLEL_DIFF_VIEW_TYPE;\n\nexport const isInlineView = (state) => state.diffViewType === INLINE_DIFF_VIEW_TYPE;\n\nexport const whichCollapsedTypes = (state) => {\n  const automatic = state.diffFiles.some((file) => file.viewer?.automaticallyCollapsed);\n  const manual = state.diffFiles.some((file) => file.viewer?.manuallyCollapsed);\n\n  return {\n    any: automatic || manual,\n    automatic,\n    manual,\n  };\n};\n\nexport const commitId = (state) => (state.commit && state.commit.id ? state.commit.id : null);\n\n/**\n * Checks if the diff has all discussions expanded\n * @param {Object} diff\n * @returns {Boolean}\n */\nexport const diffHasAllExpandedDiscussions = (state, getters) => (diff) => {\n  const discussions = getters.getDiffFileDiscussions(diff);\n\n  return (\n    (discussions && discussions.length && discussions.every((discussion) => discussion.expanded)) ||\n    false\n  );\n};\n\n/**\n * Checks if the diff has all discussions collapsed\n * @param {Object} diff\n * @returns {Boolean}\n */\nexport const diffHasAllCollapsedDiscussions = (state, getters) => (diff) => {\n  const discussions = getters.getDiffFileDiscussions(diff);\n\n  return (\n    (discussions &&\n      discussions.length &&\n      discussions.every((discussion) => !discussion.expanded)) ||\n    false\n  );\n};\n\n/**\n * Checks if the diff has any open discussions\n * @param {Object} diff\n * @returns {Boolean}\n */\nexport const diffHasExpandedDiscussions = () => (diff) => {\n  const diffLineDiscussionsExpanded = diff[INLINE_DIFF_LINES_KEY].filter(\n    (l) => l.discussions.length >= 1,\n  ).some((l) => l.discussionsExpanded);\n  const diffFileDiscussionsExpanded = diff.discussions?.some((d) => d.expandedOnDiff);\n\n  return diffFileDiscussionsExpanded || diffLineDiscussionsExpanded;\n};\n\n/**\n * Checks if every diff has every discussion open\n * @returns {Boolean}\n */\nexport const allDiffDiscussionsExpanded = (state) => {\n  return state.diffFiles.every((diff) => {\n    const highlightedLines = diff[INLINE_DIFF_LINES_KEY];\n    if (highlightedLines.length) {\n      return highlightedLines\n        .filter((l) => l.discussions.length >= 1)\n        .every((l) => l.discussionsExpanded);\n    }\n    if (diff.viewer.name === 'image') {\n      return diff.discussions.every((discussion) => discussion.expandedOnDiff);\n    }\n    return true;\n  });\n};\n\n/**\n * Checks if the diff has any discussion\n * @param {Boolean} diff\n * @returns {Boolean}\n */\nexport const diffHasDiscussions = () => (diff) => {\n  return (\n    diff.discussions?.length >= 1 ||\n    diff[INLINE_DIFF_LINES_KEY].some((l) => l.discussions.length >= 1)\n  );\n};\n\n/**\n * Returns an array with the discussions of the given diff\n * @param {Object} diff\n * @returns {Array}\n */\n// eslint-disable-next-line max-params\nexport const getDiffFileDiscussions = (state, getters, rootState, rootGetters) => (diff) =>\n  rootGetters.discussions.filter(\n    (discussion) => discussion.diff_discussion && discussion.diff_file.file_hash === diff.file_hash,\n  ) || [];\n\nexport const getDiffFileByHash = (state) => (fileHash) =>\n  state.diffFiles.find((file) => file.file_hash === fileHash);\n\nexport function isTreePathLoaded(state) {\n  return (path) => {\n    return Boolean(state.treeEntries[path]?.diffLoaded);\n  };\n}\n\nexport const flatBlobsList = (state) =>\n  Object.values(state.treeEntries).filter((f) => f.type === 'blob');\n\nexport const allBlobs = (state, getters) =>\n  getters.flatBlobsList.reduce((acc, file) => {\n    const { parentPath } = file;\n\n    if (parentPath && !acc.some((f) => f.path === parentPath)) {\n      acc.push({\n        path: parentPath,\n        isHeader: true,\n        tree: [],\n      });\n    }\n\n    acc.find((f) => f.path === parentPath).tree.push(file);\n\n    return acc;\n  }, []);\n\nexport const getCommentFormForDiffFile = (state) => (fileHash) =>\n  state.commentForms.find((form) => form.fileHash === fileHash);\n\n/**\n * Returns the test coverage hits for a specific line of a given file\n * @param {string} file\n * @param {number} line\n * @returns {number}\n */\nexport const fileLineCoverage = (state) => (file, line) => {\n  if (!state.coverageFiles.files) return {};\n  const fileCoverage = state.coverageFiles.files[file];\n  if (!fileCoverage) return {};\n  const lineCoverage = fileCoverage[String(line)];\n\n  if (lineCoverage === 0) {\n    return { text: __('No test coverage'), class: 'no-coverage' };\n  }\n  if (lineCoverage >= 0) {\n    return {\n      text: n__('Test coverage: %d hit', 'Test coverage: %d hits', lineCoverage),\n      class: 'coverage',\n    };\n  }\n  return {};\n};\n\n/**\n * Returns index of a currently selected diff in diffFiles\n * @returns {number}\n */\nexport const currentDiffIndex = (state) =>\n  Math.max(\n    0,\n    flatBlobsList(state).findIndex((diff) => diff.fileHash === state.currentDiffFileId),\n  );\n\nexport const diffLines = (state) => (file) => {\n  return parallelizeDiffLines(\n    file.highlighted_diff_lines || [],\n    state.diffViewType === INLINE_DIFF_VIEW_TYPE,\n  );\n};\n\nexport function suggestionCommitMessage(state, _, rootState) {\n  return (values = {}) =>\n    computeSuggestionCommitMessage({\n      message: state.defaultSuggestionCommitMessage,\n      values: {\n        branch_name: rootState.page.mrMetadata.branch_name,\n        project_path: rootState.page.mrMetadata.project_path,\n        project_name: rootState.page.mrMetadata.project_name,\n        username: rootState.page.mrMetadata.username,\n        user_full_name: rootState.page.mrMetadata.user_full_name,\n        ...values,\n      },\n    });\n}\n\nexport const isVirtualScrollingEnabled = (state) => {\n  if (state.disableVirtualScroller || getParameterValues('virtual_scrolling')[0] === 'false') {\n    return false;\n  }\n\n  return !state.viewDiffsFileByFile;\n};\n\nexport const isBatchLoading = (state) => state.batchLoadingState === 'loading';\nexport const isBatchLoadingError = (state) => state.batchLoadingState === 'error';\n\nexport const diffFiles = (state, getters) => {\n  const { linkedFile } = getters;\n  if (linkedFile) {\n    const diffs = state.diffFiles.slice(0);\n    diffs.splice(diffs.indexOf(linkedFile), 1);\n    return [linkedFile, ...diffs];\n  }\n  return state.diffFiles;\n};\n\nexport const linkedFile = (state) => {\n  if (!state.linkedFileHash) return null;\n  return state.diffFiles.find((file) => file.file_hash === state.linkedFileHash);\n};\n","import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport {\n  DIFF_FILE_MANUAL_COLLAPSE,\n  DIFF_FILE_AUTOMATIC_COLLAPSE,\n  INLINE_DIFF_LINES_KEY,\n  EXPANDED_LINE_TYPE,\n  FILE_DIFF_POSITION_TYPE,\n} from '../constants';\nimport * as types from './mutation_types';\nimport {\n  findDiffFile,\n  addLineReferences,\n  removeMatchLine,\n  addContextLines,\n  prepareDiffData,\n  isDiscussionApplicableToLine,\n  updateLineInFile,\n  markTreeEntriesLoaded,\n} from './utils';\n\nfunction updateDiffFilesInState(state, files) {\n  return Object.assign(state, { diffFiles: files });\n}\n\nexport default {\n  [types.SET_BASE_CONFIG](state, options) {\n    const {\n      endpoint,\n      endpointMetadata,\n      endpointBatch,\n      endpointDiffForPath,\n      endpointCoverage,\n      endpointUpdateUser,\n      projectPath,\n      dismissEndpoint,\n      showSuggestPopover,\n      defaultSuggestionCommitMessage,\n      viewDiffsFileByFile,\n      mrReviews,\n      diffViewType,\n      perPage,\n    } = options;\n    Object.assign(state, {\n      endpoint,\n      endpointMetadata,\n      endpointBatch,\n      endpointDiffForPath,\n      endpointCoverage,\n      endpointUpdateUser,\n      projectPath,\n      dismissEndpoint,\n      showSuggestPopover,\n      defaultSuggestionCommitMessage,\n      viewDiffsFileByFile,\n      mrReviews,\n      diffViewType,\n      perPage,\n    });\n  },\n\n  [types.SET_LOADING](state, isLoading) {\n    Object.assign(state, { isLoading });\n  },\n\n  [types.SET_BATCH_LOADING_STATE](state, batchLoadingState) {\n    Object.assign(state, { batchLoadingState });\n  },\n\n  [types.SET_RETRIEVING_BATCHES](state, retrievingBatches) {\n    Object.assign(state, { retrievingBatches });\n  },\n\n  [types.SET_DIFF_FILES](state, files) {\n    updateDiffFilesInState(state, files);\n  },\n\n  [types.SET_DIFF_METADATA](state, data) {\n    Object.assign(state, {\n      ...convertObjectPropsToCamelCase(data),\n    });\n  },\n\n  [types.SET_DIFF_DATA_BATCH](state, { diff_files: diffFiles, updatePosition = true }) {\n    Object.assign(state, {\n      diffFiles: prepareDiffData({\n        diff: { diff_files: diffFiles },\n        priorFiles: state.diffFiles,\n        // when a linked file is added to diffs its position may be incorrect since it's loaded out of order\n        // we need to ensure when we load it in batched request it updates it position\n        updatePosition,\n      }),\n      treeEntries: markTreeEntriesLoaded({\n        priorEntries: state.treeEntries,\n        loadedFiles: diffFiles,\n      }),\n    });\n  },\n\n  [types.SET_DIFF_TREE_ENTRY](state, diffFile) {\n    Object.assign(state, {\n      treeEntries: markTreeEntriesLoaded({\n        priorEntries: state.treeEntries,\n        loadedFiles: [diffFile],\n      }),\n    });\n  },\n\n  [types.SET_COVERAGE_DATA](state, coverageFiles) {\n    Object.assign(state, { coverageFiles, coverageLoaded: true });\n  },\n\n  [types.SET_MERGE_REQUEST_DIFFS](state, mergeRequestDiffs) {\n    Object.assign(state, {\n      mergeRequestDiffs,\n    });\n  },\n\n  [types.SET_DIFF_VIEW_TYPE](state, diffViewType) {\n    Object.assign(state, { diffViewType });\n  },\n\n  [types.TOGGLE_LINE_HAS_FORM](state, { lineCode, fileHash, hasForm }) {\n    const diffFile = state.diffFiles.find((f) => f.file_hash === fileHash);\n\n    if (!diffFile) return;\n\n    diffFile[INLINE_DIFF_LINES_KEY].find((l) => l.line_code === lineCode).hasForm = hasForm;\n  },\n\n  [types.ADD_CONTEXT_LINES](state, options) {\n    const { lineNumbers, contextLines, fileHash, isExpandDown, nextLineNumbers } = options;\n    const { bottom } = options.params;\n    const diffFile = findDiffFile(state.diffFiles, fileHash);\n\n    removeMatchLine(diffFile, lineNumbers, bottom);\n\n    const lines = addLineReferences(\n      contextLines,\n      lineNumbers,\n      bottom,\n      isExpandDown,\n      nextLineNumbers,\n    ).map((line) => {\n      const lineCode =\n        line.type === 'match'\n          ? `${fileHash}_${line.meta_data.old_pos}_${line.meta_data.new_pos}_match`\n          : line.line_code || `${fileHash}_${line.old_line}_${line.new_line}`;\n      return {\n        ...line,\n        type: line.type || EXPANDED_LINE_TYPE,\n        line_code: lineCode,\n        discussions: line.discussions || [],\n        hasForm: false,\n      };\n    });\n\n    addContextLines({\n      inlineLines: diffFile[INLINE_DIFF_LINES_KEY],\n      contextLines: lines,\n      bottom,\n      lineNumbers,\n      isExpandDown,\n    });\n  },\n\n  [types.ADD_COLLAPSED_DIFFS](state, { file, data }) {\n    const files = prepareDiffData({ diff: data });\n    const [newFileData] = files.filter((f) => f.file_hash === file.file_hash);\n    const selectedFile = state.diffFiles.find((f) => f.file_hash === file.file_hash);\n    Object.assign(selectedFile, {\n      ...newFileData,\n      whitespaceOnlyChange: selectedFile.whitespaceOnlyChange,\n    });\n  },\n\n  [types.SET_LINE_DISCUSSIONS_FOR_FILE](state, { discussion, diffPositionByLineCode, hash }) {\n    const { latestDiff } = state;\n    const originalStartLineCode = discussion.original_position?.line_range?.start?.line_code;\n    const positionType = discussion.position?.position_type;\n    const discussionLineCodes = [\n      discussion.line_code,\n      originalStartLineCode,\n      ...(discussion.line_codes || []),\n    ];\n    const fileHash = discussion.diff_file?.file_hash;\n\n    const isHashTargeted = (discussionItem) =>\n      discussionItem.notes && discussionItem.notes.some((note) => hash === `note_${note.id}`);\n\n    const isTargetLine = (line) =>\n      discussionLineCodes.some(\n        (discussionLineCode) =>\n          line.line_code === discussionLineCode &&\n          isDiscussionApplicableToLine({\n            discussion,\n            diffPosition: diffPositionByLineCode[line.line_code],\n            latestDiff,\n          }),\n      );\n\n    const isExpandedDiscussion = (discussionItem) => {\n      return !discussionItem.resolved || isHashTargeted(discussionItem);\n    };\n\n    const file = state.diffFiles.find((diff) => diff.file_hash === fileHash);\n    // a file batch might not be loaded yet when we try to add a discussion\n    if (!file) return;\n    const diffLines = file[INLINE_DIFF_LINES_KEY];\n\n    const addDiscussion = (discussions) =>\n      discussions.filter(({ id }) => discussion.id !== id).concat(discussion);\n\n    if (diffLines.length && positionType !== FILE_DIFF_POSITION_TYPE) {\n      const line = diffLines.find(isTargetLine);\n      // skip if none of the discussion positions matched a diff position\n      if (!line) return;\n      const originalDiscussions = line.discussions || [];\n      if (originalDiscussions.includes(discussion)) return;\n      const discussions = addDiscussion(originalDiscussions);\n      Object.assign(line, {\n        discussions,\n        discussionsExpanded: line.discussionsExpanded || discussions.some(isExpandedDiscussion),\n      });\n    } else {\n      const originalDiscussions = file.discussions || [];\n      if (originalDiscussions.includes(discussion)) return;\n      Object.assign(discussion, { expandedOnDiff: isExpandedDiscussion(discussion) });\n      Object.assign(file, {\n        discussions: addDiscussion(originalDiscussions),\n      });\n    }\n  },\n\n  [types.TOGGLE_FILE_DISCUSSION_EXPAND](\n    state,\n    { discussion, expandedOnDiff = !discussion.expandedOnDiff },\n  ) {\n    Object.assign(discussion, { expandedOnDiff });\n    const fileHash = discussion.diff_file.file_hash;\n    const diff = state.diffFiles.find((f) => f.file_hash === fileHash);\n    // trigger Vue reactivity\n    Object.assign(diff, { discussions: [...diff.discussions] });\n  },\n\n  [types.REMOVE_LINE_DISCUSSIONS_FOR_FILE](state, { fileHash, lineCode }) {\n    const selectedFile = state.diffFiles.find((f) => f.file_hash === fileHash);\n    if (selectedFile) {\n      updateLineInFile(selectedFile, lineCode, (line) =>\n        Object.assign(line, {\n          discussions: line.discussions.filter((discussion) => discussion.notes.length),\n        }),\n      );\n\n      if (selectedFile.discussions && selectedFile.discussions.length) {\n        selectedFile.discussions = selectedFile.discussions.filter(\n          (discussion) => discussion.notes.length,\n        );\n      }\n    }\n  },\n\n  [types.TOGGLE_LINE_DISCUSSIONS](state, { fileHash, lineCode, expanded }) {\n    const selectedFile = state.diffFiles.find((f) => f.file_hash === fileHash);\n\n    updateLineInFile(selectedFile, lineCode, (line) => {\n      Object.assign(line, { discussionsExpanded: expanded });\n    });\n  },\n\n  [types.SET_EXPAND_ALL_DIFF_DISCUSSIONS](state, expanded) {\n    const lineHasDiscussion = (line) => Boolean(line.discussions?.length);\n    state.diffFiles.forEach((file) => {\n      const highlightedLines = file[INLINE_DIFF_LINES_KEY];\n      if (highlightedLines.length) {\n        const discussionLines = highlightedLines.filter(lineHasDiscussion);\n        discussionLines.forEach(({ line_code }) => {\n          updateLineInFile(file, line_code, (line) => {\n            Object.assign(line, { discussionsExpanded: expanded });\n          });\n        });\n      }\n\n      const discussions = file.discussions.map((discussion) => {\n        Object.assign(discussion, { expandedOnDiff: expanded });\n        return discussion;\n      });\n      Object.assign(file, { discussions });\n    });\n  },\n\n  [types.TOGGLE_FOLDER_OPEN](state, path) {\n    state.treeEntries[path].opened = !state.treeEntries[path].opened;\n  },\n  [types.SET_FOLDER_OPEN](state, { path, opened }) {\n    state.treeEntries[path].opened = opened;\n  },\n  [types.TREE_ENTRY_DIFF_LOADING](state, { path, loading = true }) {\n    state.treeEntries[path].diffLoading = loading;\n  },\n  [types.SET_SHOW_TREE_LIST](state, showTreeList) {\n    state.showTreeList = showTreeList;\n  },\n  [types.SET_CURRENT_DIFF_FILE](state, fileId) {\n    state.currentDiffFileId = fileId;\n  },\n  [types.SET_DIFF_FILE_VIEWED](state, { id, seen }) {\n    state.viewedDiffFileIds = {\n      ...state.viewedDiffFileIds,\n      [id]: seen,\n    };\n  },\n  [types.OPEN_DIFF_FILE_COMMENT_FORM](state, formData) {\n    state.commentForms.push({\n      ...formData,\n    });\n  },\n  [types.UPDATE_DIFF_FILE_COMMENT_FORM](state, formData) {\n    const { fileHash } = formData;\n\n    state.commentForms = state.commentForms.map((form) => {\n      if (form.fileHash === fileHash) {\n        return {\n          ...formData,\n        };\n      }\n\n      return form;\n    });\n  },\n  [types.CLOSE_DIFF_FILE_COMMENT_FORM](state, fileHash) {\n    state.commentForms = state.commentForms.filter((form) => form.fileHash !== fileHash);\n  },\n  [types.SET_HIGHLIGHTED_ROW](state, lineCode) {\n    state.highlightedRow = lineCode;\n  },\n  [types.SET_TREE_DATA](state, { treeEntries, tree }) {\n    state.treeEntries = treeEntries;\n    state.tree = tree;\n    state.isTreeLoaded = true;\n  },\n  [types.SET_RENDER_TREE_LIST](state, renderTreeList) {\n    state.renderTreeList = renderTreeList;\n  },\n  [types.SET_SHOW_WHITESPACE](state, showWhitespace) {\n    state.showWhitespace = showWhitespace;\n    state.diffFiles = [];\n  },\n  [types.TOGGLE_FILE_FINDER_VISIBLE](state, visible) {\n    state.fileFinderVisible = visible;\n  },\n  [types.REQUEST_FULL_DIFF](state, filePath) {\n    const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n\n    file.isLoadingFullFile = true;\n  },\n  [types.RECEIVE_FULL_DIFF_ERROR](state, filePath) {\n    const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n\n    file.isLoadingFullFile = false;\n  },\n  [types.RECEIVE_FULL_DIFF_SUCCESS](state, { filePath }) {\n    const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n\n    file.isShowingFullFile = true;\n    file.isLoadingFullFile = false;\n  },\n  [types.SET_FILE_COLLAPSED](\n    state,\n    { filePath, collapsed, trigger = DIFF_FILE_AUTOMATIC_COLLAPSE },\n  ) {\n    const file = state.diffFiles.find((f) => f.file_path === filePath);\n\n    if (file && file.viewer) {\n      if (trigger === DIFF_FILE_MANUAL_COLLAPSE) {\n        file.viewer.automaticallyCollapsed = false;\n        file.viewer.manuallyCollapsed = collapsed;\n      } else if (trigger === DIFF_FILE_AUTOMATIC_COLLAPSE) {\n        file.viewer.automaticallyCollapsed = collapsed;\n        file.viewer.manuallyCollapsed = null;\n      }\n    }\n  },\n  [types.SET_FILE_FORCED_OPEN](state, { filePath, forced = true }) {\n    const file = state.diffFiles.find((f) => f.file_path === filePath);\n    file.viewer.forceOpen = forced;\n  },\n  [types.SET_CURRENT_VIEW_DIFF_FILE_LINES](state, { filePath, lines }) {\n    const file = state.diffFiles.find((f) => f.file_path === filePath);\n\n    file[INLINE_DIFF_LINES_KEY] = lines;\n  },\n  [types.ADD_CURRENT_VIEW_DIFF_FILE_LINES](state, { filePath, line }) {\n    const file = state.diffFiles.find((f) => f.file_path === filePath);\n\n    file[INLINE_DIFF_LINES_KEY].push(line);\n  },\n  [types.TOGGLE_DIFF_FILE_RENDERING_MORE](state, filePath) {\n    const file = state.diffFiles.find((f) => f.file_path === filePath);\n\n    file.renderingLines = !file.renderingLines;\n  },\n  [types.SET_DIFF_FILE_VIEWER](state, { filePath, viewer }) {\n    const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n\n    file.viewer = viewer;\n  },\n  [types.SET_SHOW_SUGGEST_POPOVER](state) {\n    state.showSuggestPopover = false;\n  },\n  [types.SET_FILE_BY_FILE](state, fileByFile) {\n    state.viewDiffsFileByFile = fileByFile;\n  },\n  [types.SET_MR_FILE_REVIEWS](state, newReviews) {\n    state.mrReviews = newReviews;\n  },\n  [types.DISABLE_VIRTUAL_SCROLLING](state) {\n    state.disableVirtualScroller = true;\n  },\n  [types.TOGGLE_FILE_COMMENT_FORM](state, filePath) {\n    const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n\n    file.hasCommentForm = !file.hasCommentForm;\n  },\n  [types.SET_FILE_COMMENT_FORM](state, { filePath, expanded }) {\n    const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n\n    file.hasCommentForm = expanded;\n  },\n  [types.ADD_DRAFT_TO_FILE](state, { filePath, draft }) {\n    const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n\n    file?.drafts.push(draft);\n  },\n  [types.SET_LINKED_FILE_HASH](state, fileHash) {\n    state.linkedFileHash = fileHash;\n  },\n  [types.SET_COLLAPSED_STATE_FOR_ALL_FILES](state, { collapsed }) {\n    state.diffFiles.forEach((file) => {\n      const { viewer } = file;\n      if (!viewer) return;\n      viewer.automaticallyCollapsed = false;\n      viewer.manuallyCollapsed = collapsed;\n    });\n  },\n};\n","import { TREE_TYPE } from '../constants';\n\nexport const getLowestSingleFolder = (folder) => {\n  const getFolder = (blob, start = []) =>\n    blob.tree.reduce(\n      (acc, file) => {\n        const shouldGetFolder = file.tree.length === 1 && file.tree[0].type === TREE_TYPE;\n        const currentFileTypeTree = file.type === TREE_TYPE;\n        const path = shouldGetFolder || currentFileTypeTree ? acc.path.concat(file.name) : acc.path;\n        const tree = shouldGetFolder || currentFileTypeTree ? acc.tree.concat(file) : acc.tree;\n\n        if (shouldGetFolder) {\n          const firstFolder = getFolder(file);\n\n          path.push(...firstFolder.path);\n          tree.push(...firstFolder.tree);\n        }\n\n        return {\n          ...acc,\n          path,\n          tree,\n        };\n      },\n      { path: start, tree: [] },\n    );\n  const { path, tree } = getFolder(folder, [folder.name]);\n\n  return {\n    path: path.join('/'),\n    treeAcc: tree.length ? tree[tree.length - 1].tree : null,\n  };\n};\n\nexport const flattenTree = (tree) => {\n  const flatten = (blobTree) =>\n    blobTree.reduce((acc, file) => {\n      const blob = file;\n      let treeToFlatten = blob.tree;\n\n      if (file.type === TREE_TYPE && file.tree.length === 1) {\n        const { treeAcc, path } = getLowestSingleFolder(file);\n\n        if (treeAcc) {\n          blob.name = path;\n          treeToFlatten = flatten(treeAcc);\n        }\n      }\n\n      blob.tree = flatten(treeToFlatten);\n\n      return acc.concat(blob);\n    }, []);\n\n  return flatten(tree);\n};\n\nexport const generateTreeList = (files) => {\n  const { treeEntries, tree } = files.reduce(\n    (acc, file) => {\n      const split = file.new_path.split('/');\n\n      split.forEach((name, i) => {\n        let parent = acc.treeEntries[split.slice(0, i).join('/')];\n        const path = `${parent ? `${parent.path}/` : ''}${name}`;\n        const child = acc.treeEntries[path];\n\n        if (parent && !parent.tree) {\n          parent = null;\n        }\n\n        if (!child || !child.tree) {\n          const type = path === file.new_path ? 'blob' : 'tree';\n          acc.treeEntries[path] = {\n            key: path,\n            path,\n            name,\n            type,\n            tree: [],\n          };\n\n          const entry = acc.treeEntries[path];\n\n          if (type === 'blob') {\n            Object.assign(entry, {\n              changed: true,\n              diffLoaded: false,\n              diffLoading: false,\n              filePaths: {\n                old: file.old_path,\n                new: file.new_path,\n              },\n              tempFile: file.new_file,\n              deleted: file.deleted_file,\n              fileHash: file.file_hash,\n              addedLines: file.added_lines,\n              removedLines: file.removed_lines,\n              parentPath: parent ? `${parent.path}/` : '/',\n              submodule: file.submodule,\n            });\n          } else {\n            Object.assign(entry, {\n              opened: true,\n            });\n          }\n\n          (parent ? parent.tree : acc.tree).push(entry);\n        }\n      });\n\n      return acc;\n    },\n    { treeEntries: {}, tree: [] },\n  );\n\n  return { treeEntries, tree: flattenTree(tree) };\n};\n","import Vue from 'vue';\nimport {\n  setCookie,\n  handleLocationHash,\n  historyPushState,\n  scrollToElement,\n} from '~/lib/utils/common_utils';\nimport { createAlert, VARIANT_WARNING } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\n\nimport { HTTP_STATUS_NOT_FOUND, HTTP_STATUS_OK } from '~/lib/utils/http_status';\nimport Poll from '~/lib/utils/poll';\nimport {\n  mergeUrlParams,\n  getLocationHash,\n  getParameterValues,\n  removeParams,\n} from '~/lib/utils/url_utility';\nimport notesEventHub from '~/notes/event_hub';\nimport { generateTreeList } from '~/diffs/utils/tree_worker_utils';\nimport { sortTree } from '~/ide/stores/utils';\nimport { detectAndConfirmSensitiveTokens } from '~/lib/utils/secret_detection';\nimport {\n  isCollapsed,\n  countLinesInBetween,\n  findClosestMatchLine,\n  lineExists,\n} from '~/diffs/utils/diff_file';\nimport {\n  INLINE_DIFF_VIEW_TYPE,\n  DIFF_VIEW_COOKIE_NAME,\n  MR_TREE_SHOW_KEY,\n  TREE_LIST_STORAGE_KEY,\n  OLD_LINE_KEY,\n  NEW_LINE_KEY,\n  TYPE_KEY,\n  MAX_RENDERING_DIFF_LINES,\n  MAX_RENDERING_BULK_ROWS,\n  MIN_RENDERING_MS,\n  START_RENDERING_INDEX,\n  INLINE_DIFF_LINES_KEY,\n  DIFF_FILE_MANUAL_COLLAPSE,\n  DIFF_FILE_AUTOMATIC_COLLAPSE,\n  EVT_PERF_MARK_FILE_TREE_START,\n  EVT_PERF_MARK_FILE_TREE_END,\n  EVT_PERF_MARK_DIFF_FILES_START,\n  TRACKING_CLICK_DIFF_VIEW_SETTING,\n  TRACKING_DIFF_VIEW_INLINE,\n  TRACKING_DIFF_VIEW_PARALLEL,\n  TRACKING_CLICK_FILE_BROWSER_SETTING,\n  TRACKING_FILE_BROWSER_TREE,\n  TRACKING_FILE_BROWSER_LIST,\n  TRACKING_CLICK_WHITESPACE_SETTING,\n  TRACKING_WHITESPACE_SHOW,\n  TRACKING_WHITESPACE_HIDE,\n  TRACKING_CLICK_SINGLE_FILE_SETTING,\n  TRACKING_SINGLE_FILE_MODE,\n  TRACKING_MULTIPLE_FILES_MODE,\n  EVT_MR_PREPARED,\n  FILE_DIFF_POSITION_TYPE,\n  EVT_DISCUSSIONS_ASSIGNED,\n} from '../constants';\nimport {\n  DISCUSSION_SINGLE_DIFF_FAILED,\n  BUILDING_YOUR_MR,\n  SOMETHING_WENT_WRONG,\n  ERROR_LOADING_FULL_DIFF,\n  ERROR_DISMISSING_SUGESTION_POPOVER,\n  ENCODED_FILE_PATHS_TITLE,\n  ENCODED_FILE_PATHS_MESSAGE,\n} from '../i18n';\nimport eventHub from '../event_hub';\nimport { markFileReview, setReviewsForMergeRequest } from '../utils/file_reviews';\nimport { getDerivedMergeRequestInformation } from '../utils/merge_request';\nimport { queueRedisHllEvents } from '../utils/queue_events';\nimport * as types from './mutation_types';\nimport {\n  getDiffPositionByLineCode,\n  getNoteFormData,\n  convertExpandLines,\n  idleCallback,\n  prepareLineForRenamedFile,\n  parseUrlHashAsFileHash,\n  isUrlHashNoteLink,\n  findDiffFile,\n} from './utils';\n\nexport const setBaseConfig = ({ commit }, options) => {\n  const {\n    endpoint,\n    endpointMetadata,\n    endpointBatch,\n    endpointDiffForPath,\n    endpointCoverage,\n    endpointUpdateUser,\n    projectPath,\n    dismissEndpoint,\n    showSuggestPopover,\n    defaultSuggestionCommitMessage,\n    viewDiffsFileByFile,\n    mrReviews,\n    diffViewType,\n    perPage,\n  } = options;\n  commit(types.SET_BASE_CONFIG, {\n    endpoint,\n    endpointMetadata,\n    endpointBatch,\n    endpointDiffForPath,\n    endpointCoverage,\n    endpointUpdateUser,\n    projectPath,\n    dismissEndpoint,\n    showSuggestPopover,\n    defaultSuggestionCommitMessage,\n    viewDiffsFileByFile,\n    mrReviews,\n    diffViewType,\n    perPage,\n  });\n\n  Array.from(new Set(Object.values(mrReviews).flat())).forEach((id) => {\n    const viewedId = id.replace(/^hash:/, '');\n\n    commit(types.SET_DIFF_FILE_VIEWED, { id: viewedId, seen: true });\n  });\n};\n\nexport const prefetchSingleFile = async ({ state, getters, commit }, treeEntry) => {\n  const url = new URL(state.endpointBatch, 'https://gitlab.com');\n  const diffId = getParameterValues('diff_id', url)[0];\n  const startSha = getParameterValues('start_sha', url)[0];\n\n  if (\n    treeEntry &&\n    !treeEntry.diffLoaded &&\n    !treeEntry.diffLoading &&\n    !getters.getDiffFileByHash(treeEntry.fileHash)\n  ) {\n    const urlParams = {\n      old_path: treeEntry.filePaths.old,\n      new_path: treeEntry.filePaths.new,\n      w: state.showWhitespace ? '0' : '1',\n      view: 'inline',\n      commit_id: getters.commitId,\n      diff_head: true,\n    };\n\n    if (diffId) {\n      urlParams.diff_id = diffId;\n    }\n\n    if (startSha) {\n      urlParams.start_sha = startSha;\n    }\n\n    commit(types.TREE_ENTRY_DIFF_LOADING, { path: treeEntry.filePaths.new });\n\n    try {\n      const { data: diffData } = await axios.get(\n        mergeUrlParams({ ...urlParams }, state.endpointDiffForPath),\n      );\n\n      commit(types.SET_DIFF_DATA_BATCH, { diff_files: diffData.diff_files });\n\n      eventHub.$emit('diffFilesModified');\n    } catch (e) {\n      commit(types.TREE_ENTRY_DIFF_LOADING, { path: treeEntry.filePaths.new, loading: false });\n    }\n  }\n};\n\nexport const fetchFileByFile = async ({ state, getters, commit }) => {\n  const isNoteLink = isUrlHashNoteLink(window?.location?.hash);\n  const id = parseUrlHashAsFileHash(window?.location?.hash, state.currentDiffFileId);\n  const url = new URL(state.endpointBatch, 'https://gitlab.com');\n  const diffId = getParameterValues('diff_id', url)[0];\n  const startSha = getParameterValues('start_sha', url)[0];\n  const treeEntry = id\n    ? getters.flatBlobsList.find(({ fileHash }) => fileHash === id)\n    : getters.flatBlobsList[0];\n\n  eventHub.$emit(EVT_PERF_MARK_DIFF_FILES_START);\n\n  if (treeEntry && !treeEntry.diffLoaded && !getters.getDiffFileByHash(id)) {\n    // Overloading \"batch\" loading indicators so the UI stays mostly the same\n    commit(types.SET_BATCH_LOADING_STATE, 'loading');\n    commit(types.SET_RETRIEVING_BATCHES, true);\n\n    const urlParams = {\n      old_path: treeEntry.filePaths.old,\n      new_path: treeEntry.filePaths.new,\n      w: state.showWhitespace ? '0' : '1',\n      view: 'inline',\n      commit_id: getters.commitId,\n      diff_head: true,\n    };\n\n    if (diffId) {\n      urlParams.diff_id = diffId;\n    }\n\n    if (startSha) {\n      urlParams.start_sha = startSha;\n    }\n\n    axios\n      .get(mergeUrlParams({ ...urlParams }, state.endpointDiffForPath))\n      .then(({ data: diffData }) => {\n        commit(types.SET_DIFF_DATA_BATCH, { diff_files: diffData.diff_files });\n\n        if (!isNoteLink && !state.currentDiffFileId) {\n          commit(types.SET_CURRENT_DIFF_FILE, state.diffFiles[0]?.file_hash || '');\n        }\n\n        commit(types.SET_BATCH_LOADING_STATE, 'loaded');\n\n        eventHub.$emit('diffFilesModified');\n      })\n      .catch(() => {\n        commit(types.SET_BATCH_LOADING_STATE, 'error');\n      })\n      .finally(() => {\n        commit(types.SET_RETRIEVING_BATCHES, false);\n      });\n  }\n};\n\nexport const fetchDiffFilesBatch = ({ commit, state, dispatch }, linkedFileLoading = false) => {\n  let perPage = state.viewDiffsFileByFile ? 1 : state.perPage;\n  let increaseAmount = 1.4;\n  const startPage = 0;\n  const id = window?.location?.hash;\n  const isNoteLink = id.indexOf('#note') === 0;\n  const urlParams = {\n    w: state.showWhitespace ? '0' : '1',\n    view: 'inline',\n  };\n  const hash = window.location.hash.replace('#', '').split('diff-content-').pop();\n  let totalLoaded = 0;\n  let scrolledVirtualScroller = hash === '';\n\n  if (!linkedFileLoading) {\n    commit(types.SET_BATCH_LOADING_STATE, 'loading');\n    commit(types.SET_RETRIEVING_BATCHES, true);\n  }\n  eventHub.$emit(EVT_PERF_MARK_DIFF_FILES_START);\n\n  const getBatch = (page = startPage) =>\n    axios\n      .get(mergeUrlParams({ ...urlParams, page, per_page: perPage }, state.endpointBatch))\n      .then(({ data: { pagination, diff_files: diffFiles } }) => {\n        totalLoaded += diffFiles.length;\n\n        commit(types.SET_DIFF_DATA_BATCH, { diff_files: diffFiles });\n        commit(types.SET_BATCH_LOADING_STATE, 'loaded');\n\n        if (!scrolledVirtualScroller && !linkedFileLoading) {\n          const index = state.diffFiles.findIndex(\n            (f) =>\n              f.file_hash === hash || f[INLINE_DIFF_LINES_KEY].find((l) => l.line_code === hash),\n          );\n\n          if (index >= 0) {\n            eventHub.$emit('scrollToIndex', index);\n            scrolledVirtualScroller = true;\n          }\n        }\n\n        if (!isNoteLink && !state.currentDiffFileId) {\n          commit(types.SET_CURRENT_DIFF_FILE, diffFiles[0]?.file_hash);\n        }\n\n        if (isNoteLink) {\n          dispatch('setCurrentDiffFileIdFromNote', id.split('_').pop());\n        }\n\n        if (totalLoaded === pagination.total_pages || pagination.total_pages === null) {\n          commit(types.SET_RETRIEVING_BATCHES, false);\n          eventHub.$emit('doneLoadingBatches');\n\n          // We need to check that the currentDiffFileId points to a file that exists\n          if (\n            state.currentDiffFileId &&\n            !state.diffFiles.some((f) => f.file_hash === state.currentDiffFileId) &&\n            !isNoteLink\n          ) {\n            commit(types.SET_CURRENT_DIFF_FILE, state.diffFiles[0].file_hash);\n          }\n\n          if (state.diffFiles?.length) {\n            // eslint-disable-next-line promise/catch-or-return,promise/no-nesting\n            import('~/code_navigation').then((m) =>\n              m.default({\n                blobs: state.diffFiles\n                  .filter((f) => f.code_navigation_path)\n                  .map((f) => ({\n                    path: f.new_path,\n                    codeNavigationPath: f.code_navigation_path,\n                  })),\n                definitionPathPrefix: state.definitionPathPrefix,\n              }),\n            );\n          }\n\n          return null;\n        }\n\n        const nextPage = page + perPage;\n        perPage = Math.min(Math.ceil(perPage * increaseAmount), 30);\n        increaseAmount = Math.min(increaseAmount + 0.2, 2);\n\n        return nextPage;\n      })\n      .then((nextPage) => {\n        if (nextPage) {\n          return getBatch(nextPage);\n        }\n\n        return null;\n      })\n      .catch((error) => {\n        commit(types.SET_RETRIEVING_BATCHES, false);\n        commit(types.SET_BATCH_LOADING_STATE, 'error');\n        throw error;\n      });\n\n  return getBatch();\n};\n\nexport const fetchDiffFilesMeta = ({ commit, state }) => {\n  const urlParams = {\n    view: 'inline',\n    w: state.showWhitespace ? '0' : '1',\n  };\n\n  commit(types.SET_LOADING, true);\n\n  return axios\n    .get(mergeUrlParams(urlParams, state.endpointMetadata))\n    .then(({ data }) => {\n      const strippedData = { ...data };\n      delete strippedData.diff_files;\n\n      if (strippedData.has_encoded_file_paths) {\n        createAlert({\n          title: ENCODED_FILE_PATHS_TITLE,\n          message: ENCODED_FILE_PATHS_MESSAGE,\n          dismissible: false,\n        });\n      }\n\n      commit(types.SET_LOADING, false);\n      commit(types.SET_MERGE_REQUEST_DIFFS, data.merge_request_diffs || []);\n      commit(types.SET_DIFF_METADATA, strippedData);\n\n      eventHub.$emit(EVT_PERF_MARK_FILE_TREE_START);\n      const { treeEntries, tree } = generateTreeList(data.diff_files);\n      eventHub.$emit(EVT_PERF_MARK_FILE_TREE_END);\n      commit(types.SET_TREE_DATA, {\n        treeEntries,\n        tree: sortTree(tree),\n      });\n\n      return data;\n    })\n    .catch((error) => {\n      if (error.response.status === HTTP_STATUS_NOT_FOUND) {\n        const alert = createAlert({\n          message: BUILDING_YOUR_MR,\n          variant: VARIANT_WARNING,\n        });\n\n        eventHub.$once(EVT_MR_PREPARED, () => alert.dismiss());\n      } else {\n        throw error;\n      }\n    });\n};\n\nexport function prefetchFileNeighbors({ getters, dispatch }) {\n  const { flatBlobsList: allBlobs, currentDiffIndex: currentIndex } = getters;\n\n  const previous = Math.max(currentIndex - 1, 0);\n  const next = Math.min(allBlobs.length - 1, currentIndex + 1);\n\n  dispatch('prefetchSingleFile', allBlobs[next]);\n  dispatch('prefetchSingleFile', allBlobs[previous]);\n}\n\nexport const fetchCoverageFiles = ({ commit, state }) => {\n  const coveragePoll = new Poll({\n    resource: {\n      getCoverageReports: (endpoint) => axios.get(endpoint),\n    },\n    data: state.endpointCoverage,\n    method: 'getCoverageReports',\n    successCallback: ({ status, data }) => {\n      if (status === HTTP_STATUS_OK) {\n        commit(types.SET_COVERAGE_DATA, data);\n\n        coveragePoll.stop();\n      }\n    },\n    errorCallback: () =>\n      createAlert({\n        message: SOMETHING_WENT_WRONG,\n      }),\n  });\n\n  coveragePoll.makeRequest();\n};\n\nexport const setHighlightedRow = ({ commit }, { lineCode, event }) => {\n  if (event && event.target.href) {\n    event.preventDefault();\n    window.history.replaceState(null, undefined, removeParams(['file'], event.target.href));\n  }\n  const fileHash = lineCode.split('_')[0];\n  commit(types.SET_HIGHLIGHTED_ROW, lineCode);\n  commit(types.SET_CURRENT_DIFF_FILE, fileHash);\n\n  handleLocationHash();\n};\n\n// This is adding line discussions to the actual lines in the diff tree\n// once for parallel and once for inline mode\nexport const assignDiscussionsToDiff = (\n  { commit, state, rootState, dispatch },\n  discussions = rootState.notes.discussions,\n) => {\n  const id = window?.location?.hash;\n  const isNoteLink = id.indexOf('#note') === 0;\n  const diffPositionByLineCode = getDiffPositionByLineCode(state.diffFiles);\n  const hash = getLocationHash();\n\n  discussions\n    .filter((discussion) => discussion?.diff_discussion)\n    .forEach((discussion) => {\n      commit(types.SET_LINE_DISCUSSIONS_FOR_FILE, {\n        discussion,\n        diffPositionByLineCode,\n        hash,\n      });\n    });\n\n  if (isNoteLink) {\n    dispatch('setCurrentDiffFileIdFromNote', id.split('_').pop());\n  }\n\n  Vue.nextTick(() => {\n    eventHub.$emit(EVT_DISCUSSIONS_ASSIGNED);\n  });\n};\n\nexport const removeDiscussionsFromDiff = ({ commit }, removeDiscussion) => {\n  if (!removeDiscussion.diff_file) return;\n\n  const {\n    diff_file: { file_hash: fileHash },\n    line_code: lineCode,\n    id,\n  } = removeDiscussion;\n  commit(types.REMOVE_LINE_DISCUSSIONS_FOR_FILE, { fileHash, lineCode, id });\n};\n\nexport const toggleLineDiscussions = ({ commit }, options) => {\n  commit(types.TOGGLE_LINE_DISCUSSIONS, options);\n};\n\nexport const renderFileForDiscussionId = ({ commit, rootState, state }, discussionId) => {\n  const discussion = rootState.notes.discussions.find((d) => d.id === discussionId);\n\n  if (discussion && discussion.diff_file) {\n    const file = state.diffFiles.find((f) => f.file_hash === discussion.diff_file.file_hash);\n\n    if (file) {\n      if (file.viewer.automaticallyCollapsed) {\n        notesEventHub.$emit(`loadCollapsedDiff/${file.file_hash}`);\n        scrollToElement(document.getElementById(file.file_hash));\n      } else if (file.viewer.manuallyCollapsed) {\n        commit(types.SET_FILE_COLLAPSED, {\n          filePath: file.file_path,\n          collapsed: false,\n          trigger: DIFF_FILE_AUTOMATIC_COLLAPSE,\n        });\n        notesEventHub.$emit('scrollToDiscussion');\n      } else {\n        notesEventHub.$emit('scrollToDiscussion');\n      }\n    }\n  }\n};\n\nexport const setDiffViewType = ({ commit }, diffViewType) => {\n  commit(types.SET_DIFF_VIEW_TYPE, diffViewType);\n\n  setCookie(DIFF_VIEW_COOKIE_NAME, diffViewType);\n  const url = mergeUrlParams({ view: diffViewType }, window.location.href);\n  historyPushState(url);\n\n  queueRedisHllEvents([\n    TRACKING_CLICK_DIFF_VIEW_SETTING,\n    diffViewType === INLINE_DIFF_VIEW_TYPE\n      ? TRACKING_DIFF_VIEW_INLINE\n      : TRACKING_DIFF_VIEW_PARALLEL,\n  ]);\n};\n\nexport const showCommentForm = ({ commit }, { lineCode, fileHash }) => {\n  commit(types.TOGGLE_LINE_HAS_FORM, { lineCode, fileHash, hasForm: true });\n\n  // The comment form for diffs gets focussed differently due to the way the virtual scroller\n  // works. If we focus the comment form on mount and the comment form gets removed and then\n  // added again the page will scroll in unexpected ways\n  setTimeout(() => {\n    const el = document.querySelector(\n      `[data-line-code=\"${lineCode}\"] textarea, [data-line-code=\"${lineCode}\"] [contenteditable=\"true\"]`,\n    );\n\n    if (!el) return;\n\n    const { bottom } = el.getBoundingClientRect();\n    const overflowBottom = bottom - window.innerHeight;\n\n    // Prevent the browser scrolling for us\n    // We handle the scrolling to not break the diffs virtual scroller\n    el.focus({ preventScroll: true });\n\n    if (overflowBottom > 0) {\n      window.scrollBy(0, Math.floor(Math.abs(overflowBottom)) + 150);\n    }\n  });\n};\n\nexport const cancelCommentForm = ({ commit }, { lineCode, fileHash }) => {\n  commit(types.TOGGLE_LINE_HAS_FORM, { lineCode, fileHash, hasForm: false });\n};\n\nexport const loadMoreLines = ({ commit }, options) => {\n  const { endpoint, params, lineNumbers, fileHash, isExpandDown, nextLineNumbers } = options;\n\n  params.from_merge_request = true;\n\n  return axios.get(endpoint, { params }).then((res) => {\n    const contextLines = res.data || [];\n\n    commit(types.ADD_CONTEXT_LINES, {\n      lineNumbers,\n      contextLines,\n      params,\n      fileHash,\n      isExpandDown,\n      nextLineNumbers,\n    });\n  });\n};\n\nexport const scrollToLineIfNeededInline = (_, line) => {\n  const hash = getLocationHash();\n\n  if (hash && line.line_code === hash) {\n    handleLocationHash();\n  }\n};\n\nexport const scrollToLineIfNeededParallel = (_, line) => {\n  const hash = getLocationHash();\n\n  if (\n    hash &&\n    ((line.left && line.left.line_code === hash) || (line.right && line.right.line_code === hash))\n  ) {\n    handleLocationHash();\n  }\n};\n\nexport const loadCollapsedDiff = ({ commit, getters, state }, { file, params = {} }) => {\n  const versionPath = state.mergeRequestDiff?.version_path;\n  const loadParams = {\n    commit_id: getters.commitId,\n    w: state.showWhitespace ? '0' : '1',\n    ...params,\n  };\n\n  if (versionPath) {\n    const { diffId, startSha } = getDerivedMergeRequestInformation({ endpoint: versionPath });\n\n    loadParams.diff_id = diffId;\n    loadParams.start_sha = startSha;\n  }\n\n  return axios.get(file.load_collapsed_diff_url, { params: loadParams }).then((res) => {\n    commit(types.ADD_COLLAPSED_DIFFS, {\n      file,\n      data: res.data,\n    });\n  });\n};\n\n/**\n * Toggles the file discussions after user clicked on the toggle discussions button.\n * @param {Object} discussion\n */\nexport const toggleFileDiscussion = ({ commit }, discussion) => {\n  commit(types.TOGGLE_FILE_DISCUSSION_EXPAND, { discussion });\n};\n\nexport const toggleFileDiscussionWrappers = ({ commit, getters }, diff) => {\n  const discussionWrappersExpanded = getters.diffHasExpandedDiscussions(diff);\n  const lineCodesWithDiscussions = new Set();\n  const lineHasDiscussion = (line) => Boolean(line?.discussions.length);\n  const registerDiscussionLine = (line) => lineCodesWithDiscussions.add(line.line_code);\n\n  diff[INLINE_DIFF_LINES_KEY].filter(lineHasDiscussion).forEach(registerDiscussionLine);\n\n  if (lineCodesWithDiscussions.size) {\n    Array.from(lineCodesWithDiscussions).forEach((lineCode) => {\n      commit(types.TOGGLE_LINE_DISCUSSIONS, {\n        fileHash: diff.file_hash,\n        expanded: !discussionWrappersExpanded,\n        lineCode,\n      });\n    });\n  }\n\n  if (diff.discussions.length) {\n    diff.discussions.forEach((discussion) => {\n      if (discussion.position?.position_type === FILE_DIFF_POSITION_TYPE) {\n        commit(types.TOGGLE_FILE_DISCUSSION_EXPAND, {\n          discussion,\n          expandedOnDiff: !discussionWrappersExpanded,\n        });\n      }\n    });\n  }\n};\n\nexport const saveDiffDiscussion = async ({ state, dispatch }, { note, formData }) => {\n  const postData = getNoteFormData({\n    commit: state.commit,\n    note,\n    showWhitespace: state.showWhitespace,\n    ...formData,\n  });\n\n  const confirmSubmit = await detectAndConfirmSensitiveTokens({ content: note });\n  if (!confirmSubmit) {\n    return null;\n  }\n\n  return dispatch('saveNote', postData, { root: true })\n    .then((result) => dispatch('updateDiscussion', result.discussion, { root: true }))\n    .then((discussion) => dispatch('assignDiscussionsToDiff', [discussion]))\n    .then(() => dispatch('updateResolvableDiscussionsCounts', null, { root: true }))\n    .then(() => dispatch('closeDiffFileCommentForm', formData.diffFile.file_hash))\n    .then(() => {\n      if (formData.positionType === FILE_DIFF_POSITION_TYPE) {\n        dispatch('toggleFileCommentForm', formData.diffFile.file_path);\n      }\n    });\n};\n\nexport const toggleTreeOpen = ({ commit }, path) => {\n  commit(types.TOGGLE_FOLDER_OPEN, path);\n};\n\nexport const setTreeOpen = ({ commit }, { path, opened }) => {\n  commit(types.SET_FOLDER_OPEN, { path, opened });\n};\n\nexport const setCurrentFileHash = ({ commit }, hash) => {\n  commit(types.SET_CURRENT_DIFF_FILE, hash);\n};\n\nexport const goToFile = ({ state, commit, dispatch, getters }, { path }) => {\n  if (!state.viewDiffsFileByFile) {\n    dispatch('scrollToFile', { path });\n  } else {\n    if (!state.treeEntries[path]) return;\n\n    dispatch('unlinkFile');\n\n    const { fileHash } = state.treeEntries[path];\n\n    commit(types.SET_CURRENT_DIFF_FILE, fileHash);\n\n    const newUrl = new URL(window.location);\n    newUrl.hash = fileHash;\n    historyPushState(newUrl, { skipScrolling: true });\n    scrollToElement('.diff-files-holder', { duration: 0 });\n\n    if (!getters.isTreePathLoaded(path)) {\n      dispatch('fetchFileByFile');\n    }\n  }\n};\n\nexport const scrollToFile = ({ state, commit, getters }, { path }) => {\n  if (!state.treeEntries[path]) return;\n\n  const { fileHash } = state.treeEntries[path];\n\n  commit(types.SET_CURRENT_DIFF_FILE, fileHash);\n\n  if (getters.isVirtualScrollingEnabled) {\n    eventHub.$emit('scrollToFileHash', fileHash);\n\n    setTimeout(() => {\n      window.history.replaceState(null, null, `#${fileHash}`);\n    });\n  } else {\n    document.location.hash = fileHash;\n\n    setTimeout(() => {\n      handleLocationHash();\n    });\n  }\n};\n\nexport const setShowTreeList = ({ commit }, { showTreeList, saving = true }) => {\n  commit(types.SET_SHOW_TREE_LIST, showTreeList);\n\n  if (saving) {\n    localStorage.setItem(MR_TREE_SHOW_KEY, showTreeList);\n  }\n};\n\nexport const toggleTreeList = ({ state, commit }) => {\n  commit(types.SET_SHOW_TREE_LIST, !state.showTreeList);\n};\n\nexport const openDiffFileCommentForm = ({ commit, getters }, formData) => {\n  const form = getters.getCommentFormForDiffFile(formData.fileHash);\n\n  if (form) {\n    commit(types.UPDATE_DIFF_FILE_COMMENT_FORM, formData);\n  } else {\n    commit(types.OPEN_DIFF_FILE_COMMENT_FORM, formData);\n  }\n};\n\nexport const closeDiffFileCommentForm = ({ commit }, fileHash) => {\n  commit(types.CLOSE_DIFF_FILE_COMMENT_FORM, fileHash);\n};\n\nexport const setRenderTreeList = ({ commit }, { renderTreeList, trackClick = true }) => {\n  commit(types.SET_RENDER_TREE_LIST, renderTreeList);\n\n  localStorage.setItem(TREE_LIST_STORAGE_KEY, renderTreeList);\n\n  if (trackClick) {\n    const events = [TRACKING_CLICK_FILE_BROWSER_SETTING];\n\n    if (renderTreeList) {\n      events.push(TRACKING_FILE_BROWSER_TREE);\n    } else {\n      events.push(TRACKING_FILE_BROWSER_LIST);\n    }\n\n    queueRedisHllEvents(events);\n  }\n};\n\nexport const setShowWhitespace = async (\n  { state, commit },\n  { url, showWhitespace, updateDatabase = true, trackClick = true },\n) => {\n  if (updateDatabase && Boolean(window.gon?.current_user_id)) {\n    await axios.put(url || state.endpointUpdateUser, { show_whitespace_in_diffs: showWhitespace });\n  }\n\n  commit(types.SET_SHOW_WHITESPACE, showWhitespace);\n  notesEventHub.$emit('refetchDiffData');\n\n  if (trackClick) {\n    const events = [TRACKING_CLICK_WHITESPACE_SETTING];\n\n    if (showWhitespace) {\n      events.push(TRACKING_WHITESPACE_SHOW);\n    } else {\n      events.push(TRACKING_WHITESPACE_HIDE);\n    }\n\n    queueRedisHllEvents(events);\n  }\n};\n\nexport const toggleFileFinder = ({ commit }, visible) => {\n  commit(types.TOGGLE_FILE_FINDER_VISIBLE, visible);\n};\n\nexport const receiveFullDiffError = ({ commit }, filePath) => {\n  commit(types.RECEIVE_FULL_DIFF_ERROR, filePath);\n  createAlert({\n    message: ERROR_LOADING_FULL_DIFF,\n  });\n};\n\nexport const setExpandedDiffLines = ({ commit }, { file, data }) => {\n  const expandedDiffLines = convertExpandLines({\n    diffLines: file[INLINE_DIFF_LINES_KEY],\n    typeKey: TYPE_KEY,\n    oldLineKey: OLD_LINE_KEY,\n    newLineKey: NEW_LINE_KEY,\n    data,\n    mapLine: ({ line, oldLine, newLine }) =>\n      Object.assign(line, {\n        old_line: oldLine,\n        new_line: newLine,\n        line_code: `${file.file_hash}_${oldLine}_${newLine}`,\n      }),\n  });\n\n  if (expandedDiffLines.length > MAX_RENDERING_DIFF_LINES) {\n    let index = START_RENDERING_INDEX;\n    commit(types.SET_CURRENT_VIEW_DIFF_FILE_LINES, {\n      filePath: file.file_path,\n      lines: expandedDiffLines.slice(0, index),\n    });\n    commit(types.TOGGLE_DIFF_FILE_RENDERING_MORE, file.file_path);\n\n    const idleCb = (t) => {\n      const startIndex = index;\n\n      while (\n        t.timeRemaining() >= MIN_RENDERING_MS &&\n        index !== expandedDiffLines.length &&\n        index - startIndex !== MAX_RENDERING_BULK_ROWS\n      ) {\n        const line = expandedDiffLines[index];\n\n        if (line) {\n          commit(types.ADD_CURRENT_VIEW_DIFF_FILE_LINES, { filePath: file.file_path, line });\n          index += 1;\n        }\n      }\n\n      if (index !== expandedDiffLines.length) {\n        idleCallback(idleCb);\n      } else {\n        commit(types.TOGGLE_DIFF_FILE_RENDERING_MORE, file.file_path);\n      }\n    };\n\n    idleCallback(idleCb);\n  } else {\n    commit(types.SET_CURRENT_VIEW_DIFF_FILE_LINES, {\n      filePath: file.file_path,\n      lines: expandedDiffLines,\n    });\n  }\n};\n\nexport const fetchFullDiff = ({ commit, dispatch }, file) =>\n  axios\n    .get(file.context_lines_path, {\n      params: {\n        full: true,\n        from_merge_request: true,\n      },\n    })\n    .then(({ data }) => {\n      commit(types.RECEIVE_FULL_DIFF_SUCCESS, { filePath: file.file_path });\n\n      dispatch('setExpandedDiffLines', { file, data });\n    })\n    .catch(() => dispatch('receiveFullDiffError', file.file_path));\n\nexport const toggleFullDiff = ({ dispatch, commit, getters, state }, filePath) => {\n  const file = state.diffFiles.find((f) => f.file_path === filePath);\n\n  commit(types.REQUEST_FULL_DIFF, filePath);\n\n  if (file.isShowingFullFile) {\n    dispatch('loadCollapsedDiff', { file })\n      .then(() => dispatch('assignDiscussionsToDiff', getters.getDiffFileDiscussions(file)))\n      .catch(() => dispatch('receiveFullDiffError', filePath));\n  } else {\n    dispatch('fetchFullDiff', file);\n  }\n};\n\nexport function switchToFullDiffFromRenamedFile({ commit }, { diffFile }) {\n  return axios\n    .get(diffFile.context_lines_path, {\n      params: {\n        full: true,\n        from_merge_request: true,\n      },\n    })\n    .then(({ data }) => {\n      const lines = data.map((line, index) =>\n        prepareLineForRenamedFile({\n          diffViewType: 'inline',\n          line,\n          diffFile,\n          index,\n        }),\n      );\n\n      commit(types.SET_DIFF_FILE_VIEWER, {\n        filePath: diffFile.file_path,\n        viewer: {\n          ...diffFile.alternate_viewer,\n          automaticallyCollapsed: false,\n          manuallyCollapsed: false,\n          forceOpen: false,\n        },\n      });\n      commit(types.SET_CURRENT_VIEW_DIFF_FILE_LINES, { filePath: diffFile.file_path, lines });\n    });\n}\n\nexport const setFileCollapsedByUser = ({ commit }, { filePath, collapsed }) => {\n  commit(types.SET_FILE_COLLAPSED, { filePath, collapsed, trigger: DIFF_FILE_MANUAL_COLLAPSE });\n};\n\nexport const setFileCollapsedAutomatically = ({ commit }, { filePath, collapsed }) => {\n  commit(types.SET_FILE_COLLAPSED, { filePath, collapsed, trigger: DIFF_FILE_AUTOMATIC_COLLAPSE });\n};\n\nexport function setFileForcedOpen({ commit }, { filePath, forced }) {\n  commit(types.SET_FILE_FORCED_OPEN, { filePath, forced });\n}\n\nexport const setSuggestPopoverDismissed = ({ commit, state }) =>\n  axios\n    .post(state.dismissEndpoint, {\n      feature_name: 'suggest_popover_dismissed',\n    })\n    .then(() => {\n      commit(types.SET_SHOW_SUGGEST_POPOVER);\n    })\n    .catch(() => {\n      createAlert({\n        message: ERROR_DISMISSING_SUGESTION_POPOVER,\n      });\n    });\n\nexport function changeCurrentCommit({ dispatch, commit, state }, { commitId }) {\n  if (!commitId) {\n    return Promise.reject(new Error('`commitId` is a required argument'));\n  }\n  if (!state.commit) {\n    return Promise.reject(new Error('`state` must already contain a valid `commit`')); // eslint-disable-line @gitlab/require-i18n-strings\n  }\n\n  // this is less than ideal, see: https://gitlab.com/gitlab-org/gitlab/-/issues/215421\n  const commitRE = new RegExp(state.commit.id, 'g');\n\n  commit(types.SET_DIFF_FILES, []);\n  commit(types.SET_BASE_CONFIG, {\n    ...state,\n    endpoint: state.endpoint.replace(commitRE, commitId),\n    endpointBatch: state.endpointBatch.replace(commitRE, commitId),\n    endpointMetadata: state.endpointMetadata.replace(commitRE, commitId),\n  });\n\n  return dispatch('fetchDiffFilesMeta');\n}\n\nexport function moveToNeighboringCommit({ dispatch, state }, { direction }) {\n  const previousCommitId = state.commit?.prev_commit_id;\n  const nextCommitId = state.commit?.next_commit_id;\n  const canMove = {\n    next: !state.isLoading && nextCommitId,\n    previous: !state.isLoading && previousCommitId,\n  };\n  let commitId;\n\n  if (direction === 'next' && canMove.next) {\n    commitId = nextCommitId;\n  } else if (direction === 'previous' && canMove.previous) {\n    commitId = previousCommitId;\n  }\n\n  if (commitId) {\n    dispatch('changeCurrentCommit', { commitId });\n  }\n}\n\nexport const rereadNoteHash = ({ state, dispatch }) => {\n  const urlHash = window?.location?.hash;\n\n  if (isUrlHashNoteLink(urlHash)) {\n    dispatch('setCurrentDiffFileIdFromNote', urlHash.split('_').pop())\n      .then(() => {\n        if (state.viewDiffsFileByFile) {\n          dispatch('fetchFileByFile');\n        }\n      })\n      .catch(() => {\n        createAlert({\n          message: DISCUSSION_SINGLE_DIFF_FAILED,\n        });\n      });\n  }\n};\n\nexport const setCurrentDiffFileIdFromNote = ({ commit, getters, rootGetters }, noteId) => {\n  const note = rootGetters.notesById[noteId];\n\n  if (!note) return;\n\n  const fileHash = rootGetters.getDiscussion(note.discussion_id).diff_file?.file_hash;\n\n  if (fileHash && getters.flatBlobsList.some((f) => f.fileHash === fileHash)) {\n    commit(types.SET_CURRENT_DIFF_FILE, fileHash);\n  }\n};\n\nexport const navigateToDiffFileIndex = ({ state, getters, commit, dispatch }, index) => {\n  dispatch('unlinkFile');\n\n  const { fileHash } = getters.flatBlobsList[index];\n  document.location.hash = fileHash;\n\n  commit(types.SET_CURRENT_DIFF_FILE, fileHash);\n\n  if (state.viewDiffsFileByFile) {\n    dispatch('fetchFileByFile');\n  }\n};\n\nexport const setFileByFile = ({ state, commit }, { fileByFile }) => {\n  commit(types.SET_FILE_BY_FILE, fileByFile);\n\n  const events = [TRACKING_CLICK_SINGLE_FILE_SETTING];\n\n  if (fileByFile) {\n    events.push(TRACKING_SINGLE_FILE_MODE);\n  } else {\n    events.push(TRACKING_MULTIPLE_FILES_MODE);\n  }\n\n  queueRedisHllEvents(events);\n\n  return axios\n    .put(state.endpointUpdateUser, {\n      view_diffs_file_by_file: fileByFile,\n    })\n    .then(() => {\n      // https://gitlab.com/gitlab-org/gitlab/-/issues/326961\n      // We can't even do a simple console warning here because\n      // the pipeline will fail. However, the issue above will\n      // eventually handle errors appropriately.\n      // console.warn('Saving the file-by-fil user preference failed.');\n    });\n};\n\nexport function reviewFile({ commit, state }, { file, reviewed = true }) {\n  const { mrPath } = getDerivedMergeRequestInformation({ endpoint: file.load_collapsed_diff_url });\n  const reviews = markFileReview(state.mrReviews, file, reviewed);\n\n  setReviewsForMergeRequest(mrPath, reviews);\n\n  commit(types.SET_DIFF_FILE_VIEWED, { id: file.file_hash, seen: reviewed });\n  commit(types.SET_MR_FILE_REVIEWS, reviews);\n}\n\nexport const disableVirtualScroller = ({ commit }) => commit(types.DISABLE_VIRTUAL_SCROLLING);\n\nexport const toggleFileCommentForm = ({ state, commit }, filePath) => {\n  const file = findDiffFile(state.diffFiles, filePath, 'file_path');\n  if (isCollapsed(file)) {\n    commit(types.SET_FILE_COMMENT_FORM, { filePath, expanded: true });\n  } else {\n    commit(types.TOGGLE_FILE_COMMENT_FORM, filePath);\n  }\n  commit(types.SET_FILE_COLLAPSED, { filePath, collapsed: false });\n};\n\nexport const addDraftToFile = ({ commit }, { filePath, draft }) =>\n  commit(types.ADD_DRAFT_TO_FILE, { filePath, draft });\n\nexport const fetchLinkedFile = ({ state, commit, dispatch }, linkedFileUrl) => {\n  const isNoteLink = isUrlHashNoteLink(window.location.hash);\n  const [, fragmentFileHash, oldNumber, newNumber] =\n    window.location.hash.substring(1).match(/^([0-9a-f]{40})_([0-9]+)_([0-9]+)$/) || [];\n\n  commit(types.SET_BATCH_LOADING_STATE, 'loading');\n  commit(types.SET_RETRIEVING_BATCHES, true);\n\n  return axios\n    .get(linkedFileUrl)\n    .then(async ({ data: diffData }) => {\n      const [{ file_hash }] = diffData.diff_files;\n\n      // we must store linked file in the `diffs`, otherwise collapsing and commenting on a file won't work\n      // once the same file arrives in a file batch we must only update its' position\n      // we also must not update file's position since it's loaded out of order\n      commit(types.SET_DIFF_DATA_BATCH, { diff_files: diffData.diff_files, updatePosition: false });\n      commit(types.SET_LINKED_FILE_HASH, file_hash);\n\n      if (!isNoteLink && !state.currentDiffFileId) {\n        commit(types.SET_CURRENT_DIFF_FILE, file_hash);\n      }\n\n      if (fragmentFileHash && oldNumber && newNumber) {\n        await dispatch('fetchLinkedExpandedLine', {\n          fileHash: fragmentFileHash,\n          oldLine: parseInt(oldNumber, 10),\n          newLine: parseInt(newNumber, 10),\n        });\n      }\n\n      commit(types.SET_BATCH_LOADING_STATE, 'loaded');\n\n      setTimeout(() => {\n        handleLocationHash();\n      });\n\n      eventHub.$emit('diffFilesModified');\n    })\n    .catch((error) => {\n      commit(types.SET_BATCH_LOADING_STATE, 'error');\n      throw error;\n    })\n    .finally(() => {\n      commit(types.SET_RETRIEVING_BATCHES, false);\n    });\n};\n\nexport const fetchLinkedExpandedLine = ({ getters, dispatch }, { fileHash, oldLine, newLine }) => {\n  const file = getters.linkedFile;\n  if (!file || file.file_hash !== fileHash) return Promise.resolve();\n\n  const lines = file[INLINE_DIFF_LINES_KEY];\n  if (lineExists(lines, oldLine, newLine)) return Promise.resolve();\n\n  const matchLine = findClosestMatchLine(lines, newLine);\n  const { new_pos: matchNewPosition, old_pos: matchOldPosition } = matchLine.meta_data;\n  const matchLineIndex = lines.indexOf(matchLine);\n  const linesInBetween = countLinesInBetween(lines, matchLineIndex);\n  const isExpandBoth = linesInBetween !== -1 && linesInBetween < 20;\n  const previousLine = lines[matchLineIndex - 1];\n  const previousLineNumber = previousLine?.new_line;\n  const isLastMatchLine = matchLineIndex === lines.length - 1;\n  const isExpandDown =\n    isLastMatchLine ||\n    (previousLine && !isExpandBoth && newLine - previousLineNumber < matchNewPosition - newLine);\n  const loadLines = (params, rest) =>\n    dispatch('loadMoreLines', {\n      endpoint: file.context_lines_path,\n      fileHash: file.file_hash,\n      params: {\n        offset: matchNewPosition - matchOldPosition,\n        ...params,\n      },\n      isExpandDown: false,\n      lineNumbers: {\n        oldLineNumber: matchOldPosition,\n        newLineNumber: matchNewPosition,\n      },\n      ...rest,\n    });\n\n  if (isExpandBoth) {\n    return loadLines({\n      unfold: false,\n      since: previousLine.new_line + 1,\n      to: matchNewPosition - 1,\n      bottom: false,\n    });\n  }\n\n  if (!isExpandDown) {\n    return loadLines({\n      unfold: true,\n      since: newLine,\n      to: matchNewPosition - 1,\n      bottom: isLastMatchLine,\n    });\n  }\n\n  const rest = {};\n  if (!isLastMatchLine) {\n    Object.assign(rest, {\n      isExpandDown: true,\n      lineNumbers: {\n        oldLineNumber: previousLine.old_line,\n        newLineNumber: previousLine.new_line,\n      },\n      nextLineNumbers: {\n        old_line: matchOldPosition,\n        new_line: matchNewPosition,\n      },\n    });\n  }\n  return loadLines(\n    {\n      unfold: true,\n      since: previousLine.new_line + 1,\n      to: newLine,\n      bottom: true,\n    },\n    rest,\n  );\n};\n\nexport const unlinkFile = ({ getters, commit }) => {\n  if (!getters.linkedFile) return;\n  commit(types.SET_LINKED_FILE_HASH, null);\n  const newUrl = new URL(window.location);\n  newUrl.searchParams.delete('file');\n  newUrl.hash = '';\n  window.history.replaceState(null, undefined, newUrl);\n};\n\nexport const toggleAllDiffDiscussions = ({ commit, getters }) => {\n  commit(types.SET_EXPAND_ALL_DIFF_DISCUSSIONS, !getters.allDiffDiscussionsExpanded);\n};\n\nexport const expandAllFiles = ({ commit }) => {\n  commit(types.SET_COLLAPSED_STATE_FOR_ALL_FILES, { collapsed: false });\n};\n\nexport const collapseAllFiles = ({ commit }) => {\n  commit(types.SET_COLLAPSED_STATE_FOR_ALL_FILES, { collapsed: true });\n};\n","export const SET_BASE_CONFIG = 'SET_BASE_CONFIG';\nexport const SET_LOADING = 'SET_LOADING';\nexport const SET_BATCH_LOADING_STATE = 'SET_BATCH_LOADING_STATE';\nexport const SET_RETRIEVING_BATCHES = 'SET_RETRIEVING_BATCHES';\n\nexport const SET_DIFF_METADATA = 'SET_DIFF_METADATA';\nexport const SET_DIFF_DATA_BATCH = 'SET_DIFF_DATA_BATCH';\nexport const SET_DIFF_FILES = 'SET_DIFF_FILES';\nexport const SET_DIFF_TREE_ENTRY = 'SET_DIFF_TREE_ENTRY';\n\nexport const SET_MR_FILE_REVIEWS = 'SET_MR_FILE_REVIEWS';\n\nexport const SET_DIFF_VIEW_TYPE = 'SET_DIFF_VIEW_TYPE';\nexport const SET_COVERAGE_DATA = 'SET_COVERAGE_DATA';\nexport const SET_MERGE_REQUEST_DIFFS = 'SET_MERGE_REQUEST_DIFFS';\nexport const TOGGLE_LINE_HAS_FORM = 'TOGGLE_LINE_HAS_FORM';\nexport const ADD_CONTEXT_LINES = 'ADD_CONTEXT_LINES';\nexport const ADD_COLLAPSED_DIFFS = 'ADD_COLLAPSED_DIFFS';\nexport const RENDER_FILE = 'RENDER_FILE';\nexport const SET_LINE_DISCUSSIONS_FOR_FILE = 'SET_LINE_DISCUSSIONS_FOR_FILE';\nexport const TOGGLE_FILE_DISCUSSION_EXPAND = 'TOGGLE_FILE_DISCUSSION_EXPAND';\nexport const REMOVE_LINE_DISCUSSIONS_FOR_FILE = 'REMOVE_LINE_DISCUSSIONS_FOR_FILE';\nexport const TOGGLE_FOLDER_OPEN = 'TOGGLE_FOLDER_OPEN';\nexport const SET_FOLDER_OPEN = 'SET_FOLDER_OPEN';\nexport const TREE_ENTRY_DIFF_LOADING = 'TREE_ENTRY_DIFF_LOADING';\nexport const SET_SHOW_TREE_LIST = 'SET_SHOW_TREE_LIST';\nexport const SET_CURRENT_DIFF_FILE = 'SET_CURRENT_DIFF_FILE';\nexport const SET_DIFF_FILE_VIEWED = 'SET_DIFF_FILE_VIEWED';\nexport const SET_LINKED_FILE_HASH = 'SET_LINKED_FILE_HASH';\n\nexport const OPEN_DIFF_FILE_COMMENT_FORM = 'OPEN_DIFF_FILE_COMMENT_FORM';\nexport const UPDATE_DIFF_FILE_COMMENT_FORM = 'UPDATE_DIFF_FILE_COMMENT_FORM';\nexport const CLOSE_DIFF_FILE_COMMENT_FORM = 'CLOSE_DIFF_FILE_COMMENT_FORM';\nexport const SET_HIGHLIGHTED_ROW = 'SET_HIGHLIGHTED_ROW';\n\nexport const SET_TREE_DATA = 'SET_TREE_DATA';\nexport const SET_RENDER_TREE_LIST = 'SET_RENDER_TREE_LIST';\nexport const SET_SHOW_WHITESPACE = 'SET_SHOW_WHITESPACE';\nexport const SET_FILE_BY_FILE = 'SET_FILE_BY_FILE';\nexport const TOGGLE_FILE_FINDER_VISIBLE = 'TOGGLE_FILE_FINDER_VISIBLE';\n\nexport const REQUEST_FULL_DIFF = 'REQUEST_FULL_DIFF';\nexport const RECEIVE_FULL_DIFF_SUCCESS = 'RECEIVE_FULL_DIFF_SUCCESS';\nexport const RECEIVE_FULL_DIFF_ERROR = 'RECEIVE_FULL_DIFF_ERROR';\nexport const SET_FILE_COLLAPSED = 'SET_FILE_COLLAPSED';\nexport const SET_FILE_FORCED_OPEN = 'SET_FILE_FORCED_OPEN';\n\nexport const SET_CURRENT_VIEW_DIFF_FILE_LINES = 'SET_CURRENT_VIEW_DIFF_FILE_LINES';\nexport const ADD_CURRENT_VIEW_DIFF_FILE_LINES = 'ADD_CURRENT_VIEW_DIFF_FILE_LINES';\nexport const TOGGLE_DIFF_FILE_RENDERING_MORE = 'TOGGLE_DIFF_FILE_RENDERING_MORE';\n\nexport const SET_DIFF_FILE_VIEWER = 'SET_DIFF_FILE_VIEWER';\n\nexport const SET_SHOW_SUGGEST_POPOVER = 'SET_SHOW_SUGGEST_POPOVER';\n\nexport const SET_EXPAND_ALL_DIFF_DISCUSSIONS = 'SET_EXPAND_ALL_DIFF_DISCUSSIONS';\nexport const TOGGLE_LINE_DISCUSSIONS = 'TOGGLE_LINE_DISCUSSIONS';\nexport const DISABLE_VIRTUAL_SCROLLING = 'DISABLE_VIRTUAL_SCROLLING';\n\nexport const TOGGLE_FILE_COMMENT_FORM = 'TOGGLE_FILE_COMMENT_FORM';\nexport const SET_FILE_COMMENT_FORM = 'SET_FILE_COMMENT_FORM';\nexport const ADD_DRAFT_TO_FILE = 'ADD_DRAFT_TO_FILE';\n\nexport const SET_COLLAPSED_STATE_FOR_ALL_FILES = 'SET_COLLAPSED_STATE_FOR_ALL_FILES';\n","import { INLINE_DIFF_VIEW_TYPE } from '../../constants';\n\nexport default () => ({\n  isLoading: true,\n  isTreeLoaded: false,\n  batchLoadingState: null,\n  retrievingBatches: false,\n  addedLines: null,\n  removedLines: null,\n  endpoint: '',\n  endpointUpdateUser: '',\n  endpointDiffForPath: '',\n  basePath: '',\n  commit: null,\n  startVersion: null, // Null unless a target diff is selected for comparison that is not the \"base\" diff\n  diffFiles: [],\n  coverageFiles: {},\n  coverageLoaded: false,\n  mergeRequestDiffs: [],\n  mergeRequestDiff: null,\n  diffViewType: INLINE_DIFF_VIEW_TYPE,\n  tree: [],\n  treeEntries: {},\n  showTreeList: true,\n  currentDiffFileId: '',\n  projectPath: '',\n  viewedDiffFileIds: {},\n  commentForms: [],\n  highlightedRow: null,\n  renderTreeList: true,\n  showWhitespace: true,\n  viewDiffsFileByFile: false,\n  fileFinderVisible: false,\n  dismissEndpoint: '',\n  showSuggestPopover: true,\n  defaultSuggestionCommitMessage: '',\n  mrReviews: {},\n  latestDiff: true,\n  disableVirtualScroller: false,\n  linkedFileHash: null,\n});\n","export default {\n  SET_ACTIVE_TAB: 'SET_ACTIVE_TAB',\n  SET_ENDPOINTS: 'SET_ENDPOINTS',\n  SET_MR_METADATA: 'SET_MR_METADATA',\n  SET_FAILED_TO_LOAD_METADATA: 'SET_FAILED_TO_LOAD_METADATA',\n};\n","import axios from '~/lib/utils/axios_utils';\n\nimport types from './mutation_types';\n\nexport function setActiveTab({ commit }, tab) {\n  commit(types.SET_ACTIVE_TAB, tab);\n}\n\nexport function setEndpoints({ commit }, endpoints) {\n  commit(types.SET_ENDPOINTS, endpoints);\n}\n\nexport async function fetchMrMetadata({ state, commit }) {\n  if (state.endpoints?.metadata) {\n    commit(types.SET_FAILED_TO_LOAD_METADATA, false);\n    try {\n      const { data } = await axios.get(state.endpoints.metadata);\n      commit(types.SET_MR_METADATA, data);\n    } catch (error) {\n      commit(types.SET_FAILED_TO_LOAD_METADATA, true);\n    }\n  }\n}\n\nexport const toggleAllVisibleDiscussions = ({ getters, dispatch }) => {\n  if (getters.isDiffsPage) {\n    dispatch('diffs/toggleAllDiffDiscussions');\n  } else {\n    dispatch('toggleAllDiscussions');\n  }\n};\n","// Note: this getter is important because\n// `noteableData` is namespaced under `notes` for `~/mr_notes/stores`\n// while `noteableData` is directly available as `state.noteableData` for `~/notes/stores`\nexport const getNoteableData = (state) => state.notes.noteableData;\n\nexport default {\n  isLoggedIn(state, getters) {\n    return Boolean(getters.getUserData.id);\n  },\n  isDiffsPage(state) {\n    return state.activeTab === 'diffs';\n  },\n  allVisibleDiscussionsExpanded(state, getters) {\n    if (getters.isDiffsPage) return getters['diffs/allDiffDiscussionsExpanded'];\n    return getters.allDiscussionsExpanded;\n  },\n};\n","import types from './mutation_types';\n\nexport default {\n  [types.SET_ACTIVE_TAB](state, tab) {\n    Object.assign(state, { activeTab: tab });\n  },\n  [types.SET_ENDPOINTS](state, endpoints) {\n    Object.assign(state, { endpoints });\n  },\n  [types.SET_MR_METADATA](state, metadata) {\n    Object.assign(state, { mrMetadata: metadata });\n  },\n  [types.SET_FAILED_TO_LOAD_METADATA](state, value) {\n    Object.assign(state, { failedToLoadMetadata: value });\n  },\n};\n","export default {\n  SET_DRAWER: 'SET_DRAWER',\n};\n","import * as types from './mutation_types';\n\nexport const setDrawer = ({ commit }, data) => {\n  return commit(types.default.SET_DRAWER, data);\n};\n","export const activeDrawer = (state) => state.activeDrawer;\n","import types from './mutation_types';\n\nexport default {\n  [types.SET_DRAWER](state, drawer) {\n    Object.assign(state, { activeDrawer: drawer });\n  },\n};\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport batchCommentsModule from '~/batch_comments/stores/modules/batch_comments';\nimport diffsModule from '~/diffs/store/modules';\nimport notesModule from '~/notes/stores/modules';\nimport mrPageModule from './modules';\nimport findingsDrawer from './drawer';\n\nVue.use(Vuex);\n\nexport const createModules = () => ({\n  page: mrPageModule(),\n  notes: notesModule(),\n  diffs: diffsModule(),\n  batchComments: batchCommentsModule(),\n  findingsDrawer: findingsDrawer(),\n});\n\nexport const createStore = () =>\n  new Vuex.Store({\n    modules: createModules(),\n  });\n\nexport default createStore();\n","import * as actions from '../actions';\nimport getters from '../getters';\nimport mutations from '../mutations';\n\nexport default () => ({\n  state: {\n    endpoints: {},\n    activeTab: null,\n    mrMetadata: {},\n    failedToLoadMetadata: false,\n  },\n  actions,\n  getters,\n  mutations,\n});\n","import * as getters from '../getters';\nimport mutations from '../mutations';\nimport * as actions from '../actions';\nimport createState from './diff_state';\n\nexport default () => ({\n  namespaced: true,\n  state: createState(),\n  getters,\n  actions,\n  mutations,\n});\n","import * as actions from './actions';\nimport * as getters from './getters';\nimport mutations from './mutations';\nimport state from './state';\n\nexport default () => ({\n  namespaced: true,\n  state: state(),\n  mutations,\n  actions,\n  getters,\n});\n","export default () => ({\n  withBatchComments: true,\n  isDraftsFetched: false,\n  drafts: [],\n  isPublishing: false,\n  currentlyPublishingDrafts: [],\n  shouldAnimateReviewButton: false,\n  reviewBarRendered: false,\n});\n","import * as actions from './actions';\nimport * as getters from './getters';\nimport mutations from './mutations';\n\nexport default () => ({\n  namespaced: true,\n  state: {\n    activeDrawer: {},\n  },\n  mutations,\n  actions,\n  getters,\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.viewer)?_c('div',{staticClass:\"diff-file preview-container\"},[_c(_vm.viewer,{tag:\"component\",attrs:{\"diff-file\":_vm.diffFile,\"diff-mode\":_vm.diffMode,\"new-path\":_vm.fullNewPath,\"old-path\":_vm.fullOldPath,\"old-size\":_vm.oldSize,\"new-size\":_vm.newSize,\"project-path\":_vm.projectPath,\"a-mode\":_vm.aMode,\"b-mode\":_vm.bMode},scopedSlots:_vm._u([{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [_vm._t(\"image-overlay\",null,{\"renderedWidth\":renderedWidth,\"renderedHeight\":renderedHeight})]}}],null,true)}),_vm._v(\" \"),_vm._t(\"default\")],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const diffModes = {\n  replaced: 'replaced',\n  new: 'new',\n  deleted: 'deleted',\n  renamed: 'renamed',\n};\n\nexport const imageViewMode = {\n  twoup: 'twoup',\n  swipe: 'swipe',\n  onion: 'onion',\n};\n","<script>\nimport DownloadViewer from '../../content_viewer/viewers/download_viewer.vue';\nimport { diffModes } from '../constants';\n\nexport default {\n  components: {\n    DownloadViewer,\n  },\n  props: {\n    diffMode: {\n      type: String,\n      required: true,\n    },\n    newPath: {\n      type: String,\n      required: true,\n    },\n    oldPath: {\n      type: String,\n      required: true,\n    },\n    projectPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  diffModes,\n};\n</script>\n\n<template>\n  <div class=\"diff-file-container\">\n    <div class=\"diff-viewer\">\n      <div v-if=\"diffMode === $options.diffModes.replaced\" class=\"two-up view row\">\n        <div class=\"col-sm-6 deleted\">\n          <download-viewer :path=\"oldPath\" :project-path=\"projectPath\" />\n        </div>\n        <div class=\"col-sm-6 added\">\n          <download-viewer :path=\"newPath\" :project-path=\"projectPath\" />\n        </div>\n      </div>\n      <div v-else-if=\"diffMode === $options.diffModes.new\" class=\"added\">\n        <download-viewer :path=\"newPath\" :project-path=\"projectPath\" />\n      </div>\n      <div v-else class=\"deleted\">\n        <download-viewer :path=\"oldPath\" :project-path=\"projectPath\" />\n      </div>\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!./download_diff_viewer.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!./download_diff_viewer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./download_diff_viewer.vue?vue&type=template&id=45a37e32\"\nimport script from \"./download_diff_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./download_diff_viewer.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:\"diff-file-container\"},[_c('div',{staticClass:\"diff-viewer\"},[(_vm.diffMode === _vm.$options.diffModes.replaced)?_c('div',{staticClass:\"two-up view row\"},[_c('div',{staticClass:\"col-sm-6 deleted\"},[_c('download-viewer',{attrs:{\"path\":_vm.oldPath,\"project-path\":_vm.projectPath}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-6 added\"},[_c('download-viewer',{attrs:{\"path\":_vm.newPath,\"project-path\":_vm.projectPath}})],1)]):(_vm.diffMode === _vm.$options.diffModes.new)?_c('div',{staticClass:\"added\"},[_c('download-viewer',{attrs:{\"path\":_vm.newPath,\"project-path\":_vm.projectPath}})],1):_c('div',{staticClass:\"deleted\"},[_c('download-viewer',{attrs:{\"path\":_vm.oldPath,\"project-path\":_vm.projectPath}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function pixeliseValue(val) {\n  return val ? `${val}px` : '';\n}\n","<script>\nimport ImageViewer from '../../../content_viewer/viewers/image_viewer.vue';\nimport { pixeliseValue } from '../../../lib/utils/dom_utils';\n\nexport default {\n  components: {\n    ImageViewer,\n  },\n  props: {\n    newPath: {\n      type: String,\n      required: true,\n    },\n    oldPath: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      onionMaxWidth: undefined,\n      onionMaxHeight: undefined,\n      onionOldImgInfo: null,\n      onionNewImgInfo: null,\n      onionDraggerPos: 0,\n      onionOpacity: 1,\n      dragging: false,\n    };\n  },\n  computed: {\n    onionMaxPixelWidth() {\n      return pixeliseValue(this.onionMaxWidth);\n    },\n    onionMaxPixelHeight() {\n      return pixeliseValue(this.onionMaxHeight);\n    },\n    onionDraggerPixelPos() {\n      return pixeliseValue(this.onionDraggerPos);\n    },\n  },\n  beforeDestroy() {\n    document.body.removeEventListener('mouseup', this.stopDrag);\n    document.body.removeEventListener('touchend', this.stopDrag);\n    document.body.removeEventListener('mousemove', this.dragMove);\n    document.body.removeEventListener('touchmove', this.dragMove);\n  },\n  methods: {\n    dragMove(e) {\n      if (!this.dragging) return;\n      const moveX = e.pageX || e.touches[0].pageX;\n      const left = moveX - this.$refs.dragTrack.getBoundingClientRect().left;\n      const dragTrackWidth =\n        this.$refs.dragTrack.clientWidth - this.$refs.dragger.clientWidth || 100;\n\n      let leftValue = left;\n      if (leftValue < 0) leftValue = 0;\n      if (leftValue > dragTrackWidth) leftValue = dragTrackWidth;\n\n      this.onionOpacity = left / dragTrackWidth;\n      this.onionDraggerPos = leftValue;\n    },\n    startDrag() {\n      this.dragging = true;\n      document.body.style.userSelect = 'none';\n      document.body.addEventListener('mousemove', this.dragMove);\n      document.body.addEventListener('touchmove', this.dragMove);\n    },\n    stopDrag() {\n      this.dragging = false;\n      document.body.style.userSelect = '';\n      document.body.removeEventListener('mousemove', this.dragMove);\n      document.body.removeEventListener('touchmove', this.dragMove);\n    },\n    prepareOnionSkin() {\n      if (this.onionOldImgInfo && this.onionNewImgInfo) {\n        this.onionMaxWidth = Math.max(\n          this.onionOldImgInfo.renderedWidth,\n          this.onionNewImgInfo.renderedWidth,\n        );\n        this.onionMaxHeight = Math.max(\n          this.onionOldImgInfo.renderedHeight,\n          this.onionNewImgInfo.renderedHeight,\n        );\n\n        this.onionOpacity = 1;\n        this.onionDraggerPos =\n          this.$refs.dragTrack.clientWidth - this.$refs.dragger.clientWidth || 100;\n\n        document.body.addEventListener('mouseup', this.stopDrag);\n        document.body.addEventListener('touchend', this.stopDrag);\n      }\n    },\n    onionNewImgLoaded(imgInfo) {\n      this.onionNewImgInfo = imgInfo;\n      this.prepareOnionSkin();\n    },\n    onionOldImgLoaded(imgInfo) {\n      this.onionOldImgInfo = imgInfo;\n      this.prepareOnionSkin();\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"onion-skin view\">\n    <div\n      :style=\"{\n        width: onionMaxPixelWidth,\n        height: onionMaxPixelHeight,\n        'user-select': dragging ? 'none' : null,\n      }\"\n      class=\"onion-skin-frame\"\n    >\n      <div\n        :style=\"{\n          width: onionMaxPixelWidth,\n          height: onionMaxPixelHeight,\n        }\"\n        class=\"frame deleted\"\n      >\n        <image-viewer\n          key=\"onionOldImg\"\n          :render-info=\"false\"\n          :path=\"oldPath\"\n          @imgLoaded=\"onionOldImgLoaded\"\n        />\n      </div>\n      <div\n        ref=\"addedFrame\"\n        :style=\"{\n          opacity: onionOpacity,\n          width: onionMaxPixelWidth,\n          height: onionMaxPixelHeight,\n        }\"\n        class=\"added frame\"\n      >\n        <image-viewer\n          key=\"onionNewImg\"\n          :render-info=\"false\"\n          :path=\"newPath\"\n          @imgLoaded=\"onionNewImgLoaded\"\n        >\n          <template #image-overlay=\"{ renderedWidth, renderedHeight }\">\n            <slot\n              :rendered-width=\"renderedWidth\"\n              :rendered-height=\"renderedHeight\"\n              name=\"image-overlay\"\n            ></slot>\n          </template>\n        </image-viewer>\n      </div>\n      <div class=\"controls\">\n        <div class=\"transparent\"></div>\n        <div\n          ref=\"dragTrack\"\n          class=\"drag-track\"\n          @mousedown=\"startDrag\"\n          @mouseup=\"stopDrag\"\n          @touchstart=\"startDrag\"\n          @touchend=\"stopDrag\"\n        >\n          <div ref=\"dragger\" :style=\"{ left: onionDraggerPixelPos }\" class=\"dragger\"></div>\n        </div>\n        <div class=\"opaque\"></div>\n      </div>\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!./onion_skin_viewer.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!./onion_skin_viewer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./onion_skin_viewer.vue?vue&type=template&id=5a4671c8\"\nimport script from \"./onion_skin_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./onion_skin_viewer.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:\"onion-skin view\"},[_c('div',{staticClass:\"onion-skin-frame\",style:({\n      width: _vm.onionMaxPixelWidth,\n      height: _vm.onionMaxPixelHeight,\n      'user-select': _vm.dragging ? 'none' : null,\n    })},[_c('div',{staticClass:\"frame deleted\",style:({\n        width: _vm.onionMaxPixelWidth,\n        height: _vm.onionMaxPixelHeight,\n      })},[_c('image-viewer',{key:\"onionOldImg\",attrs:{\"render-info\":false,\"path\":_vm.oldPath},on:{\"imgLoaded\":_vm.onionOldImgLoaded}})],1),_vm._v(\" \"),_c('div',{ref:\"addedFrame\",staticClass:\"added frame\",style:({\n        opacity: _vm.onionOpacity,\n        width: _vm.onionMaxPixelWidth,\n        height: _vm.onionMaxPixelHeight,\n      })},[_c('image-viewer',{key:\"onionNewImg\",attrs:{\"render-info\":false,\"path\":_vm.newPath},on:{\"imgLoaded\":_vm.onionNewImgLoaded},scopedSlots:_vm._u([{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [_vm._t(\"image-overlay\",null,{\"renderedWidth\":renderedWidth,\"renderedHeight\":renderedHeight})]}}],null,true)})],1),_vm._v(\" \"),_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"transparent\"}),_vm._v(\" \"),_c('div',{ref:\"dragTrack\",staticClass:\"drag-track\",on:{\"mousedown\":_vm.startDrag,\"mouseup\":_vm.stopDrag,\"touchstart\":_vm.startDrag,\"touchend\":_vm.stopDrag}},[_c('div',{ref:\"dragger\",staticClass:\"dragger\",style:({ left: _vm.onionDraggerPixelPos })})]),_vm._v(\" \"),_c('div',{staticClass:\"opaque\"})])])])\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!./swipe_viewer.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!./swipe_viewer.vue?vue&type=script&lang=js\"","<script>\nimport { throttle } from 'lodash';\nimport ImageViewer from '../../../content_viewer/viewers/image_viewer.vue';\nimport { pixeliseValue } from '../../../lib/utils/dom_utils';\n\nexport default {\n  components: {\n    ImageViewer,\n  },\n  props: {\n    newPath: {\n      type: String,\n      required: true,\n    },\n    oldPath: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      dragging: false,\n      swipeOldImgInfo: null,\n      swipeNewImgInfo: null,\n      swipeMaxWidth: undefined,\n      swipeMaxHeight: undefined,\n      swipeBarPos: 1,\n      swipeWrapWidth: 0,\n    };\n  },\n  computed: {\n    swipeMaxPixelWidth() {\n      return pixeliseValue(this.swipeMaxWidth);\n    },\n    swipeMaxPixelHeight() {\n      return pixeliseValue(this.swipeMaxHeight);\n    },\n    swipeWrapPixelWidth() {\n      return pixeliseValue(this.swipeWrapWidth);\n    },\n    swipeBarPixelPos() {\n      return pixeliseValue(this.swipeBarPos);\n    },\n  },\n  beforeDestroy() {\n    window.removeEventListener('resize', this.resizeThrottled, false);\n    document.body.removeEventListener('mouseup', this.stopDrag);\n    document.body.removeEventListener('mousemove', this.dragMove);\n    document.body.removeEventListener('touchend', this.stopDrag);\n    document.body.removeEventListener('touchmove', this.dragMove);\n  },\n  mounted() {\n    window.addEventListener('resize', this.resize, false);\n  },\n  methods: {\n    dragMove(e) {\n      if (!this.dragging) return;\n\n      const moveX = e.pageX || e.touches[0].pageX;\n      let leftValue = moveX - this.$refs.swipeFrame.getBoundingClientRect().left;\n      const { clientWidth } = this.$refs.swipeFrame;\n      if (leftValue <= 0) {\n        leftValue = 0;\n      } else if (leftValue > clientWidth) {\n        leftValue = clientWidth;\n      }\n\n      this.swipeWrapWidth = (leftValue / clientWidth) * 100;\n      this.swipeBarPos = leftValue;\n    },\n    startDrag() {\n      this.dragging = true;\n      document.body.addEventListener('mousemove', this.dragMove);\n      document.body.addEventListener('touchmove', this.dragMove);\n    },\n    stopDrag() {\n      this.dragging = false;\n      document.body.removeEventListener('mousemove', this.dragMove);\n      document.body.removeEventListener('touchmove', this.dragMove);\n    },\n    prepareSwipe() {\n      if (this.swipeOldImgInfo && this.swipeNewImgInfo && this.swipeOldImgInfo.renderedWidth > 0) {\n        // Add 2 for border width\n        this.swipeMaxWidth =\n          Math.max(this.swipeOldImgInfo.renderedWidth, this.swipeNewImgInfo.renderedWidth) + 2;\n        this.swipeMaxHeight =\n          Math.max(this.swipeOldImgInfo.renderedHeight, this.swipeNewImgInfo.renderedHeight) + 2;\n\n        document.body.addEventListener('mouseup', this.stopDrag);\n        document.body.addEventListener('touchend', this.stopDrag);\n      }\n    },\n    swipeNewImgLoaded(imgInfo) {\n      this.swipeNewImgInfo = imgInfo;\n      this.prepareSwipe();\n    },\n    swipeOldImgLoaded(imgInfo) {\n      this.swipeOldImgInfo = imgInfo;\n      this.prepareSwipe();\n    },\n    resize: throttle(function throttledResize() {\n      this.swipeBarPos = 0;\n      this.swipeWrapWidth = 0;\n      this.prepareSwipe();\n    }, 400),\n  },\n};\n</script>\n\n<template>\n  <div class=\"swipe view\">\n    <div\n      ref=\"swipeFrame\"\n      :style=\"{\n        width: swipeMaxPixelWidth,\n        height: swipeMaxPixelHeight,\n        'user-select': dragging ? 'none' : null,\n      }\"\n      class=\"swipe-frame\"\n    >\n      <image-viewer\n        key=\"swipeOldImg\"\n        ref=\"swipeOldImg\"\n        :render-info=\"false\"\n        :path=\"oldPath\"\n        class=\"frame deleted\"\n        @imgLoaded=\"swipeOldImgLoaded\"\n      />\n      <div\n        ref=\"swipeWrap\"\n        :style=\"{\n          width: `${swipeWrapWidth}%`,\n        }\"\n        class=\"swipe-wrap\"\n      >\n        <image-viewer\n          key=\"swipeNewImg\"\n          :render-info=\"false\"\n          :path=\"newPath\"\n          :style=\"{\n            width: swipeMaxPixelWidth,\n          }\"\n          class=\"frame added\"\n          @imgLoaded=\"swipeNewImgLoaded\"\n        >\n          <template #image-overlay=\"{ renderedWidth, renderedHeight }\">\n            <slot\n              :rendered-width=\"renderedWidth\"\n              :rendered-height=\"renderedHeight\"\n              name=\"image-overlay\"\n            ></slot>\n          </template>\n        </image-viewer>\n      </div>\n      <span\n        ref=\"swipeBar\"\n        :style=\"{ left: swipeBarPixelPos }\"\n        class=\"swipe-bar\"\n        @mousedown=\"startDrag\"\n        @mouseup=\"stopDrag\"\n        @touchstart=\"startDrag\"\n        @touchend=\"stopDrag\"\n      >\n        <span class=\"top-handle\"></span> <span class=\"bottom-handle\"></span>\n      </span>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./swipe_viewer.vue?vue&type=template&id=6f12ef5d\"\nimport script from \"./swipe_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./swipe_viewer.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:\"swipe view\"},[_c('div',{ref:\"swipeFrame\",staticClass:\"swipe-frame\",style:({\n      width: _vm.swipeMaxPixelWidth,\n      height: _vm.swipeMaxPixelHeight,\n      'user-select': _vm.dragging ? 'none' : null,\n    })},[_c('image-viewer',{key:\"swipeOldImg\",ref:\"swipeOldImg\",staticClass:\"frame deleted\",attrs:{\"render-info\":false,\"path\":_vm.oldPath},on:{\"imgLoaded\":_vm.swipeOldImgLoaded}}),_vm._v(\" \"),_c('div',{ref:\"swipeWrap\",staticClass:\"swipe-wrap\",style:({\n        width: `${_vm.swipeWrapWidth}%`,\n      })},[_c('image-viewer',{key:\"swipeNewImg\",staticClass:\"frame added\",style:({\n          width: _vm.swipeMaxPixelWidth,\n        }),attrs:{\"render-info\":false,\"path\":_vm.newPath},on:{\"imgLoaded\":_vm.swipeNewImgLoaded},scopedSlots:_vm._u([{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [_vm._t(\"image-overlay\",null,{\"renderedWidth\":renderedWidth,\"renderedHeight\":renderedHeight})]}}],null,true)})],1),_vm._v(\" \"),_c('span',{ref:\"swipeBar\",staticClass:\"swipe-bar\",style:({ left: _vm.swipeBarPixelPos }),on:{\"mousedown\":_vm.startDrag,\"mouseup\":_vm.stopDrag,\"touchstart\":_vm.startDrag,\"touchend\":_vm.stopDrag}},[_c('span',{staticClass:\"top-handle\"}),_vm._v(\" \"),_c('span',{staticClass:\"bottom-handle\"})])],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!./two_up_viewer.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!./two_up_viewer.vue?vue&type=script&lang=js\"","<script>\nimport ImageViewer from '../../../content_viewer/viewers/image_viewer.vue';\n\nexport default {\n  components: {\n    ImageViewer,\n  },\n  props: {\n    newPath: {\n      type: String,\n      required: true,\n    },\n    oldPath: {\n      type: String,\n      required: true,\n    },\n    newSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n    oldSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"two-up view gl-flex\">\n    <image-viewer\n      :path=\"oldPath\"\n      :file-size=\"oldSize\"\n      :render-info=\"true\"\n      inner-css-classes=\"frame deleted\"\n      class=\"wrap w-50\"\n    />\n    <image-viewer\n      :path=\"newPath\"\n      :file-size=\"newSize\"\n      :render-info=\"true\"\n      :inner-css-classes=\"['frame', 'added']\"\n      class=\"wrap w-50\"\n    >\n      <template #image-overlay=\"{ renderedWidth, renderedHeight }\">\n        <slot\n          :rendered-width=\"renderedWidth\"\n          :rendered-height=\"renderedHeight\"\n          name=\"image-overlay\"\n        ></slot>\n      </template>\n    </image-viewer>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./two_up_viewer.vue?vue&type=template&id=af139274\"\nimport script from \"./two_up_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./two_up_viewer.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:\"two-up view gl-flex\"},[_c('image-viewer',{staticClass:\"wrap w-50\",attrs:{\"path\":_vm.oldPath,\"file-size\":_vm.oldSize,\"render-info\":true,\"inner-css-classes\":\"frame deleted\"}}),_vm._v(\" \"),_c('image-viewer',{staticClass:\"wrap w-50\",attrs:{\"path\":_vm.newPath,\"file-size\":_vm.newSize,\"render-info\":true,\"inner-css-classes\":['frame', 'added']},scopedSlots:_vm._u([{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [_vm._t(\"image-overlay\",null,{\"renderedWidth\":renderedWidth,\"renderedHeight\":renderedHeight})]}}],null,true)})],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!./image_diff_viewer.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!./image_diff_viewer.vue?vue&type=script&lang=js\"","<script>\nimport ImageViewer from '../../content_viewer/viewers/image_viewer.vue';\nimport { diffModes, imageViewMode } from '../constants';\nimport OnionSkinViewer from './image_diff/onion_skin_viewer.vue';\nimport SwipeViewer from './image_diff/swipe_viewer.vue';\nimport TwoUpViewer from './image_diff/two_up_viewer.vue';\n\nexport default {\n  components: {\n    ImageViewer,\n  },\n  props: {\n    diffMode: {\n      type: String,\n      required: true,\n    },\n    newPath: {\n      type: String,\n      required: true,\n    },\n    oldPath: {\n      type: String,\n      required: true,\n    },\n    newSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n    oldSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n  },\n  data() {\n    return {\n      mode: imageViewMode.twoup,\n    };\n  },\n  computed: {\n    imageViewComponent() {\n      switch (this.mode) {\n        case imageViewMode.twoup:\n          return TwoUpViewer;\n        case imageViewMode.swipe:\n          return SwipeViewer;\n        case imageViewMode.onion:\n          return OnionSkinViewer;\n        default:\n          return undefined;\n      }\n    },\n    isNew() {\n      return this.diffMode === diffModes.new;\n    },\n    isRenamed() {\n      return this.diffMode === diffModes.renamed;\n    },\n    imagePath() {\n      return this.isNew || this.isRenamed ? this.newPath : this.oldPath;\n    },\n  },\n  methods: {\n    changeMode(newMode) {\n      this.mode = newMode;\n    },\n  },\n  diffModes,\n  imageViewMode,\n};\n</script>\n\n<template>\n  <div class=\"diff-file-container\">\n    <div v-if=\"diffMode === $options.diffModes.replaced\" class=\"diff-viewer\">\n      <div class=\"image js-replaced-image\">\n        <component :is=\"imageViewComponent\" v-bind=\"$props\">\n          <template #image-overlay=\"{ renderedWidth, renderedHeight }\">\n            <slot\n              :rendered-width=\"renderedWidth\"\n              :rendered-height=\"renderedHeight\"\n              name=\"image-overlay\"\n            ></slot>\n          </template>\n        </component>\n      </div>\n      <div class=\"view-modes\">\n        <ul class=\"view-modes-menu\">\n          <li\n            :class=\"{\n              active: mode === $options.imageViewMode.twoup,\n            }\"\n            @click=\"changeMode($options.imageViewMode.twoup)\"\n          >\n            {{ s__('ImageDiffViewer|2-up') }}\n          </li>\n          <li\n            :class=\"{\n              active: mode === $options.imageViewMode.swipe,\n            }\"\n            @click=\"changeMode($options.imageViewMode.swipe)\"\n          >\n            {{ s__('ImageDiffViewer|Swipe') }}\n          </li>\n          <li\n            :class=\"{\n              active: mode === $options.imageViewMode.onion,\n            }\"\n            @click=\"changeMode($options.imageViewMode.onion)\"\n          >\n            {{ s__('ImageDiffViewer|Onion skin') }}\n          </li>\n        </ul>\n      </div>\n    </div>\n    <div v-else class=\"diff-viewer\">\n      <div class=\"image\">\n        <image-viewer\n          :path=\"imagePath\"\n          :file-size=\"isNew ? newSize : oldSize\"\n          :inner-css-classes=\"[\n            'frame',\n            {\n              added: isNew,\n              deleted: diffMode === $options.diffModes.deleted,\n            },\n          ]\"\n        >\n          <template v-if=\"isNew || isRenamed\" #image-overlay=\"{ renderedWidth, renderedHeight }\">\n            <slot\n              :rendered-width=\"renderedWidth\"\n              :rendered-height=\"renderedHeight\"\n              name=\"image-overlay\"\n            ></slot>\n          </template>\n        </image-viewer>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./image_diff_viewer.vue?vue&type=template&id=5fe380ca\"\nimport script from \"./image_diff_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./image_diff_viewer.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:\"diff-file-container\"},[(_vm.diffMode === _vm.$options.diffModes.replaced)?_c('div',{staticClass:\"diff-viewer\"},[_c('div',{staticClass:\"image js-replaced-image\"},[_c(_vm.imageViewComponent,_vm._b({tag:\"component\",scopedSlots:_vm._u([{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [_vm._t(\"image-overlay\",null,{\"renderedWidth\":renderedWidth,\"renderedHeight\":renderedHeight})]}}],null,true)},'component',_vm.$props,false))],1),_vm._v(\" \"),_c('div',{staticClass:\"view-modes\"},[_c('ul',{staticClass:\"view-modes-menu\"},[_c('li',{class:{\n            active: _vm.mode === _vm.$options.imageViewMode.twoup,\n          },on:{\"click\":function($event){return _vm.changeMode(_vm.$options.imageViewMode.twoup)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.s__('ImageDiffViewer|2-up'))+\"\\n        \")]),_vm._v(\" \"),_c('li',{class:{\n            active: _vm.mode === _vm.$options.imageViewMode.swipe,\n          },on:{\"click\":function($event){return _vm.changeMode(_vm.$options.imageViewMode.swipe)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.s__('ImageDiffViewer|Swipe'))+\"\\n        \")]),_vm._v(\" \"),_c('li',{class:{\n            active: _vm.mode === _vm.$options.imageViewMode.onion,\n          },on:{\"click\":function($event){return _vm.changeMode(_vm.$options.imageViewMode.onion)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.s__('ImageDiffViewer|Onion skin'))+\"\\n        \")])])])]):_c('div',{staticClass:\"diff-viewer\"},[_c('div',{staticClass:\"image\"},[_c('image-viewer',{attrs:{\"path\":_vm.imagePath,\"file-size\":_vm.isNew ? _vm.newSize : _vm.oldSize,\"inner-css-classes\":[\n          'frame',\n          {\n            added: _vm.isNew,\n            deleted: _vm.diffMode === _vm.$options.diffModes.deleted,\n          },\n        ]},scopedSlots:_vm._u([(_vm.isNew || _vm.isRenamed)?{key:\"image-overlay\",fn:function({ renderedWidth, renderedHeight }){return [_vm._t(\"image-overlay\",null,{\"renderedWidth\":renderedWidth,\"renderedHeight\":renderedHeight})]}}:null],null,true)})],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!./mode_changed.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!./mode_changed.vue?vue&type=script&lang=js\"","<script>\nimport { sprintf, __ } from '~/locale';\n\nexport default {\n  props: {\n    aMode: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    bMode: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    outputText() {\n      return sprintf(__('File mode changed from %{a_mode} to %{b_mode}'), {\n        a_mode: this.aMode,\n        b_mode: this.bMode,\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"nothing-here-block\">{{ outputText }}</div>\n</template>\n","import { render, staticRenderFns } from \"./mode_changed.vue?vue&type=template&id=7910acf7\"\nimport script from \"./mode_changed.vue?vue&type=script&lang=js\"\nexport * from \"./mode_changed.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:\"nothing-here-block\"},[_vm._v(_vm._s(_vm.outputText))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { GlAlert, GlLink, GlLoadingIcon, GlSprintf } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\n\nimport {\n  TRANSITION_LOAD_START,\n  TRANSITION_LOAD_ERROR,\n  TRANSITION_LOAD_SUCCEED,\n  TRANSITION_ACKNOWLEDGE_ERROR,\n  STATE_IDLING,\n  STATE_LOADING,\n  STATE_ERRORED,\n} from '~/diffs/constants';\nimport { truncateSha } from '~/lib/utils/text_utility';\nimport { __ } from '~/locale';\nimport { transition } from '../utils';\n\nexport default {\n  STATE_LOADING,\n  STATE_ERRORED,\n  uiText: {\n    showLink: __('Show file contents'),\n    commitLink: __('View file @ %{commitSha}'),\n    description: __('File renamed with no changes.'),\n    loadError: __('Unable to load file contents. Try again later.'),\n  },\n  components: {\n    GlAlert,\n    GlLink,\n    GlLoadingIcon,\n    GlSprintf,\n  },\n  props: {\n    diffFile: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      state: STATE_IDLING,\n    };\n  },\n  computed: {\n    shortSha() {\n      return truncateSha(this.diffFile.content_sha);\n    },\n    canLoadFullDiff() {\n      return this.diffFile.alternate_viewer.name === 'text';\n    },\n  },\n  methods: {\n    ...mapActions('diffs', ['switchToFullDiffFromRenamedFile']),\n    is(state) {\n      return this.state === state;\n    },\n    switchToFull() {\n      this.transitionState(TRANSITION_LOAD_START);\n\n      this.switchToFullDiffFromRenamedFile({ diffFile: this.diffFile })\n        .then(() => {\n          this.transitionState(TRANSITION_LOAD_SUCCEED);\n        })\n        .catch(() => {\n          this.transitionState(TRANSITION_LOAD_ERROR);\n        });\n    },\n    transitionState(transitionEvent) {\n      this.state = transition(this.state, transitionEvent);\n    },\n    clickLink(event) {\n      if (this.canLoadFullDiff) {\n        event.preventDefault();\n\n        this.switchToFull();\n      }\n    },\n    dismissError() {\n      this.transitionState(TRANSITION_ACKNOWLEDGE_ERROR);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"nothing-here-block\">\n    <gl-loading-icon v-if=\"is($options.STATE_LOADING)\" size=\"sm\" />\n    <template v-else>\n      <gl-alert\n        v-show=\"is($options.STATE_ERRORED)\"\n        class=\"gl-mb-5 gl-text-left\"\n        variant=\"danger\"\n        @dismiss=\"dismissError\"\n        >{{ $options.uiText.loadError }}</gl-alert\n      >\n      <span test-id=\"plaintext\">{{ $options.uiText.description }}</span>\n      <gl-link :href=\"diffFile.view_path\" @click=\"clickLink\">\n        <span v-if=\"canLoadFullDiff\">{{ $options.uiText.showLink }}</span>\n        <gl-sprintf v-else :message=\"$options.uiText.commitLink\">\n          <template #commitSha>{{ shortSha }}</template>\n        </gl-sprintf>\n      </gl-link>\n    </template>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./renamed.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!./renamed.vue?vue&type=script&lang=js\"","import { RENAMED_DIFF_TRANSITIONS } from '~/diffs/constants';\n\nexport const transition = (currentState, transitionEvent) => {\n  const key = `${currentState}:${transitionEvent}`;\n\n  if (RENAMED_DIFF_TRANSITIONS[key]) {\n    return RENAMED_DIFF_TRANSITIONS[key];\n  }\n\n  return currentState;\n};\n","import { render, staticRenderFns } from \"./renamed.vue?vue&type=template&id=180c56d2\"\nimport script from \"./renamed.vue?vue&type=script&lang=js\"\nexport * from \"./renamed.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:\"nothing-here-block\"},[(_vm.is(_vm.$options.STATE_LOADING))?_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}):[_c('gl-alert',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.is(_vm.$options.STATE_ERRORED)),expression:\"is($options.STATE_ERRORED)\"}],staticClass:\"gl-mb-5 gl-text-left\",attrs:{\"variant\":\"danger\"},on:{\"dismiss\":_vm.dismissError}},[_vm._v(_vm._s(_vm.$options.uiText.loadError))]),_vm._v(\" \"),_c('span',{attrs:{\"test-id\":\"plaintext\"}},[_vm._v(_vm._s(_vm.$options.uiText.description))]),_vm._v(\" \"),_c('gl-link',{attrs:{\"href\":_vm.diffFile.view_path},on:{\"click\":_vm.clickLink}},[(_vm.canLoadFullDiff)?_c('span',[_vm._v(_vm._s(_vm.$options.uiText.showLink))]):_c('gl-sprintf',{attrs:{\"message\":_vm.$options.uiText.commitLink},scopedSlots:_vm._u([{key:\"commitSha\",fn:function(){return [_vm._v(_vm._s(_vm.shortSha))]},proxy:true}])})],1)]],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!./diff_viewer.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!./diff_viewer.vue?vue&type=script&lang=js\"","<script>\nimport { diffViewerModes, diffModes } from '~/ide/constants';\nimport DownloadDiffViewer from './viewers/download_diff_viewer.vue';\nimport ImageDiffViewer from './viewers/image_diff_viewer.vue';\nimport ModeChanged from './viewers/mode_changed.vue';\nimport RenamedFile from './viewers/renamed.vue';\n\nexport default {\n  props: {\n    diffFile: {\n      type: Object,\n      required: true,\n    },\n    diffMode: {\n      type: String,\n      required: true,\n    },\n    diffViewerMode: {\n      type: String,\n      required: true,\n    },\n    newPath: {\n      type: String,\n      required: true,\n    },\n    newSha: {\n      type: String,\n      required: true,\n    },\n    newSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n    oldPath: {\n      type: String,\n      required: true,\n    },\n    oldSha: {\n      type: String,\n      required: true,\n    },\n    oldSize: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n    projectPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    aMode: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    bMode: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    viewer() {\n      if (this.diffViewerMode === diffViewerModes.renamed) {\n        return RenamedFile;\n      }\n      if (this.diffMode === diffModes.mode_changed) {\n        return ModeChanged;\n      }\n\n      if (!this.newPath) return null;\n\n      switch (this.diffViewerMode) {\n        case diffViewerModes.image:\n          return ImageDiffViewer;\n        default:\n          return DownloadDiffViewer;\n      }\n    },\n    basePath() {\n      // We might get the project path from rails with the relative url already set up\n      return this.projectPath.indexOf('/') === 0 ? '' : `${gon.relative_url_root}/`;\n    },\n    fullOldPath() {\n      return `${this.basePath}${this.projectPath}/-/raw/${this.oldSha}/${this.oldPath}`;\n    },\n    fullNewPath() {\n      return `${this.basePath}${this.projectPath}/-/raw/${this.newSha}/${this.newPath}`;\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"viewer\" class=\"diff-file preview-container\">\n    <component\n      :is=\"viewer\"\n      :diff-file=\"diffFile\"\n      :diff-mode=\"diffMode\"\n      :new-path=\"fullNewPath\"\n      :old-path=\"fullOldPath\"\n      :old-size=\"oldSize\"\n      :new-size=\"newSize\"\n      :project-path=\"projectPath\"\n      :a-mode=\"aMode\"\n      :b-mode=\"bMode\"\n    >\n      <template #image-overlay=\"{ renderedWidth, renderedHeight }\">\n        <slot\n          :rendered-width=\"renderedWidth\"\n          :rendered-height=\"renderedHeight\"\n          name=\"image-overlay\"\n        ></slot>\n      </template>\n    </component>\n    <slot></slot>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./diff_viewer.vue?vue&type=template&id=64fc1cb9\"\nimport script from \"./diff_viewer.vue?vue&type=script&lang=js\"\nexport * from \"./diff_viewer.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 { TYPE_EPIC, TYPE_ISSUE } from '~/issues/constants';\nimport { issuableAttributesQueries as issuableAttributesQueriesFoss } from '~/sidebar/queries/constants';\nimport updateStatusMutation from '~/sidebar/queries/update_status.mutation.graphql';\nimport issuableWeightSubscription from 'ee/graphql_shared/subscriptions/issuable_weight.subscription.graphql';\nimport { IssuableAttributeType } from '../constants';\nimport epicAncestorsQuery from './epic_ancestors.query.graphql';\nimport groupEpicsQuery from './group_epics.query.graphql';\nimport groupIterationsQuery from './group_iterations.query.graphql';\nimport issueHealthStatusQuery from './issue_health_status.query.graphql';\nimport issueWeightQuery from './issue_weight.query.graphql';\nimport projectIssueEpicMutation from './project_issue_epic.mutation.graphql';\nimport projectIssueEpicQuery from './project_issue_epic.query.graphql';\nimport projectIssueIterationMutation from './project_issue_iteration.mutation.graphql';\nimport projectIssueIterationQuery from './project_issue_iteration.query.graphql';\nimport updateIssueWeightMutation from './update_issue_weight.mutation.graphql';\nimport issueEscalationPolicyQuery from './issue_escalation_policy.query.graphql';\nimport issueEscalationPolicyMutation from './issue_escalation_policy.mutation.graphql';\nimport projectEscalationPoliciesQuery from './project_escalation_policies.query.graphql';\nimport issuableEpicSubscription from './issuable_epic.subscription.graphql';\nimport workItemParent from './project_issue_parent.query.graphql';\nimport workItemParentsQuery from './work_item_parents.query.graphql';\nimport updateWorkItemParent from './project_issue_update_parent.mutation.graphql';\nimport workItemParentSubscription from './work_item_parent.subscription.graphql';\n\nexport const issuableIterationQueries = {\n  [TYPE_ISSUE]: {\n    query: projectIssueIterationQuery,\n    mutation: projectIssueIterationMutation,\n  },\n};\n\nexport const iterationsQueries = {\n  [TYPE_ISSUE]: {\n    query: groupIterationsQuery,\n  },\n};\n\nconst issuableEpicQueries = {\n  [TYPE_ISSUE]: {\n    query: projectIssueEpicQuery,\n    mutation: projectIssueEpicMutation,\n  },\n};\n\nconst epicsQueries = {\n  [TYPE_ISSUE]: {\n    query: groupEpicsQuery,\n  },\n};\n\nconst parentsQueries = {\n  [TYPE_ISSUE]: {\n    query: workItemParentsQuery,\n  },\n};\n\nconst issuableEscalationPolicyQueries = {\n  [TYPE_ISSUE]: {\n    query: issueEscalationPolicyQuery,\n    mutation: issueEscalationPolicyMutation,\n  },\n};\n\nconst escalationPoliciesQueries = {\n  [TYPE_ISSUE]: {\n    query: projectEscalationPoliciesQuery,\n  },\n};\n\nexport const parentQueries = {\n  [TYPE_ISSUE]: {\n    query: workItemParent,\n    mutation: updateWorkItemParent,\n  },\n};\n\nexport const issuableAttributesQueries = {\n  ...issuableAttributesQueriesFoss,\n  [IssuableAttributeType.Iteration]: {\n    current: issuableIterationQueries,\n    list: iterationsQueries,\n  },\n  [IssuableAttributeType.Epic]: {\n    current: issuableEpicQueries,\n    list: epicsQueries,\n    subscription: issuableEpicSubscription,\n  },\n  [IssuableAttributeType.EscalationPolicy]: {\n    current: issuableEscalationPolicyQueries,\n    list: escalationPoliciesQueries,\n  },\n  [IssuableAttributeType.Parent]: {\n    current: parentQueries,\n    list: parentsQueries,\n    subscription: workItemParentSubscription,\n  },\n};\n\nexport const ancestorsQueries = {\n  [TYPE_EPIC]: {\n    query: epicAncestorsQuery,\n  },\n};\n\nexport const weightQueries = {\n  [TYPE_ISSUE]: {\n    query: issueWeightQuery,\n    mutation: updateIssueWeightMutation,\n    subscription: issuableWeightSubscription,\n  },\n};\n\nexport const healthStatusQueries = {\n  [TYPE_ISSUE]: {\n    mutation: updateStatusMutation,\n    query: issueHealthStatusQuery,\n  },\n  [TYPE_EPIC]: {\n    mutation: updateStatusMutation,\n    query: issueHealthStatusQuery,\n  },\n};\n","import { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as props$2, captionMixin } from './helpers/mixin-caption';\nimport { props as props$3, colgroupMixin } from './helpers/mixin-colgroup';\nimport { props as props$4, itemsMixin } from './helpers/mixin-items';\nimport { props as props$5, stackedMixin } from './helpers/mixin-stacked';\nimport { props as props$6, tableRendererMixin } from './helpers/mixin-table-renderer';\nimport { props as props$7, tbodyMixin } from './helpers/mixin-tbody';\nimport { props as props$8, tfootMixin } from './helpers/mixin-tfoot';\nimport { props as props$9, theadMixin } from './helpers/mixin-thead';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...props$2,\n  ...props$3,\n  ...props$4,\n  ...props$5,\n  ...props$6,\n  ...props$7,\n  ...props$8,\n  ...props$9\n}), NAME_TABLE_LITE);\n\n// --- Main component ---\n\n// @vue/component\nconst BTableLite = /*#__PURE__*/extend({\n  name: NAME_TABLE_LITE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [\n  // General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin,\n  // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin,\n  // Table features mixins\n  // These are pretty lightweight, and are useful for lightweight tables\n  captionMixin, colgroupMixin],\n  props\n\n  // Render function is provided by `tableRendererMixin`\n});\n\nexport { BTableLite, props };\n","import { BTableLite } from '../../../vendor/bootstrap-vue/src/components/table/table-lite';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  tableClass\n} = BTableLite.options.props;\nvar script = {\n  name: 'GlTableLite',\n  components: {\n    BTableLite\n  },\n  inheritAttrs: false,\n  props: {\n    tableClass,\n    fields: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    stickyHeader: {\n      type: Boolean,\n      default: false,\n      required: false\n    }\n  },\n  computed: {\n    stickyHeaderClass() {\n      return this.stickyHeader ? 'gl-table--sticky-header' : null;\n    },\n    localTableClass() {\n      return ['gl-table', this.tableClass, this.stickyHeaderClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table-lite',_vm._g(_vm._b({attrs:{\"table-class\":_vm.localTableClass,\"fields\":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n  const stringify = (node, parent = {}) => {\n    const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    let output = '';\n\n    if (node.value) {\n      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n        return '\\\\' + node.value;\n      }\n      return node.value;\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += stringify(child);\n      }\n    }\n    return output;\n  };\n\n  return stringify(ast);\n};\n\n","/**\n * Get query parameters used for users request from passed `options` parameter\n * @param {Object} options e.g. { currentUserId: 1, fooBar: 'baz' }\n * @param {Object} paramsMap e.g. { user_id: 'currentUserId', foo_bar: 'fooBar' }\n */\nexport const getAjaxUsersSelectParams = (options, paramsMap) => {\n  return Object.keys(paramsMap).reduce((accumulator, paramKey) => {\n    const optionKey = paramsMap[paramKey];\n    accumulator[paramKey] = options[optionKey] || null;\n\n    return accumulator;\n  }, {});\n};\n","/* eslint-disable func-names, consistent-return, no-shadow, no-self-compare, no-unused-expressions, camelcase, no-param-reassign */\n/* global Issuable */\n/* global emitSidebarEvent */\n\nimport $ from 'jquery';\nimport { escape, template, uniqBy } from 'lodash';\nimport { AJAX_USERS_SELECT_PARAMS_MAP } from '~/users_select/constants';\nimport initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown';\nimport { TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { isUserBusy } from '~/set_status_modal/utils';\nimport { fixTitle, dispose } from '~/tooltips';\nimport axios from '~/lib/utils/axios_utils';\nimport { parseBoolean, spriteIcon } from '~/lib/utils/common_utils';\nimport { s__, __, sprintf } from '~/locale';\nimport { getAjaxUsersSelectParams } from './utils';\n\n// TODO: remove eventHub hack after code splitting refactor\nwindow.emitSidebarEvent = window.emitSidebarEvent || $.noop;\n\nfunction UsersSelect(currentUser, els, options = {}) {\n  const elsClassName = els?.toString().match('.(.+$)')[1];\n  const $els = $(els || '.js-user-search');\n  this.users = this.users.bind(this);\n  this.usersPath = '/-/autocomplete/users.json';\n  if (currentUser != null) {\n    if (typeof currentUser === 'object') {\n      this.currentUser = currentUser;\n    } else {\n      this.currentUser = JSON.parse(currentUser);\n    }\n  }\n\n  const { handleClick, states } = options;\n\n  this.dropdowns = $els\n    .map((i, dropdown) => {\n      const userSelect = this;\n      const $dropdown = $(dropdown);\n      const options = {\n        states,\n        projectId: $dropdown.data('projectId'),\n        groupId: $dropdown.data('groupId'),\n        showCurrentUser: $dropdown.data('currentUser'),\n        todoFilter: $dropdown.data('todoFilter'),\n        todoStateFilter: $dropdown.data('todoStateFilter'),\n        iid: $dropdown.data('iid'),\n        issuableType: $dropdown.data('issuableType'),\n        targetBranch: $dropdown.data('targetBranch'),\n        authorId: $dropdown.data('authorId'),\n        showSuggested: $dropdown.data('showSuggested'),\n      };\n      const showNullUser = $dropdown.data('nullUser');\n      const defaultNullUser = $dropdown.data('nullUserDefault');\n      const showMenuAbove = $dropdown.data('showMenuAbove');\n      const showAnyUser = $dropdown.data('anyUser');\n      const firstUser = $dropdown.data('firstUser');\n      const defaultLabel = $dropdown.data('defaultLabel');\n      const issueURL = $dropdown.data('issueUpdate');\n      const $selectbox = $dropdown.closest('.selectbox');\n      const $assignToMeLink = $selectbox.next('.assign-to-me-link');\n      let $block = $selectbox.closest('.block');\n      const abilityName = $dropdown.data('abilityName');\n      let $value = $block.find('.value');\n      const $collapsedSidebar = $block.find('.sidebar-collapsed-user');\n      const $loading = $block.find('.block-loading').addClass('gl-hidden');\n      const selectedIdDefault = defaultNullUser && showNullUser ? 0 : null;\n      let selectedId = $dropdown.data('selected');\n      let assignTo;\n      let assigneeTemplate;\n      let collapsedAssigneeTemplate;\n\n      const suggestedReviewersHelpPath = $dropdown.data('suggestedReviewersHelpPath');\n      const suggestedReviewersHeaderTemplate = template(\n        `<div class=\"gl-flex gl-items-center\">\n         <%- header %>\n         <a\n           title=\"${s__('SuggestedReviewers|Learn about suggested reviewers')}\"\n           href=\"${suggestedReviewersHelpPath}\"\n           rel=\"noopener\"\n           target=\"_blank\"\n           aria-label=\"${s__('SuggestedReviewers|Suggested reviewers help link')}\"\n           class=\"hover:!gl-bg-transparent !gl-p-0 has-tooltip\">\n           ${spriteIcon('question-o', 'gl-ml-3 gl-icon s16')}\n         </a>\n       </div>`,\n      );\n\n      if (selectedId === undefined) {\n        selectedId = selectedIdDefault;\n      }\n\n      const assignYourself = function () {\n        const unassignedSelected = $dropdown\n          .closest('.selectbox')\n          .find(`input[name='${$dropdown.data('fieldName')}'][value=0]`);\n\n        if (unassignedSelected) {\n          unassignedSelected.remove();\n        }\n\n        // Save current selected user to the DOM\n        const currentUserInfo = $dropdown.data('currentUserInfo') || {};\n        const currentUser = userSelect.currentUser || {};\n        const fieldName = $dropdown.data('fieldName');\n        const userName = currentUserInfo.name;\n        const userId = currentUserInfo.id || currentUser.id;\n\n        const inputHtmlString = template(`\n        <input type=\"hidden\" name=\"<%- fieldName %>\"\n          data-meta=\"<%- userName %>\"\n          value=\"<%- userId %>\" />\n        `)({ fieldName, userName, userId });\n\n        if ($selectbox) {\n          $dropdown.parent().before(inputHtmlString);\n        } else {\n          $dropdown.after(inputHtmlString);\n        }\n      };\n\n      if ($block[0]) {\n        $block[0].addEventListener('assignYourself', assignYourself);\n      }\n\n      const getSelectedUserInputs = function () {\n        return $selectbox.find(`input[name=\"${$dropdown.data('fieldName')}\"]`);\n      };\n\n      const getSelected = function () {\n        return getSelectedUserInputs()\n          .map((index, input) => parseInt(input.value, 10))\n          .get();\n      };\n\n      const checkMaxSelect = function () {\n        const maxSelect = $dropdown.data('maxSelect');\n        if (maxSelect) {\n          const selected = getSelected();\n\n          if (selected.length > maxSelect) {\n            const firstSelectedId = selected[0];\n            const firstSelected = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${$dropdown.data('fieldName')}'][value=${firstSelectedId}]`);\n\n            firstSelected.remove();\n\n            if ($dropdown.hasClass(elsClassName)) {\n              emitSidebarEvent('sidebar.removeReviewer', {\n                id: firstSelectedId,\n              });\n            } else {\n              emitSidebarEvent('sidebar.removeAssignee', {\n                id: firstSelectedId,\n              });\n            }\n          }\n        }\n      };\n\n      const getMultiSelectDropdownTitle = function (selectedUser, isSelected) {\n        const selectedUsers = getSelected().filter((u) => u !== 0);\n\n        const firstUser = getSelectedUserInputs()\n          .map((index, input) => ({\n            name: input.dataset.meta,\n            value: parseInt(input.value, 10),\n          }))\n          .filter((u) => u.id !== 0)\n          .get(0);\n\n        if (selectedUsers.length === 0) {\n          return s__('UsersSelect|Unassigned');\n        }\n        if (selectedUsers.length === 1) {\n          return firstUser.name;\n        }\n        if (isSelected) {\n          const otherSelected = selectedUsers.filter((s) => s !== selectedUser.id);\n          return sprintf(s__('UsersSelect|%{name} + %{length} more'), {\n            name: selectedUser.name,\n            length: otherSelected.length,\n          });\n        }\n        return sprintf(s__('UsersSelect|%{name} + %{length} more'), {\n          name: firstUser.name,\n          length: selectedUsers.length - 1,\n        });\n      };\n\n      $assignToMeLink.on('click', (e) => {\n        e.preventDefault();\n        $(e.currentTarget).hide();\n\n        if ($dropdown.data('multiSelect')) {\n          assignYourself();\n          checkMaxSelect();\n\n          const currentUserInfo = $dropdown.data('currentUserInfo');\n          $dropdown\n            .find('.dropdown-toggle-text')\n            .text(getMultiSelectDropdownTitle(currentUserInfo))\n            .removeClass('is-default');\n        } else {\n          const $input = $(`input[name=\"${$dropdown.data('fieldName')}\"]`);\n          $input.val(gon.current_user_id);\n          selectedId = $input.val();\n          $dropdown\n            .find('.dropdown-toggle-text')\n            .text(gon.current_user_fullname)\n            .removeClass('is-default');\n        }\n      });\n\n      $block.on('click', '.js-assign-yourself', (e) => {\n        e.preventDefault();\n        return assignTo(userSelect.currentUser.id);\n      });\n\n      assignTo = function (selected) {\n        const data = {};\n        data[abilityName] = {};\n        data[abilityName].assignee_id = selected != null ? selected : null;\n        $loading.removeClass('gl-hidden');\n        $dropdown.trigger('loading.gl.dropdown');\n\n        return axios.put(issueURL, data).then(({ data }) => {\n          let user = {};\n          let tooltipTitle;\n          $dropdown.trigger('loaded.gl.dropdown');\n          $loading.addClass('gl-hidden');\n          if (data.assignee) {\n            user = {\n              name: data.assignee.name,\n              username: data.assignee.username,\n              avatar: data.assignee.avatar_url,\n            };\n            tooltipTitle = escape(user.name);\n          } else {\n            user = {\n              name: s__('UsersSelect|Unassigned'),\n              username: '',\n              avatar: '',\n            };\n            tooltipTitle = s__('UsersSelect|Assignee');\n          }\n          $value.html(assigneeTemplate(user));\n          $collapsedSidebar.attr('title', tooltipTitle);\n          fixTitle($collapsedSidebar);\n\n          return $collapsedSidebar.html(collapsedAssigneeTemplate(user));\n        });\n      };\n      collapsedAssigneeTemplate = template(\n        `<% if( avatar ) { %> <a class=\"author-link\" href=\"/<%- username %>\"> <img width=\"24\" class=\"avatar avatar-inline s24\" alt=\"\" src=\"<%- avatar %>\"> </a> <% } else { %> ${spriteIcon(\n          'user',\n        )} <% } %>`,\n      );\n      assigneeTemplate = template(\n        `<% if (username) { %> <a class=\"author-link gl-font-bold\" href=\"/<%- username %>\"> <% if( avatar ) { %> <img width=\"32\" class=\"avatar avatar-inline s32\" alt=\"\" src=\"<%- avatar %>\"> <% } %> <span class=\"author\"><%- name %></span> <span class=\"username\"> @<%- username %> </span> </a> <% } else { %> <span class=\"no-value assign-yourself\">\n      ${sprintf(s__('UsersSelect|No assignee - %{openingTag} assign yourself %{closingTag}'), {\n        openingTag: '<a href=\"#\" class=\"js-assign-yourself\">',\n        closingTag: '</a>',\n      })}</span> <% } %>`,\n      );\n\n      return initDeprecatedJQueryDropdown($dropdown, {\n        showMenuAbove,\n        data(term, callback) {\n          return userSelect.users(term, options, (users) => {\n            // GitLabDropdownFilter returns this.instance\n            // GitLabDropdownRemote returns this.options.instance\n            const deprecatedJQueryDropdown = this.instance || this.options.instance;\n            deprecatedJQueryDropdown.options.processData(term, users, callback);\n          });\n        },\n        processData(term, dataArg, callback) {\n          // Sometimes the `dataArg` can contain special dropdown items like\n          // dividers which we don't want to consider here.\n          const data = dataArg.filter((x) => !x.type);\n\n          let users = data;\n\n          // Only show assigned user list when there is no search term\n          if ($dropdown.hasClass('js-multiselect') && term.length === 0) {\n            const selectedInputs = getSelectedUserInputs();\n\n            // Potential duplicate entries when dealing with issue board\n            // because issue board is also managed by vue\n            const selectedUsers = uniqBy(selectedInputs, (a) => a.value)\n              .filter((input) => {\n                const userId = parseInt(input.value, 10);\n                const inUsersArray = users.find((u) => u.id === userId);\n\n                return !inUsersArray && userId !== 0;\n              })\n              .map((input) => {\n                const userId = parseInt(input.value, 10);\n                const {\n                  avatarUrl,\n                  avatar_url,\n                  name,\n                  username,\n                  can_merge: canMerge,\n                } = input.dataset;\n                return {\n                  avatar_url: avatarUrl || avatar_url || gon.default_avatar_url,\n                  id: userId,\n                  name,\n                  username,\n                  can_merge: parseBoolean(canMerge),\n                };\n              });\n\n            users = data.concat(selectedUsers);\n          }\n\n          let anyUser;\n          let index;\n          let len;\n          let name;\n          let obj;\n          let showDivider;\n          if (term.length === 0) {\n            showDivider = 0;\n            if (firstUser) {\n              // Move current user to the front of the list\n              for (index = 0, len = users.length; index < len; index += 1) {\n                obj = users[index];\n                if (obj.username === firstUser) {\n                  users.splice(index, 1);\n                  users.unshift(obj);\n                  break;\n                }\n              }\n            }\n            if (showNullUser) {\n              showDivider += 1;\n              users.unshift({\n                beforeDivider: true,\n                name: s__('UsersSelect|Unassigned'),\n                id: 0,\n              });\n            }\n            if (showAnyUser) {\n              showDivider += 1;\n              name = showAnyUser;\n              if (name === true) {\n                name = s__('UsersSelect|Any User');\n              }\n              anyUser = {\n                beforeDivider: true,\n                name,\n                id: null,\n              };\n              users.unshift(anyUser);\n            }\n\n            if (showDivider) {\n              users.splice(showDivider, 0, { type: 'divider' });\n            }\n\n            if ($dropdown.hasClass('js-multiselect')) {\n              const selected = getSelected().filter((i) => i !== 0);\n\n              if ($dropdown.data('showSuggested')) {\n                const suggested = this.suggestedUsers(users);\n                if (suggested.length) {\n                  users = users.filter(\n                    (u) => !u.suggested || (u.suggested && selected.indexOf(u.id) !== -1),\n                  );\n                  users.splice(showDivider + 1, 0, ...suggested);\n                }\n              }\n\n              if (selected.length > 0) {\n                if ($dropdown.data('dropdownHeader')) {\n                  showDivider += 1;\n                  users.splice(showDivider, 0, {\n                    type: 'header',\n                    content: $dropdown.data('dropdownHeader'),\n                  });\n                }\n\n                const selectedUsers = users\n                  .filter((u) => selected.indexOf(u.id) !== -1)\n                  .sort((a, b) => a.name > b.name);\n\n                users = users.filter((u) => selected.indexOf(u.id) === -1);\n\n                selectedUsers.forEach((selectedUser) => {\n                  showDivider += 1;\n                  users.splice(showDivider, 0, selectedUser);\n                });\n\n                users.splice(showDivider + 1, 0, { type: 'divider' });\n              }\n            }\n          }\n\n          callback(users);\n          if (showMenuAbove) {\n            $dropdown.data('deprecatedJQueryDropdown').positionMenuAbove();\n          }\n        },\n        suggestedUsers(users) {\n          const selected = getSelected().filter((i) => i !== 0);\n          const suggestedUsers = users.filter((u) => u.suggested && selected.indexOf(u.id) === -1);\n\n          if (!suggestedUsers.length) return [];\n\n          const items = [\n            {\n              type: 'header',\n              content: suggestedReviewersHeaderTemplate({\n                header: $dropdown.data('suggestedReviewersHeader'),\n              }),\n            },\n            ...suggestedUsers,\n            { type: 'header', content: $dropdown.data('allMembersHeader') },\n          ];\n          return items;\n        },\n        filterable: true,\n        filterRemote: true,\n        search: {\n          fields: ['name', 'username'],\n        },\n        selectable: true,\n        fieldName: $dropdown.data('fieldName'),\n        toggleLabel(selected, el, deprecatedJQueryDropdown) {\n          const inputValue = deprecatedJQueryDropdown.filterInput.val();\n\n          if (this.multiSelect && inputValue === '') {\n            // Remove non-users from the fullData array\n            const users = deprecatedJQueryDropdown.filteredFullData();\n            const callback = deprecatedJQueryDropdown.parseData.bind(deprecatedJQueryDropdown);\n\n            // Update the data model\n            this.processData(inputValue, users, callback);\n          }\n\n          deprecatedJQueryDropdown.filter.clear();\n\n          if (this.multiSelect) {\n            return getMultiSelectDropdownTitle(selected, $(el).hasClass('is-active'));\n          }\n\n          if (selected && 'id' in selected && $(el).hasClass('is-active')) {\n            $dropdown.find('.dropdown-toggle-text').removeClass('is-default');\n            if (selected.text) {\n              return selected.text;\n            }\n            return selected.name;\n          }\n          $dropdown.find('.dropdown-toggle-text').addClass('is-default');\n\n          return defaultLabel;\n        },\n        defaultLabel,\n        hidden() {\n          if ($dropdown.hasClass('js-multiselect')) {\n            if ($dropdown.hasClass(elsClassName)) {\n              if (!$dropdown.closest('.merge-request-form').length) {\n                $dropdown.data('deprecatedJQueryDropdown').clearMenu();\n                $dropdown.closest('.selectbox').children('input[type=\"hidden\"]').remove();\n              }\n              emitSidebarEvent('sidebar.saveReviewers');\n            } else {\n              emitSidebarEvent('sidebar.saveAssignees');\n            }\n          }\n\n          if (!$dropdown.data('alwaysShowSelectbox')) {\n            $selectbox.hide();\n\n            // Recalculate where .value is because vue might have changed it\n            $block = $selectbox.closest('.block');\n            $value = $block.find('.value');\n            // display:block overrides the hide-collapse rule\n            $value.css('display', '');\n          }\n\n          $('.dropdown-input-field', $block).val('');\n        },\n        multiSelect: $dropdown.hasClass('js-multiselect'),\n        inputMeta: $dropdown.data('inputMeta'),\n        clicked(options) {\n          const { $el, e, isMarking } = options;\n          const user = options.selectedObj;\n\n          dispose($el);\n\n          if ($dropdown.hasClass('js-multiselect')) {\n            const isActive = $el.hasClass('is-active');\n            const previouslySelected = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${$dropdown.data('fieldName')}'][value!=0]`);\n\n            // Enables support for limiting the number of users selected\n            // Automatically removes the first on the list if more users are selected\n            checkMaxSelect();\n\n            if (user.beforeDivider && user.name.toLowerCase() === 'unassigned') {\n              // Unassigned selected\n              previouslySelected.each((index, element) => {\n                element.remove();\n              });\n              if ($dropdown.hasClass(elsClassName)) {\n                emitSidebarEvent('sidebar.removeAllReviewers');\n              } else {\n                emitSidebarEvent('sidebar.removeAllAssignees');\n              }\n            } else if (isActive) {\n              // user selected\n              if ($dropdown.hasClass(elsClassName)) {\n                emitSidebarEvent('sidebar.addReviewer', user);\n              } else {\n                emitSidebarEvent('sidebar.addAssignee', user);\n              }\n\n              // Remove unassigned selection (if it was previously selected)\n              const unassignedSelected = $dropdown\n                .closest('.selectbox')\n                .find(`input[name='${$dropdown.data('fieldName')}'][value=0]`);\n\n              if (unassignedSelected) {\n                unassignedSelected.remove();\n              }\n            } else {\n              if (previouslySelected.length === 0) {\n                // Select unassigned because there is no more selected users\n                this.addInput($dropdown.data('fieldName'), 0, {});\n              }\n\n              // User unselected\n              if ($dropdown.hasClass(elsClassName)) {\n                emitSidebarEvent('sidebar.removeReviewer', user);\n              } else {\n                emitSidebarEvent('sidebar.removeAssignee', user);\n              }\n            }\n\n            if (getSelected().find((u) => u === gon.current_user_id)) {\n              $assignToMeLink.hide();\n            } else {\n              $assignToMeLink.show();\n            }\n          }\n\n          const page = $('body').attr('data-page');\n          const isIssueIndex = page === 'projects:issues:index';\n          const isMRIndex = page === page && page === 'projects:merge_requests:index';\n          if (\n            $dropdown.hasClass('js-filter-bulk-update') ||\n            $dropdown.hasClass('js-issuable-form-dropdown')\n          ) {\n            e.preventDefault();\n\n            const isSelecting = user.id !== selectedId;\n            selectedId = isSelecting ? user.id : selectedIdDefault;\n\n            if (selectedId === gon.current_user_id) {\n              $('.assign-to-me-link').hide();\n            } else {\n              $('.assign-to-me-link').show();\n            }\n            return;\n          }\n          if (handleClick) {\n            e.preventDefault();\n            handleClick(user, isMarking);\n          } else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {\n            return Issuable.filterResults($dropdown.closest('form'));\n          } else if ($dropdown.hasClass('js-filter-submit')) {\n            return $dropdown.closest('form').submit();\n          } else if (!$dropdown.hasClass('js-multiselect')) {\n            const selected = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${$dropdown.data('fieldName')}']`)\n              .val();\n            return assignTo(selected);\n          }\n\n          // Automatically close dropdown after assignee is selected\n          // since CE has no multiple assignees\n          // EE does not have a max-select\n          if ($dropdown.data('maxSelect') && getSelected().length === $dropdown.data('maxSelect')) {\n            // Close the dropdown\n            $dropdown.dropdown('toggle');\n          }\n        },\n        id(user) {\n          return user.id;\n        },\n        opened(e) {\n          const $el = $(e.currentTarget);\n          const selected = getSelected();\n          $el.find('.is-active').removeClass('is-active');\n\n          function highlightSelected(id) {\n            $el.find(`li[data-user-id=\"${id}\"] .dropdown-menu-user-link`).addClass('is-active');\n          }\n\n          if (selected.length > 0) {\n            getSelected().forEach((selectedId) => highlightSelected(selectedId));\n          } else {\n            highlightSelected(selectedId);\n          }\n        },\n        updateLabel: $dropdown.data('dropdownTitle'),\n        renderRow(user) {\n          const username = user.username ? `@${user.username}` : '';\n          const avatar = user.avatar_url ? user.avatar_url : gon.default_avatar_url;\n\n          let selected = false;\n\n          if (this.multiSelect) {\n            selected = getSelected().find((u) => user.id === u);\n\n            const { fieldName } = this;\n            const field = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${fieldName}'][value='${user.id}']`);\n\n            if (field.length) {\n              selected = true;\n            }\n          } else {\n            selected = user.id === selectedId;\n          }\n\n          let img = '';\n          if (user.beforeDivider != null) {\n            `<li><a href='#' class='${selected === true ? 'is-active' : ''}'>${escape(\n              user.name,\n            )}</a></li>`;\n          } else {\n            // 0 margin, because it's now handled by a wrapper\n            img = `<img src='${avatar}' alt='' class='avatar avatar-inline !gl-m-0' width='32' />`;\n          }\n\n          return userSelect.renderRow(\n            options.issuableType,\n            user,\n            selected,\n            username,\n            img,\n            elsClassName,\n          );\n        },\n      })\n        .get()\n        .map((dropdown) => dropdown.GitLabDropdownInstance);\n    })\n    .get();\n}\n\n// Return users list. Filtered by query\n// Only active users retrieved\nUsersSelect.prototype.users = function (query, options, callback) {\n  const url = this.buildUrl(this.usersPath);\n  const params = {\n    search: query,\n    active: true,\n    ...getAjaxUsersSelectParams(options, AJAX_USERS_SELECT_PARAMS_MAP),\n  };\n\n  const isMergeRequest = options.issuableType === TYPE_MERGE_REQUEST;\n  const isEditMergeRequest = !options.issuableType && options.iid && options.targetBranch;\n  const isNewMergeRequest = !options.issuableType && !options.iid && options.targetBranch;\n\n  if (isMergeRequest || isEditMergeRequest || isNewMergeRequest) {\n    params.merge_request_iid = options.iid || null;\n    params.approval_rules = true;\n  }\n\n  if (isMergeRequest && options.showSuggested) {\n    params.show_suggested = true;\n  }\n\n  if (isNewMergeRequest) {\n    params.target_branch = options.targetBranch || null;\n  }\n\n  return axios.get(url, { params }).then(({ data }) => {\n    callback(data);\n  });\n};\n\nUsersSelect.prototype.buildUrl = function (url) {\n  if (gon.relative_url_root != null) {\n    url = gon.relative_url_root.replace(/\\/$/, '') + url;\n  }\n  return url;\n};\n\n// eslint-disable-next-line max-params\nUsersSelect.prototype.renderRow = function (\n  issuableType,\n  user,\n  selected,\n  username,\n  img,\n  elsClassName,\n) {\n  const tooltip = issuableType === TYPE_MERGE_REQUEST && !user.can_merge ? __('Cannot merge') : '';\n  const tooltipClass = tooltip ? `has-tooltip` : '';\n  const selectedClass = selected === true ? 'is-active' : '';\n  const linkClasses = `${selectedClass} ${tooltipClass}`;\n  const tooltipAttributes = tooltip\n    ? `data-container=\"body\" data-placement=\"left\" data-title=\"${tooltip}\"`\n    : '';\n  const dataUserSuggested = user.suggested ? `data-user-suggested=${user.suggested}` : '';\n\n  const busyBadge =\n    user?.availability && isUserBusy(user.availability)\n      ? `<span class=\"badge badge-warning badge-pill gl-badge sm\">${__('Busy')}</span>`\n      : '';\n  return `\n    <li data-user-id=${user.id} ${dataUserSuggested}>\n      <a href=\"#\" class=\"dropdown-menu-user-link !gl-flex gl-items-center ${linkClasses}\" ${tooltipAttributes}>\n        ${this.renderRowAvatar(issuableType, user, img)}\n        <span class=\"gl-flex gl-flex-col gl-overflow-hidden\">\n          <strong class=\"dropdown-menu-user-full-name gl-font-bold\">\n            ${escape(user.name)}\n            ${busyBadge}\n          </strong>\n          ${\n            username\n              ? `<span class=\"dropdown-menu-user-username gl-text-subtle\">${escape(\n                  username,\n                )}</span>`\n              : ''\n          }\n          ${this.renderApprovalRules(elsClassName, user.applicable_approval_rules)}\n        </span>\n      </a>\n    </li>\n  `;\n};\n\nUsersSelect.prototype.renderRowAvatar = function (issuableType, user, img) {\n  if (user.beforeDivider) {\n    return img;\n  }\n\n  const mergeIcon =\n    issuableType === TYPE_MERGE_REQUEST && !user.can_merge\n      ? spriteIcon('warning-solid', 's12 merge-icon')\n      : '';\n\n  return `<span class=\"gl-relative gl-mr-3\">\n    ${img}\n    ${mergeIcon}\n  </span>`;\n};\n\nUsersSelect.prototype.renderApprovalRules = function (elsClassName, approvalRules = []) {\n  const count = approvalRules.length;\n\n  if (!elsClassName?.includes('reviewer') || !count) {\n    return '';\n  }\n\n  const [rule] = approvalRules;\n  const countText = sprintf(__('(+%{count}&nbsp;rules)'), { count });\n  const renderApprovalRulesCount = count > 1 ? `<span class=\"gl-ml-2\">${countText}</span>` : '';\n  const ruleName = rule.rule_type === 'code_owner' ? __('Code Owner') : escape(rule.name);\n\n  return `<div class=\"gl-flex gl-text-sm\">\n    <span class=\"gl-truncate\" title=\"${ruleName}\">${ruleName}</span>\n    ${renderApprovalRulesCount}\n  </div>`;\n};\n\nexport default UsersSelect;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CrmContacts\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Issue\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"customerRelationsContacts\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"firstName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lastName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"email\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"organization\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":226}};\n    doc.loc.source = {\"body\":\"fragment CrmContacts on Issue {\\n  id\\n  customerRelationsContacts {\\n    nodes {\\n      id\\n      firstName\\n      lastName\\n      email\\n      phone\\n      description\\n      organization {\\n        id\\n        name\\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[\"CrmContacts\"] = oneQuery(doc, \"CrmContacts\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-editable-item',{ref:\"editable\",staticClass:\"block weight\",attrs:{\"title\":_vm.$options.i18n.weight,\"tracking\":_vm.$options.tracking,\"loading\":_vm.isLoading,\"data-testid\":\"sidebar-weight\"},on:{\"open\":function($event){_vm.oldIid = null},\"close\":function($event){return _vm.setWeight()}},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_c('div',{staticClass:\"hide-collapsed gl-flex gl-items-center\"},[_c('span',{class:_vm.hasWeight ? 'gl-font-bold gl-text-default' : 'gl-text-subtle',attrs:{\"data-testid\":\"sidebar-weight-value\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.weightLabel)+\"\\n      \")]),_vm._v(\" \"),(_vm.hasWeight && _vm.canUpdate)?_c('div',{staticClass:\"gl-flex\"},[_c('span',{staticClass:\"gl-mx-2\"},[_vm._v(\"-\")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"!gl-text-subtle\",attrs:{\"variant\":\"link\",\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.setWeight(true)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.removeWeight)+\"\\n        \")])],1):_vm._e()]),_vm._v(\" \"),_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon js-weight-collapsed-block\",attrs:{\"title\":_vm.tooltipTitle},on:{\"click\":_vm.expandSidebar}},[_c('gl-icon',{attrs:{\"size\":16,\"name\":\"weight\"}}),_vm._v(\" \"),(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"js-weight-collapsed-loading-icon\"}):_c('span',{staticClass:\"js-weight-collapsed-weight-label collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(\"\\n        \"+_vm._s(_vm.collapsedWeightLabel)+\"\\n        \"),(_vm.weight > _vm.$options.maxDisplayWeight)?[_vm._v(\"…\")]:_vm._e()],2)],1)]},proxy:true},{key:\"default\",fn:function(){return [_c('gl-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.handleFormSubmit()}}},[_c('gl-form-group',{attrs:{\"label\":_vm.__('Weight'),\"label-for\":\"weight-input\",\"label-sr-only\":\"\"}},[_c('gl-form-input',{directives:[{name:\"autofocusonshow\",rawName:\"v-autofocusonshow\"}],attrs:{\"id\":\"weight-input\",\"type\":\"number\",\"min\":\"0\",\"placeholder\":_vm.$options.i18n.inputPlaceholder},model:{value:(_vm.localWeight),callback:function ($$v) {_vm.localWeight=_vm._n($$v)},expression:\"localWeight\"}})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_weight_widget.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_weight_widget.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlButton,\n  GlForm,\n  GlFormGroup,\n  GlFormInput,\n  GlLoadingIcon,\n  GlIcon,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { createAlert } from '~/alert';\nimport { __, sprintf } from '~/locale';\nimport SidebarEditableItem from '~/sidebar/components/sidebar_editable_item.vue';\nimport { Tracking } from '~/sidebar/constants';\nimport autofocusonshow from '~/vue_shared/directives/autofocusonshow';\nimport { MAX_DISPLAY_WEIGHT } from '../../constants';\nimport { weightQueries } from '../../queries/constants';\n\nexport default {\n  tracking: {\n    event: Tracking.editEvent,\n    label: Tracking.rightSidebarLabel,\n    property: 'weight',\n  },\n  components: {\n    GlButton,\n    GlForm,\n    GlFormGroup,\n    GlFormInput,\n    GlIcon,\n    GlLoadingIcon,\n    SidebarEditableItem,\n  },\n  directives: {\n    autofocusonshow,\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: ['canUpdate'],\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      issuable: {},\n      loading: false,\n      oldIid: null,\n      localWeight: '',\n      previousWeight: null,\n    };\n  },\n  apollo: {\n    issuable: {\n      query() {\n        return weightQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: String(this.iid),\n        };\n      },\n      skip() {\n        return !this.iid;\n      },\n      update(data) {\n        return data.workspace?.issuable || {};\n      },\n      error() {\n        createAlert({\n          message: sprintf(__('Something went wrong while setting %{issuableType} weight.'), {\n            issuableType: this.issuableType,\n          }),\n        });\n      },\n      result({ data }) {\n        this.localWeight = data?.workspace.issuable.weight ?? '';\n      },\n      subscribeToMore: {\n        document() {\n          return weightQueries[this.issuableType].subscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return this.skipIssueWeightSubscription;\n        },\n      },\n    },\n  },\n  computed: {\n    weight() {\n      return this.issuable.weight ?? null;\n    },\n    isLoading() {\n      return this.$apollo.queries?.issuable?.loading || this.loading;\n    },\n    hasWeight() {\n      return this.weight !== null;\n    },\n    weightLabel() {\n      return this.hasWeight ? this.weight : this.$options.i18n.noWeightLabel;\n    },\n    tooltipTitle() {\n      let tooltipTitle = this.$options.i18n.weight;\n\n      if (this.hasWeight) {\n        tooltipTitle += ` ${this.weight}`;\n      }\n\n      return tooltipTitle;\n    },\n    collapsedWeightLabel() {\n      return this.hasWeight\n        ? this.weight.toString().substr(0, 5)\n        : this.$options.i18n.noWeightLabel;\n    },\n    issuableId() {\n      return this.issuable.id;\n    },\n    skipIssueWeightSubscription() {\n      return this.issuableType !== TYPE_ISSUE || !this.issuableId || this.isLoading;\n    },\n  },\n  watch: {\n    iid(_, oldVal) {\n      this.oldIid = oldVal;\n    },\n  },\n  methods: {\n    setWeight(remove) {\n      const shouldRemoveWeight = remove || this.localWeight === '';\n      const weight = shouldRemoveWeight ? null : this.localWeight;\n      const currentIid = shouldRemoveWeight ? this.iid : this.oldIid || this.iid;\n      const previousWeight = this.hasWeight ? this.weight : 0;\n      this.loading = true;\n      this.$apollo\n        .mutate({\n          mutation: weightQueries[this.issuableType].mutation,\n          variables: {\n            input: {\n              projectPath: this.fullPath,\n              iid: currentIid,\n              weight,\n            },\n          },\n        })\n        .then(({ data: { issuableSetWeight } }) => {\n          if (issuableSetWeight.errors?.length) {\n            createAlert({\n              message: issuableSetWeight.errors[0],\n            });\n          } else {\n            this.$emit('weightUpdated', {\n              weight: shouldRemoveWeight\n                ? null\n                : (issuableSetWeight?.issuable?.weight || 0) - previousWeight,\n              id: issuableSetWeight?.issuable?.id,\n            });\n          }\n        })\n        .catch(() => {\n          createAlert({\n            message: sprintf(__('Something went wrong while setting %{issuableType} weight.'), {\n              issuableType: this.issuableType,\n            }),\n          });\n        })\n        .finally(() => {\n          this.loading = false;\n        });\n    },\n    expandSidebar() {\n      this.$refs.editable.expand();\n      this.$emit('expandSidebar');\n    },\n    handleFormSubmit() {\n      this.$refs.editable.collapse({ emitEvent: false });\n      this.setWeight();\n    },\n  },\n  i18n: {\n    weight: __('Weight'),\n    noWeightLabel: __('None'),\n    removeWeight: __('remove weight'),\n    inputPlaceholder: __('Enter a number'),\n  },\n  maxDisplayWeight: MAX_DISPLAY_WEIGHT,\n};\n</script>\n\n<template>\n  <sidebar-editable-item\n    ref=\"editable\"\n    :title=\"$options.i18n.weight\"\n    :tracking=\"$options.tracking\"\n    :loading=\"isLoading\"\n    class=\"block weight\"\n    data-testid=\"sidebar-weight\"\n    @open=\"oldIid = null\"\n    @close=\"setWeight()\"\n  >\n    <template #collapsed>\n      <div class=\"hide-collapsed gl-flex gl-items-center\">\n        <span\n          :class=\"hasWeight ? 'gl-font-bold gl-text-default' : 'gl-text-subtle'\"\n          data-testid=\"sidebar-weight-value\"\n        >\n          {{ weightLabel }}\n        </span>\n        <div v-if=\"hasWeight && canUpdate\" class=\"gl-flex\">\n          <span class=\"gl-mx-2\">-</span>\n          <gl-button\n            variant=\"link\"\n            class=\"!gl-text-subtle\"\n            :disabled=\"loading\"\n            @click=\"setWeight(true)\"\n          >\n            {{ $options.i18n.removeWeight }}\n          </gl-button>\n        </div>\n      </div>\n      <div\n        v-gl-tooltip.left.viewport\n        :title=\"tooltipTitle\"\n        class=\"sidebar-collapsed-icon js-weight-collapsed-block\"\n        @click=\"expandSidebar\"\n      >\n        <gl-icon :size=\"16\" name=\"weight\" />\n        <gl-loading-icon v-if=\"isLoading\" class=\"js-weight-collapsed-loading-icon\" />\n        <span\n          v-else\n          class=\"js-weight-collapsed-weight-label collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"\n        >\n          {{ collapsedWeightLabel }}\n          <template v-if=\"weight > $options.maxDisplayWeight\">&hellip;</template>\n        </span>\n      </div>\n    </template>\n    <template #default>\n      <gl-form @submit.prevent=\"handleFormSubmit()\">\n        <gl-form-group :label=\"__('Weight')\" label-for=\"weight-input\" label-sr-only>\n          <gl-form-input\n            id=\"weight-input\"\n            v-model.number=\"localWeight\"\n            v-autofocusonshow\n            type=\"number\"\n            min=\"0\"\n            :placeholder=\"$options.i18n.inputPlaceholder\"\n          />\n        </gl-form-group>\n      </gl-form>\n    </template>\n  </sidebar-editable-item>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_weight_widget.vue?vue&type=template&id=7659b7b4\"\nimport script from \"./sidebar_weight_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_weight_widget.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 { takeRightWhile } from 'lodash';\n\nexport function getSymbol(type) {\n  if (type === 'new') return '+';\n  if (type === 'old') return '-';\n  return '';\n}\n\nfunction getLineNumber(lineRange, key) {\n  if (!lineRange || !key || !lineRange[key]) return '';\n  const { new_line: newLine, old_line: oldLine, type } = lineRange[key];\n  const otherKey = key === 'start' ? 'end' : 'start';\n\n  // By default we want to see the \"old\" or \"left side\" line number\n  // The exception is if the \"end\" line is on the \"right\" side\n  // `otherLineType` is only used if `type` is null to make sure the line\n  // number relfects the \"right\" side number, if that is the side\n  // the comment form is located on\n  const otherLineType = !type ? lineRange[otherKey]?.type : null;\n  const lineType = type || '';\n  let lineNumber = oldLine;\n  if (lineType === 'new' || otherLineType === 'new') lineNumber = newLine;\n  return (lineNumber && getSymbol(lineType) + lineNumber) || '';\n}\n\nexport function getStartLineNumber(lineRange) {\n  return getLineNumber(lineRange, 'start');\n}\n\nexport function getEndLineNumber(lineRange) {\n  return getLineNumber(lineRange, 'end');\n}\n\nexport function getLineClasses(line) {\n  const symbol = typeof line === 'string' ? line.charAt(0) : getSymbol(line?.type);\n\n  if (symbol !== '+' && symbol !== '-') return '';\n\n  return [\n    'gl-px-1 gl-rounded-small gl-border-solid gl-border-1 gl-border-white',\n    {\n      'gl-bg-green-100 gl-text-green-800': symbol === '+',\n      'gl-bg-red-100 gl-text-red-800': symbol === '-',\n    },\n  ];\n}\n\n// eslint-disable-next-line max-params\nexport function commentLineOptions(diffLines, startingLine, lineCode, side = 'left') {\n  const preferredSide = side === 'left' ? 'old_line' : 'new_line';\n  const fallbackSide = preferredSide === 'new_line' ? 'old_line' : 'new_line';\n  const notMatchType = (l) => l.type !== 'match';\n  const linesCopy = [...diffLines]; // don't mutate the argument\n  const startingLineCode = startingLine.line_code;\n\n  const currentIndex = linesCopy.findIndex((line) => line.line_code === lineCode);\n\n  // We're limiting adding comments to only lines above the current line\n  // to make rendering simpler. Future interations will use a more\n  // intuitive dragging interface that will make this unnecessary\n  const upToSelected = linesCopy.slice(0, currentIndex + 1);\n\n  // Only include the lines up to the first \"Show unchanged lines\" block\n  // i.e. not a \"match\" type\n  const lines = takeRightWhile(upToSelected, notMatchType);\n\n  // If the selected line is \"hidden\" in an unchanged line block\n  // or \"above\" the current group of lines add it to the array so\n  // that the drop down is not defaulted to empty\n  const selectedIndex = lines.findIndex((line) => line.line_code === startingLineCode);\n  if (selectedIndex < 0) lines.unshift(startingLine);\n\n  return lines.map((l) => {\n    const { line_code, type, old_line, new_line } = l;\n    return {\n      value: { line_code, type, old_line, new_line },\n      text: `${getSymbol(type)}${l[preferredSide] || l[fallbackSide]}`,\n    };\n  });\n}\n\nexport function formatLineRange(start, end) {\n  const extractProps = ({ line_code, type, old_line, new_line }) => ({\n    line_code,\n    type,\n    old_line,\n    new_line,\n  });\n  return {\n    start: extractProps(start),\n    end: extractProps(end),\n  };\n}\n\nexport function getCommentedLines(selectedCommentPosition, diffLines) {\n  if (!selectedCommentPosition) {\n    // This structure simplifies the logic that consumes this result\n    // by keeping the returned shape the same and adjusting the bounds\n    // to something unreachable. This way our component logic stays:\n    // \"if index between start and end\"\n    return {\n      startLine: diffLines.length + 1,\n      endLine: diffLines.length + 1,\n    };\n  }\n\n  const findLineCodeIndex = (line) => (position) => {\n    return [position.line_code, position.left?.line_code, position.right?.line_code].includes(\n      line.line_code,\n    );\n  };\n\n  const { start, end } = selectedCommentPosition;\n  const startLine = diffLines.findIndex(findLineCodeIndex(start));\n  const endLine = diffLines.findIndex(findLineCodeIndex(end));\n\n  return { startLine, endLine };\n}\n","import initDiffsApp from '~/diffs';\nimport { initMrPage } from '~/pages/projects/merge_requests/page';\n\ninitMrPage();\ninitDiffsApp();\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"LastStateTransition\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Vulnerability\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stateTransitions\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"dismissalReason\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":134}};\n    doc.loc.source = {\"body\":\"fragment LastStateTransition on Vulnerability {\\n  stateTransitions(first: 1) {\\n    nodes {\\n      id\\n      dismissalReason\\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[\"LastStateTransition\"] = oneQuery(doc, \"LastStateTransition\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-shrink-0\",attrs:{\"icon\":\"spam\",\"title\":_vm.title,\"aria-label\":_vm.__('Hidden'),\"variant\":\"warning\"}})\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!./hidden_badge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./hidden_badge.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlTooltipDirective } from '@gitlab/ui';\nimport { issuableTypeText } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\n\nexport default {\n  components: {\n    GlBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    issuableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    title() {\n      return sprintf(__('This %{issuable} is hidden because its author has been banned.'), {\n        issuable: issuableTypeText[this.issuableType],\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-badge\n    v-gl-tooltip\n    icon=\"spam\"\n    :title=\"title\"\n    :aria-label=\"__('Hidden')\"\n    variant=\"warning\"\n    class=\"gl-shrink-0\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./hidden_badge.vue?vue&type=template&id=1689f2ee\"\nimport script from \"./hidden_badge.vue?vue&type=script&lang=js\"\nexport * from \"./hidden_badge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\n\nexport default function ({\n  idProp = vm => vm.item.id,\n} = {}) {\n  const store = {}\n  const vm = new Vue({\n    data () {\n      return {\n        store,\n      }\n    },\n  })\n\n  // @vue/component\n  return {\n    data () {\n      return {\n        idState: null,\n      }\n    },\n\n    created () {\n      this.$_id = null\n      if (typeof idProp === 'function') {\n        this.$_getId = () => idProp.call(this, this)\n      } else {\n        this.$_getId = () => this[idProp]\n      }\n      this.$watch(this.$_getId, {\n        handler (value) {\n          this.$nextTick(() => {\n            this.$_id = value\n          })\n        },\n        immediate: true,\n      })\n      this.$_updateIdState()\n    },\n\n    beforeUpdate () {\n      this.$_updateIdState()\n    },\n\n    methods: {\n      /**\n       * Initialize an idState\n       * @param {number|string} id Unique id for the data\n       */\n      $_idStateInit (id) {\n        const factory = this.$options.idState\n        if (typeof factory === 'function') {\n          const data = factory.call(this, this)\n          vm.$set(store, id, data)\n          this.$_id = id\n          return data\n        } else {\n          throw new Error('[mixin IdState] Missing `idState` function on component definition.')\n        }\n      },\n\n      /**\n       * Ensure idState is created and up-to-date\n       */\n      $_updateIdState () {\n        const id = this.$_getId()\n        if (id == null) {\n          console.warn(`No id found for IdState with idProp: '${idProp}'.`)\n        }\n        if (id !== this.$_id) {\n          if (!store[id]) {\n            this.$_idStateInit(id)\n          }\n          this.idState = store[id]\n        }\n      },\n    },\n  }\n}\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"issuableWeightUpdated\"},\"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\":\"issuableWeightUpdated\"},\"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\":\"WorkItem\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"widgets\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"WorkItemWidgetWeight\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"InlineFragment\",\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Issue\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"weight\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":308}};\n    doc.loc.source = {\"body\":\"subscription issuableWeightUpdated($issuableId: IssuableID!) {\\n  issuableWeightUpdated(issuableId: $issuableId) {\\n    ... on WorkItem {\\n      id\\n      widgets {\\n        ... on WorkItemWidgetWeight {\\n          type\\n          weight\\n        }\\n      }\\n    }\\n    ... on Issue {\\n      id\\n      weight\\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[\"issuableWeightUpdated\"] = oneQuery(doc, \"issuableWeightUpdated\");\n        \n","import GlIcon from '../../icon/icon';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxItem',\n  components: {\n    GlIcon\n  },\n  props: {\n    isSelected: {\n      type: Boolean,\n      default: false,\n      required: false\n    },\n    isFocused: {\n      type: Boolean,\n      default: false,\n      required: false\n    },\n    isCheckCentered: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    checkedClasses() {\n      if (this.isCheckCentered) {\n        return '';\n      }\n      return 'gl-mt-3 gl-self-start';\n    }\n  },\n  methods: {\n    toggleSelection() {\n      this.$emit('select', !this.isSelected);\n    },\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        stopEvent(event);\n        this.toggleSelection();\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"gl-new-dropdown-item\",attrs:{\"role\":\"option\",\"tabindex\":_vm.isFocused ? 0 : -1,\"aria-selected\":_vm.isSelected},on:{\"click\":_vm.toggleSelection,\"keydown\":_vm.onKeydown}},[_c('span',{staticClass:\"gl-new-dropdown-item-content\"},[_c('gl-icon',{class:[\n        'gl-new-dropdown-item-check-icon',\n        { 'gl-invisible': !_vm.isSelected },\n        _vm.checkedClasses ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"default\")],2)],1)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('timeline-entry-item',{staticClass:\"note system-note being-posted fade-in-half\"},[_c('div',{staticClass:\"timeline-content\"},[_c('em',[_vm._v(_vm._s(_vm.note.body))])])])\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!./placeholder_system_note.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!./placeholder_system_note.vue?vue&type=script&lang=js\"","<script>\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\n\n/**\n * Common component to render a placeholder system note.\n *\n * @example\n * <placeholder-system-note\n *  :note=\"{ body: 'Commands are being applied'}\"\n *  />\n */\nexport default {\n  name: 'PlaceholderSystemNote',\n  components: {\n    TimelineEntryItem,\n  },\n  props: {\n    note: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <timeline-entry-item class=\"note system-note being-posted fade-in-half\">\n    <div class=\"timeline-content\">\n      <em>{{ note.body }}</em>\n    </div>\n  </timeline-entry-item>\n</template>\n","import { render, staticRenderFns } from \"./placeholder_system_note.vue?vue&type=template&id=8ff41686\"\nimport script from \"./placeholder_system_note.vue?vue&type=script&lang=js\"\nexport * from \"./placeholder_system_note.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 * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n"],"sourceRoot":""}