{"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(/^
/, '');\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 >· {{ 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, ' ');\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, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\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 \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\">·</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\">·</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 * \n * \n * \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 ? `` : ``;\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 = '"') =>\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 = '"</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\">"@babel/core"</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">"^7.18.5"</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\">'rugged'</span>, <span class=\"hljs-string\">'~> 0.24.0'</span>)\n *\n * Group 1 (method) : s.add_dependency(\n * Group 2 (delimiter) : '\n * Group 3 (packageName): rugged\n * Group 4 (closeTag) : '</span>\n * Group 5 (rest) : \t, <span class=\"hljs-string\">'~> 0.24.0'</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 = '"</span>';\nconst importPathString =\n 'ImportPath"</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\">"ImportPath"</span><span class=\"hljs-punctuation\">:</span><span class=\"\"> </span><span class=\"hljs-string\">"github.com/ayufan/golang-kardianos-service"</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 = ''';\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\">'paranoia''\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 '"</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\">"AFNetworking/Security"</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 = '"</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\">"composer/installers"</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">"^1.2"</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} 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\">…</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":""}