{"version":3,"sources":["webpack:////build/source/node_modules/lodash/invert.js","webpack:///./sidebar/components/labels/labels_select_widget/label_item.vue","webpack:///./sidebar/components/labels/labels_select_widget/label_item.vue?8ba5","webpack:///sidebar/components/labels/labels_select_widget/label_item.vue","webpack:///./sidebar/components/labels/labels_select_widget/label_item.vue?1f7e","webpack:///./batch_comments/utils.js","webpack:////build/source/node_modules/lodash/_baseIntersection.js","webpack:////build/source/node_modules/pikaday/pikaday.js","webpack:///./lib/utils/resize_observer.js","webpack:///./graphql_shared/mutations/create_merge_request.mutation.graphql","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/js-yaml/lib/js-yaml/schema/core.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/ee/app/assets/javascripts/vue_merge_request_widget/queries/states/ready_to_merge.query.graphql","webpack:////build/source/node_modules/lodash/_stringSize.js","webpack:////build/source/ee/app/assets/javascripts/api.js","webpack:////build/source/node_modules/lodash/snakeCase.js","webpack:////build/source/ee/app/assets/javascripts/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql","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/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_execution/constants.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/timestamp.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:////build/source/node_modules/ieee754/index.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/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/ee/app/assets/javascripts/iterations/utils.js","webpack:///./batch_comments/constants.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:///./sidebar/components/labels/labels_select_widget/dropdown_footer.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_footer.vue?15fa","webpack:///sidebar/components/labels/labels_select_widget/dropdown_footer.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_footer.vue?85ba","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:////build/source/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/utils.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:///./sidebar/components/labels/labels_select_widget/dropdown_header.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_header.vue?c429","webpack:///sidebar/components/labels/labels_select_widget/dropdown_header.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_header.vue?135b","webpack:///./vue_merge_request_widget/queries/get_state.query.graphql","webpack:////build/source/node_modules/lodash/isBoolean.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/dumper.js","webpack:///./merge_requests/queries/title.subscription.graphql","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_epic.query.graphql","webpack:////build/source/node_modules/d3-array/src/ascending.js","webpack:////build/source/node_modules/d3-array/src/bisector.js","webpack:////build/source/node_modules/d3-array/src/bisect.js","webpack:////build/source/node_modules/d3-array/src/cross.js","webpack:////build/source/node_modules/d3-array/src/number.js","webpack:////build/source/node_modules/d3-array/src/extent.js","webpack:////build/source/node_modules/d3-array/src/array.js","webpack:////build/source/node_modules/d3-array/src/range.js","webpack:////build/source/node_modules/d3-array/src/ticks.js","webpack:////build/source/node_modules/d3-array/src/threshold/sturges.js","webpack:////build/source/node_modules/d3-array/src/quantile.js","webpack:////build/source/node_modules/d3-array/src/max.js","webpack:////build/source/node_modules/d3-array/src/min.js","webpack:////build/source/node_modules/d3-array/src/sum.js","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/d3-path/src/index.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/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:////build/source/node_modules/d3-selection/src/matcher.js","webpack:////build/source/node_modules/lodash/_initCloneByTag.js","webpack:///./vue_shared/components/user_avatar/user_avatar_list.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_list.vue?fc99","webpack:///vue_shared/components/user_avatar/user_avatar_list.vue","webpack:///./vue_shared/components/user_avatar/user_avatar_list.vue?6d70","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:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/advanced_settings/constants.js","webpack:////build/source/node_modules/scrollparent/scrollparent.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type.js","webpack:////build/source/node_modules/lodash/_baseIsSet.js","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql","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:////build/source/node_modules/js-yaml/lib/js-yaml/mark.js","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_merge_request_widget/queries/states/new_ready_to_merge.query.graphql","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/@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:///./ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql","webpack:////build/source/node_modules/d3-selection/src/selector.js","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/local_storage_sync.vue?a4c7","webpack:///vue_shared/components/local_storage_sync.vue","webpack:///./vue_shared/components/local_storage_sync.vue","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/constants.js","webpack:///./issues/list/eventhub.js","webpack:///./notes/utils/get_notes_filter_data.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:///../images/vulnerability/kontra-logo.svg","webpack:///./security_configuration/constants.js","webpack:///../images/vulnerability/scw-logo.svg","webpack:///../images/vulnerability/secureflag-logo.svg","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/utils.js","webpack:///./issuable/issuable_bulk_update_actions.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/float.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:///./vue_merge_request_widget/stores/state_maps.js","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:///./ci/pipeline_mini_graph/graphql/queries/get_pipeline_stage_jobs.query.graphql","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:///./projects/commit/constants.js","webpack:///./notes/mixins/resolvable.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/mappers.js","webpack:///./vue_merge_request_widget/components/widget/status_icon.vue","webpack:///./vue_merge_request_widget/components/widget/status_icon.vue?9b89","webpack:///vue_merge_request_widget/components/widget/status_icon.vue","webpack:///./vue_merge_request_widget/components/widget/status_icon.vue?8148","webpack:////build/source/node_modules/lodash/orderBy.js","webpack:////build/source/node_modules/lodash/_arrayIncludesWith.js","webpack:///./sidebar/sidebar_bundle.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/constants.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:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue","webpack:///./ci/pipeline_mini_graph/utils/data_utils.js","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue?f504","webpack:///ci/pipeline_mini_graph/downstream_pipelines.vue","webpack:///./ci/pipeline_mini_graph/downstream_pipelines.vue?0382","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue?5247","webpack:///ci/pipeline_mini_graph/pipeline_stage_dropdown.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue?789d","webpack:///ci/pipeline_mini_graph/pipeline_stages.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue?93d4","webpack:///./ci/pipeline_mini_graph/pipeline_stage_dropdown.vue","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue?35b5","webpack:///./ci/pipeline_mini_graph/pipeline_stages.vue","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue?7660","webpack:///ci/pipeline_mini_graph/pipeline_mini_graph.vue","webpack:///./ci/pipeline_mini_graph/pipeline_mini_graph.vue?73e2","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/issuable_labels.subscription.graphql","webpack:////build/source/node_modules/lodash/difference.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/rule/scan_filters/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/animated_icon/animated_notifications_icon.js","webpack:///./vue_shared/components/help_popover.vue","webpack:///./vue_shared/components/help_popover.vue?68da","webpack:///vue_shared/components/help_popover.vue","webpack:///./vue_shared/components/help_popover.vue?ebac","webpack:///./import/constants.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/queries/states/auto_merge_enabled.query.graphql","webpack:///./vue_merge_request_widget/queries/merge_request_event_type.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/datetime_utility.js","webpack:///./security_configuration/graphql/configure_secret_detection.mutation.graphql","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/node_modules/js-yaml/lib/js-yaml/type/pairs.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:///./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/lodash/_asciiWords.js","webpack:////build/source/node_modules/d3-selection/src/selection/style.js","webpack:///./ci/pipelines_page/components/pipelines_artifacts.vue?4174","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/cron-validator/lib/index.js","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:////build/source/node_modules/d3-axis/src/array.js","webpack:////build/source/node_modules/d3-dispatch/src/dispatch.js","webpack:////build/source/node_modules/d3-color/src/define.js","webpack:////build/source/node_modules/d3-color/src/color.js","webpack:////build/source/node_modules/d3-interpolate/src/basis.js","webpack:////build/source/node_modules/d3-interpolate/src/constant.js","webpack:////build/source/node_modules/d3-interpolate/src/color.js","webpack:////build/source/node_modules/d3-interpolate/src/rgb.js","webpack:////build/source/node_modules/d3-interpolate/src/basisClosed.js","webpack:////build/source/node_modules/d3-interpolate/src/date.js","webpack:////build/source/node_modules/d3-interpolate/src/number.js","webpack:////build/source/node_modules/d3-interpolate/src/string.js","webpack:////build/source/node_modules/d3-timer/src/timer.js","webpack:////build/source/node_modules/d3-timer/src/timeout.js","webpack:////build/source/node_modules/d3-transition/src/transition/schedule.js","webpack:////build/source/node_modules/d3-transition/src/interrupt.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/parse.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/decompose.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/index.js","webpack:////build/source/node_modules/d3-transition/src/transition/tween.js","webpack:////build/source/node_modules/d3-transition/src/transition/interpolate.js","webpack:////build/source/node_modules/d3-transition/src/transition/attr.js","webpack:////build/source/node_modules/d3-transition/src/transition/attrTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/delay.js","webpack:////build/source/node_modules/d3-transition/src/transition/duration.js","webpack:////build/source/node_modules/d3-transition/src/transition/ease.js","webpack:////build/source/node_modules/d3-transition/src/transition/on.js","webpack:////build/source/node_modules/d3-transition/src/transition/remove.js","webpack:////build/source/node_modules/d3-transition/src/transition/selection.js","webpack:////build/source/node_modules/d3-transition/src/transition/style.js","webpack:////build/source/node_modules/d3-transition/src/transition/styleTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/textTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/index.js","webpack:////build/source/node_modules/d3-transition/src/transition/select.js","webpack:////build/source/node_modules/d3-transition/src/transition/selectAll.js","webpack:////build/source/node_modules/d3-transition/src/transition/filter.js","webpack:////build/source/node_modules/d3-transition/src/transition/merge.js","webpack:////build/source/node_modules/d3-transition/src/transition/transition.js","webpack:////build/source/node_modules/d3-transition/src/transition/text.js","webpack:////build/source/node_modules/d3-transition/src/transition/end.js","webpack:////build/source/node_modules/d3-transition/src/selection/transition.js","webpack:////build/source/node_modules/d3-ease/src/cubic.js","webpack:////build/source/node_modules/d3-transition/src/selection/index.js","webpack:////build/source/node_modules/d3-transition/src/selection/interrupt.js","webpack:////build/source/node_modules/d3-brush/src/brush.js","webpack:////build/source/node_modules/d3-chord/src/math.js","webpack:////build/source/node_modules/d3-chord/src/array.js","webpack:////build/source/node_modules/d3-collection/src/map.js","webpack:////build/source/node_modules/d3-collection/src/set.js","webpack:////build/source/node_modules/d3-contour/src/array.js","webpack:////build/source/node_modules/d3-quadtree/src/add.js","webpack:////build/source/node_modules/d3-quadtree/src/cover.js","webpack:////build/source/node_modules/d3-quadtree/src/quad.js","webpack:////build/source/node_modules/d3-quadtree/src/x.js","webpack:////build/source/node_modules/d3-quadtree/src/y.js","webpack:////build/source/node_modules/d3-quadtree/src/quadtree.js","webpack:////build/source/node_modules/d3-quadtree/src/data.js","webpack:////build/source/node_modules/d3-quadtree/src/extent.js","webpack:////build/source/node_modules/d3-quadtree/src/find.js","webpack:////build/source/node_modules/d3-quadtree/src/remove.js","webpack:////build/source/node_modules/d3-quadtree/src/root.js","webpack:////build/source/node_modules/d3-quadtree/src/size.js","webpack:////build/source/node_modules/d3-quadtree/src/visit.js","webpack:////build/source/node_modules/d3-quadtree/src/visitAfter.js","webpack:////build/source/node_modules/d3-force/src/simulation.js","webpack:////build/source/node_modules/d3-random/src/defaultSource.js","webpack:////build/source/node_modules/d3-random/src/normal.js","webpack:////build/source/node_modules/d3-random/src/uniform.js","webpack:////build/source/node_modules/d3-random/src/irwinHall.js","webpack:////build/source/node_modules/d3-random/src/logNormal.js","webpack:////build/source/node_modules/d3-random/src/bates.js","webpack:////build/source/node_modules/d3-random/src/exponential.js","webpack:////build/source/node_modules/d3-scale/src/array.js","webpack:////build/source/node_modules/d3-format/src/formatSpecifier.js","webpack:////build/source/node_modules/d3-format/src/formatDecimal.js","webpack:////build/source/node_modules/d3-format/src/exponent.js","webpack:////build/source/node_modules/d3-format/src/formatPrefixAuto.js","webpack:////build/source/node_modules/d3-format/src/defaultLocale.js","webpack:////build/source/node_modules/d3-format/src/formatRounded.js","webpack:////build/source/node_modules/d3-format/src/formatTypes.js","webpack:////build/source/node_modules/d3-format/src/identity.js","webpack:////build/source/node_modules/d3-format/src/locale.js","webpack:////build/source/node_modules/d3-format/src/formatGroup.js","webpack:////build/source/node_modules/d3-format/src/formatNumerals.js","webpack:////build/source/node_modules/d3-format/src/formatTrim.js","webpack:////build/source/node_modules/d3-time/src/interval.js","webpack:////build/source/node_modules/d3-time/src/year.js","webpack:////build/source/node_modules/d3-time/src/month.js","webpack:////build/source/node_modules/d3-time/src/week.js","webpack:////build/source/node_modules/d3-time/src/duration.js","webpack:////build/source/node_modules/d3-time/src/day.js","webpack:////build/source/node_modules/d3-time/src/hour.js","webpack:////build/source/node_modules/d3-time/src/minute.js","webpack:////build/source/node_modules/d3-time/src/second.js","webpack:////build/source/node_modules/d3-time/src/millisecond.js","webpack:////build/source/node_modules/d3-time/src/utcWeek.js","webpack:////build/source/node_modules/d3-time/src/utcDay.js","webpack:////build/source/node_modules/d3-time/src/utcYear.js","webpack:////build/source/node_modules/d3-time-format/src/locale.js","webpack:////build/source/node_modules/d3-time-format/src/defaultLocale.js","webpack:////build/source/node_modules/d3-scale/src/time.js","webpack:////build/source/node_modules/d3-time/src/utcMonth.js","webpack:////build/source/node_modules/d3-time/src/utcHour.js","webpack:////build/source/node_modules/d3-time/src/utcMinute.js","webpack:////build/source/node_modules/d3-voronoi/src/RedBlackTree.js","webpack:////build/source/node_modules/d3-voronoi/src/Edge.js","webpack:////build/source/node_modules/d3-voronoi/src/Cell.js","webpack:////build/source/node_modules/d3-voronoi/src/Circle.js","webpack:////build/source/node_modules/d3-voronoi/src/Beach.js","webpack:////build/source/node_modules/d3-voronoi/src/Diagram.js","webpack:////build/source/node_modules/d3-interpolate/src/zoom.js","webpack:////build/source/node_modules/d3-zoom/src/transform.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:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/client/queries/shared_drawer_state.query.graphql","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:////build/source/node_modules/d3-sankey/src/align.js","webpack:////build/source/node_modules/d3-sankey/src/constant.js","webpack:////build/source/node_modules/d3-sankey/src/sankey.js","webpack:////build/source/node_modules/d3-shape/src/array.js","webpack:////build/source/node_modules/d3-shape/src/constant.js","webpack:////build/source/node_modules/d3-shape/src/point.js","webpack:////build/source/node_modules/d3-shape/src/link/index.js","webpack:////build/source/node_modules/d3-sankey/src/sankeyLinkHorizontal.js","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:////build/source/node_modules/d3-path/src/path.js","webpack:///./commit/pipelines/utils.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/bool.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/queries/approvals.subscription.graphql","webpack:////build/source/node_modules/lodash/delay.js","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/js-yaml/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/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:////build/source/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","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:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/typedefs.graphql","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/lib/settings.js","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:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/lib/from_yaml.js","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:///./ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql","webpack:////build/source/node_modules/lodash/_baseInverter.js","webpack:///./vue_merge_request_widget/components/action_buttons.vue","webpack:///./vue_merge_request_widget/components/action_buttons.vue?a563","webpack:///vue_merge_request_widget/components/action_buttons.vue","webpack:///./vue_merge_request_widget/components/action_buttons.vue?c0c7","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/binary.js","webpack:///./ci/pipeline_mini_graph/graphql/fragments/job.fragment.graphql","webpack:////build/source/node_modules/lodash/_createSet.js","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/vue_shared/security_reports/mixins/reports_mixin.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:////build/source/node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:////build/source/node_modules/esprima/dist/esprima.js","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/d3-selection/src/selection/sparse.js","webpack:////build/source/node_modules/d3-selection/src/selection/enter.js","webpack:////build/source/node_modules/d3-selection/src/selection/data.js","webpack:////build/source/node_modules/d3-selection/src/selection/sort.js","webpack:////build/source/node_modules/d3-selection/src/selection/call.js","webpack:////build/source/node_modules/d3-selection/src/selection/attr.js","webpack:////build/source/node_modules/d3-selection/src/selection/property.js","webpack:////build/source/node_modules/d3-selection/src/selection/classed.js","webpack:////build/source/node_modules/d3-selection/src/selection/text.js","webpack:////build/source/node_modules/d3-selection/src/selection/html.js","webpack:////build/source/node_modules/d3-selection/src/selection/raise.js","webpack:////build/source/node_modules/d3-selection/src/selection/lower.js","webpack:////build/source/node_modules/d3-selection/src/creator.js","webpack:////build/source/node_modules/d3-selection/src/selection/insert.js","webpack:////build/source/node_modules/d3-selection/src/selection/remove.js","webpack:////build/source/node_modules/d3-selection/src/selection/clone.js","webpack:////build/source/node_modules/d3-selection/src/selection/dispatch.js","webpack:////build/source/node_modules/d3-selection/src/selection/index.js","webpack:////build/source/node_modules/d3-selection/src/selection/select.js","webpack:////build/source/node_modules/d3-selection/src/selection/selectAll.js","webpack:////build/source/node_modules/d3-selection/src/selection/filter.js","webpack:////build/source/node_modules/d3-selection/src/constant.js","webpack:////build/source/node_modules/d3-selection/src/selection/exit.js","webpack:////build/source/node_modules/d3-selection/src/selection/join.js","webpack:////build/source/node_modules/d3-selection/src/selection/merge.js","webpack:////build/source/node_modules/d3-selection/src/selection/order.js","webpack:////build/source/node_modules/d3-selection/src/selection/nodes.js","webpack:////build/source/node_modules/d3-selection/src/selection/node.js","webpack:////build/source/node_modules/d3-selection/src/selection/size.js","webpack:////build/source/node_modules/d3-selection/src/selection/empty.js","webpack:////build/source/node_modules/d3-selection/src/selection/each.js","webpack:////build/source/node_modules/d3-selection/src/selection/append.js","webpack:////build/source/node_modules/d3-selection/src/selection/datum.js","webpack:////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:////build/source/node_modules/@gitlab/favicon-overlay/lib/index.js","webpack:///./lib/utils/favicon.js","webpack:///./notes/utils.js","webpack:///./vue_merge_request_widget/queries/states/ready_to_merge_merge_request.fragment.graphql","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:///./diffs/event_hub.js","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:////build/source/node_modules/lodash/_baseDifference.js","webpack:///./blob/blob_fork_suggestion.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/mixins/assign_reviewers_action_button.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/d3-selection/src/namespace.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/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:///./notes/graphql/note.query.graphql","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:////build/source/ee/app/assets/javascripts/vue_shared/components/pipeline_account_verification_alert.vue","webpack:///../../../ee/app/assets/javascripts/vue_shared/components/pipeline_account_verification_alert.vue","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/pipeline_account_verification_alert.vue?5159","webpack:////build/source/ee/app/assets/javascripts/vue_shared/components/pipeline_account_verification_alert.vue?5f17","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/js-yaml/lib/js-yaml/common.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/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:///./notes/components/discussion_navigator.vue?16dc","webpack:///notes/components/discussion_navigator.vue","webpack:///./notes/components/discussion_navigator.vue","webpack:///./vue_merge_request_widget/components/approvals/messages.js","webpack:///./vue_merge_request_widget/mixins/approvals.js","webpack:///./vue_merge_request_widget/components/state_container.vue?6aa3","webpack:///vue_merge_request_widget/components/state_container.vue","webpack:///./vue_merge_request_widget/components/state_container.vue?bf44","webpack:///./vue_merge_request_widget/components/state_container.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/policy_approval_settings_icon.vue?a33f","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/policy_approval_settings_icon.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/policy_approval_settings_icon.vue?e89d","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/policy_approval_settings_icon.vue","webpack:///./vue_merge_request_widget/components/approvals/approvals_summary.vue?f728","webpack:///vue_merge_request_widget/components/approvals/approvals_summary.vue","webpack:///./vue_merge_request_widget/components/approvals/approvals_summary.vue?c3d9","webpack:///./vue_merge_request_widget/components/approvals/approvals_summary.vue","webpack:///./vue_merge_request_widget/components/approvals/approvals_summary_optional.vue?487d","webpack:///vue_merge_request_widget/components/approvals/approvals_summary_optional.vue","webpack:///./vue_merge_request_widget/components/approvals/approvals.vue?4ecb","webpack:///vue_merge_request_widget/components/approvals/approvals.vue","webpack:///./vue_merge_request_widget/components/approvals/approvals_summary_optional.vue?84b4","webpack:///./vue_merge_request_widget/components/approvals/approvals_summary_optional.vue","webpack:///./vue_merge_request_widget/components/approvals/approvals.vue?c5b7","webpack:///./vue_merge_request_widget/components/approvals/approvals.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_auth.vue?dd07","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_auth.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_auth.vue?ab18","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_auth.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_popover.vue?bf0b","webpack:///../../../ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_popover.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_rule_popover.vue?1805","webpack:///../../../ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_rule_popover.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_popover.vue?5028","webpack:////build/source/ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_popover.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_rule_popover.vue?36e0","webpack:////build/source/ee/app/assets/javascripts/approvals/components/mr_widget_approval_check/approval_check_rule_popover.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approved_icon.vue?2ef7","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approved_icon.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approved_icon.vue?7ceb","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approved_icon.vue","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/number_of_approvals.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/number_of_approvals.vue?ed28","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/number_of_approvals.vue?6ddd","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/number_of_approvals.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_users_list.vue?03c5","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_users_list.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_users_list.vue?9957","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_users_list.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/utils.js","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_list.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_list.vue?0081","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_footer.vue?3f80","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_footer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_list.vue?624c","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_list.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue?0a0b","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_footer.vue?fdad","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals_footer.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue?32cc","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/approvals.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js","webpack:///./vue_merge_request_widget/stores/get_state_key.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/stores/get_state_key.js","webpack:///./lib/utils/finite_state_machine.js","webpack:///./vue_merge_request_widget/stores/mr_widget_store.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/stores/state_maps.js","webpack:///./lib/utils/notify.js","webpack:///./vue_merge_request_widget/components/loading.vue?e57d","webpack:///vue_merge_request_widget/components/loading.vue","webpack:///./vue_merge_request_widget/components/loading.vue?6166","webpack:///./vue_merge_request_widget/components/loading.vue","webpack:///./vue_merge_request_widget/components/mr_widget_alert_message.vue?7cef","webpack:///vue_merge_request_widget/components/mr_widget_alert_message.vue","webpack:///./vue_merge_request_widget/components/mr_widget_alert_message.vue?c7a1","webpack:///./vue_merge_request_widget/components/mr_widget_alert_message.vue","webpack:///./vue_merge_request_widget/stores/artifacts_list/mutation_types.js","webpack:///./vue_merge_request_widget/stores/artifacts_list/actions.js","webpack:///./vue_merge_request_widget/stores/artifacts_list/getters.js","webpack:///./vue_merge_request_widget/stores/artifacts_list/mutations.js","webpack:///./vue_merge_request_widget/stores/artifacts_list/index.js","webpack:///./vue_merge_request_widget/components/artifacts_list.vue?2097","webpack:///vue_merge_request_widget/components/artifacts_list.vue","webpack:///./vue_merge_request_widget/components/artifacts_list.vue?dfda","webpack:///./vue_merge_request_widget/components/artifacts_list.vue","webpack:///./vue_merge_request_widget/components/mr_collapsible_extension.vue?4afa","webpack:///vue_merge_request_widget/components/mr_collapsible_extension.vue","webpack:///./vue_merge_request_widget/components/mr_collapsible_extension.vue?525c","webpack:///./vue_merge_request_widget/components/mr_collapsible_extension.vue","webpack:///./vue_merge_request_widget/components/artifacts_list_app.vue?c9ea","webpack:///vue_merge_request_widget/components/artifacts_list_app.vue","webpack:///./vue_merge_request_widget/stores/artifacts_list/state.js","webpack:///./vue_merge_request_widget/components/artifacts_list_app.vue?8b30","webpack:///./vue_merge_request_widget/components/artifacts_list_app.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_actions.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_action_button.vue?94fc","webpack:///vue_merge_request_widget/components/deployment/deployment_action_button.vue","webpack:///./vue_merge_request_widget/components/deployment/constants.js","webpack:///./vue_merge_request_widget/components/deployment/deployment_action_button.vue?059d","webpack:///./vue_merge_request_widget/components/deployment/deployment_action_button.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_view_button.vue?4fa8","webpack:///vue_merge_request_widget/components/deployment/deployment_view_button.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_actions.vue?1e74","webpack:///vue_merge_request_widget/components/deployment/deployment_actions.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_view_button.vue?0a9b","webpack:///./vue_merge_request_widget/components/deployment/deployment_view_button.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_actions.vue?062f","webpack:///./vue_merge_request_widget/components/deployment/deployment_info.vue?ddae","webpack:///vue_merge_request_widget/components/deployment/deployment_info.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment.vue?57b2","webpack:///vue_merge_request_widget/components/deployment/deployment.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_info.vue?53e4","webpack:///./vue_merge_request_widget/components/deployment/deployment_info.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_list.vue?d9a9","webpack:///vue_merge_request_widget/components/deployment/deployment_list.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment.vue?68b4","webpack:///./vue_merge_request_widget/components/deployment/deployment.vue","webpack:///./vue_merge_request_widget/components/deployment/deployment_list.vue?b071","webpack:///./vue_merge_request_widget/components/deployment/deployment_list.vue","webpack:///./vue_merge_request_widget/components/mr_widget_container.vue?a182","webpack:///./vue_merge_request_widget/components/mr_widget_container.vue","webpack:///ci/pipelines_page/components/pipelines_artifacts.vue","webpack:///./ci/pipelines_page/components/pipelines_artifacts.vue?7574","webpack:///./ci/pipelines_page/components/pipelines_artifacts.vue?77bd","webpack:///./ci/pipelines_page/components/pipelines_artifacts.vue?414d","webpack:///./ci/pipelines_page/components/pipelines_artifacts.vue","webpack:///./vue_merge_request_widget/mixins/run_pipeline.js","webpack:///./vue_merge_request_widget/components/mr_widget_pipeline.vue?6fae","webpack:///vue_merge_request_widget/components/mr_widget_pipeline.vue","webpack:///./vue_merge_request_widget/components/mr_widget_pipeline_container.vue?5a91","webpack:///vue_merge_request_widget/components/mr_widget_pipeline_container.vue","webpack:///./vue_merge_request_widget/components/mr_widget_pipeline.vue?9923","webpack:///./vue_merge_request_widget/components/mr_widget_pipeline.vue","webpack:///./vue_merge_request_widget/components/mr_widget_pipeline_container.vue?51ba","webpack:///./vue_merge_request_widget/components/mr_widget_pipeline_container.vue","webpack:///./vue_shared/components/dismissible_container.vue?0272","webpack:///vue_shared/components/dismissible_container.vue","webpack:///./vue_shared/components/dismissible_container.vue?56b1","webpack:///./vue_shared/components/dismissible_container.vue","webpack:///./vue_merge_request_widget/components/mr_widget_icon.vue?4aa2","webpack:///vue_merge_request_widget/components/mr_widget_icon.vue","webpack:///./vue_merge_request_widget/components/mr_widget_icon.vue?ca90","webpack:///./vue_merge_request_widget/components/mr_widget_icon.vue","webpack:///vue_merge_request_widget/components/mr_widget_suggest_pipeline.vue","webpack:///./vue_merge_request_widget/components/mr_widget_suggest_pipeline.vue?eb2d","webpack:///./vue_merge_request_widget/components/mr_widget_suggest_pipeline.vue?f690","webpack:///./vue_merge_request_widget/components/mr_widget_suggest_pipeline.vue","webpack:///vue_merge_request_widget/components/mr_widget_migrate_jenkins.vue","webpack:///./vue_merge_request_widget/components/mr_widget_migrate_jenkins.vue?e43b","webpack:///./vue_merge_request_widget/components/mr_widget_migrate_jenkins.vue?22b7","webpack:///./vue_merge_request_widget/components/mr_widget_migrate_jenkins.vue","webpack:///./vue_merge_request_widget/components/source_branch_removal_status.vue?8305","webpack:///vue_merge_request_widget/components/source_branch_removal_status.vue","webpack:///./vue_merge_request_widget/components/source_branch_removal_status.vue?89cc","webpack:///./vue_merge_request_widget/components/source_branch_removal_status.vue","webpack:///./vue_merge_request_widget/components/bold_text.vue?a3d8","webpack:///vue_merge_request_widget/components/bold_text.vue","webpack:///./vue_merge_request_widget/components/bold_text.vue?6972","webpack:///./vue_merge_request_widget/components/bold_text.vue","webpack:///vue_merge_request_widget/components/states/mr_widget_archived.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_archived.vue?903e","webpack:///./vue_merge_request_widget/components/states/mr_widget_archived.vue?4aaa","webpack:///./vue_merge_request_widget/components/states/mr_widget_archived.vue","webpack:///./vue_merge_request_widget/mixins/auto_merge.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/mixins/auto_merge.js","webpack:///./vue_merge_request_widget/components/mr_widget_author.vue?7895","webpack:///vue_merge_request_widget/components/mr_widget_author.vue","webpack:///./vue_merge_request_widget/components/mr_widget_author.vue?8dfc","webpack:///./vue_merge_request_widget/components/mr_widget_author.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue?698a","webpack:///vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue?80f5","webpack:///./vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue?1a5b","webpack:///vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue?9ee6","webpack:///./vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_checking.vue?c550","webpack:///vue_merge_request_widget/components/states/mr_widget_checking.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_checking.vue?9c32","webpack:///./vue_merge_request_widget/components/states/mr_widget_checking.vue","webpack:///./vue_merge_request_widget/i18n.js","webpack:///vue_merge_request_widget/components/states/mr_widget_preparing.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_preparing.vue?e05c","webpack:///./vue_merge_request_widget/components/states/mr_widget_preparing.vue?eec1","webpack:///./vue_merge_request_widget/components/states/mr_widget_preparing.vue","webpack:///./vue_merge_request_widget/components/mr_widget_author_time.vue?aed3","webpack:///vue_merge_request_widget/components/mr_widget_author_time.vue","webpack:///./vue_merge_request_widget/components/mr_widget_author_time.vue?a1a2","webpack:///./vue_merge_request_widget/components/mr_widget_author_time.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_closed.vue?b487","webpack:///vue_merge_request_widget/components/states/mr_widget_closed.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_closed.vue?159d","webpack:///./vue_merge_request_widget/components/states/mr_widget_closed.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_failed_to_merge.vue?d739","webpack:///vue_merge_request_widget/components/states/mr_widget_failed_to_merge.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_failed_to_merge.vue?1d45","webpack:///./vue_merge_request_widget/components/states/mr_widget_failed_to_merge.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_merged.vue?d4b1","webpack:///vue_merge_request_widget/components/states/mr_widget_merged.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_merged.vue?308e","webpack:///./vue_merge_request_widget/components/states/mr_widget_merged.vue","webpack:///vue_merge_request_widget/components/states/mr_widget_merging.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_merging.vue?e1b4","webpack:///./vue_merge_request_widget/components/states/mr_widget_merging.vue?8194","webpack:///./vue_merge_request_widget/components/states/mr_widget_merging.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_missing_branch.vue?36b9","webpack:///vue_merge_request_widget/components/states/mr_widget_missing_branch.vue","webpack:///./vue_merge_request_widget/components/states/mr_widget_missing_branch.vue?5200","webpack:///./vue_merge_request_widget/components/states/mr_widget_missing_branch.vue","webpack:///./vue_merge_request_widget/components/states/nothing_to_merge.vue?2e77","webpack:///vue_merge_request_widget/components/states/nothing_to_merge.vue","webpack:///./vue_merge_request_widget/components/states/nothing_to_merge.vue?1cf6","webpack:///./vue_merge_request_widget/components/states/nothing_to_merge.vue","webpack:///./vue_merge_request_widget/mixins/ready_to_merge.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js","webpack:///vue_merge_request_widget/components/added_commit_message.vue","webpack:///./vue_merge_request_widget/components/added_commit_message.vue?7261","webpack:///./vue_merge_request_widget/components/added_commit_message.vue?7c51","webpack:///./vue_merge_request_widget/components/added_commit_message.vue","webpack:///./vue_merge_request_widget/components/mr_widget_related_links.vue?9ccc","webpack:///vue_merge_request_widget/components/mr_widget_related_links.vue","webpack:///./vue_merge_request_widget/components/mr_widget_related_links.vue?3c30","webpack:///./vue_merge_request_widget/components/mr_widget_related_links.vue","webpack:///./vue_merge_request_widget/components/states/commit_edit.vue?d083","webpack:///vue_merge_request_widget/components/states/commit_edit.vue","webpack:///./vue_merge_request_widget/components/states/commit_edit.vue?6776","webpack:///./vue_merge_request_widget/components/states/commit_edit.vue","webpack:///./vue_merge_request_widget/components/states/commit_message_dropdown.vue?05dc","webpack:///vue_merge_request_widget/components/states/commit_message_dropdown.vue","webpack:///./vue_merge_request_widget/components/states/commit_message_dropdown.vue?231f","webpack:///./vue_merge_request_widget/components/states/commit_message_dropdown.vue","webpack:///./vue_merge_request_widget/components/states/squash_before_merge.vue?1adf","webpack:///vue_merge_request_widget/components/states/squash_before_merge.vue","webpack:///./vue_merge_request_widget/components/states/squash_before_merge.vue?4cbc","webpack:///./vue_merge_request_widget/components/states/squash_before_merge.vue","webpack:///./vue_merge_request_widget/components/states/merge_failed_pipeline_confirmation_dialog.vue?8f34","webpack:///vue_merge_request_widget/components/states/merge_failed_pipeline_confirmation_dialog.vue","webpack:///./vue_merge_request_widget/components/states/merge_failed_pipeline_confirmation_dialog.vue?faba","webpack:///./vue_merge_request_widget/components/states/merge_failed_pipeline_confirmation_dialog.vue","webpack:///vue_merge_request_widget/components/states/ready_to_merge.vue","webpack:///./vue_merge_request_widget/components/states/ready_to_merge.vue?074f","webpack:///./vue_merge_request_widget/components/states/ready_to_merge.vue?e30a","webpack:///./vue_merge_request_widget/components/states/ready_to_merge.vue","webpack:///./vue_merge_request_widget/components/states/sha_mismatch.vue?a2fb","webpack:///vue_merge_request_widget/components/states/sha_mismatch.vue","webpack:///./vue_merge_request_widget/components/states/sha_mismatch.vue?0645","webpack:///./vue_merge_request_widget/components/states/sha_mismatch.vue","webpack:///./vue_merge_request_widget/components/widget/app.vue?0eff","webpack:///vue_merge_request_widget/components/widget/app.vue","webpack:///./vue_merge_request_widget/components/widget/app.vue?0e21","webpack:///./vue_merge_request_widget/components/widget/app.vue","webpack:///./vue_merge_request_widget/components/states/new_ready_to_merge.vue?d704","webpack:///vue_merge_request_widget/components/states/new_ready_to_merge.vue","webpack:///./vue_merge_request_widget/components/states/new_ready_to_merge.vue?9ae7","webpack:///./vue_merge_request_widget/components/states/new_ready_to_merge.vue","webpack:///./vue_merge_request_widget/components/merge_checks.vue?8547","webpack:///vue_merge_request_widget/components/merge_checks.vue","webpack:///./vue_merge_request_widget/components/merge_checks.vue?7d8d","webpack:///./vue_merge_request_widget/components/merge_checks.vue","webpack:///./vue_merge_request_widget/mr_widget_options.vue?36d4","webpack:///vue_merge_request_widget/mr_widget_options.vue","webpack:///./vue_merge_request_widget/mr_widget_options.vue?df11","webpack:///./vue_merge_request_widget/mr_widget_options.vue","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_jira_association_missing.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_jira_association_missing.vue?d1c2","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_jira_association_missing.vue?8742","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_jira_association_missing.vue","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_policy_violation.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_policy_violation.vue?5c8d","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_policy_violation.vue?749d","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_policy_violation.vue","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_secondary_geo_node.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_secondary_geo_node.vue?319b","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_secondary_geo_node.vue?bd97","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_secondary_geo_node.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/widget/app.vue?950a","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/components/widget/app.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/widget/app.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue?f50d","webpack:///../../../ee/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue?2da3","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.vue","webpack:///./vue_merge_request_widget/index.js","webpack:///./mr_notes/init_notes.js","webpack:///./mr_notes/mount_app.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/td.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/ee/app/assets/javascripts/security_orchestration/utils.js","webpack:///./ci/mixins/delayed_job_mixin.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:///./notes/components/comment_type_dropdown.vue","webpack:///./notes/components/comment_type_dropdown.vue?30de","webpack:///notes/components/comment_type_dropdown.vue","webpack:///./notes/components/comment_type_dropdown.vue?fa53","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:///./sidebar/components/labels/labels_select_widget/labels_select_root.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view.vue?9ca6","webpack:///sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view.vue?1e44","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_contents_labels_view.vue","webpack:///./sidebar/components/labels/labels_select_widget/utils.js","webpack:///sidebar/components/labels/labels_select_widget/dropdown_contents.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_contents.vue?f68a","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_contents.vue?fcbc","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_contents.vue","webpack:///./sidebar/components/labels/labels_select_widget/embedded_labels_list.vue?8b9d","webpack:///sidebar/components/labels/labels_select_widget/embedded_labels_list.vue","webpack:///./sidebar/components/labels/labels_select_widget/embedded_labels_list.vue?5075","webpack:///./sidebar/components/labels/labels_select_widget/embedded_labels_list.vue","webpack:///./sidebar/components/labels/labels_select_widget/labels_select_root.vue?d5a3","webpack:///sidebar/components/labels/labels_select_widget/labels_select_root.vue","webpack:///./sidebar/components/labels/labels_select_widget/labels_select_root.vue?3d0f","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:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/resolvers/resolvers.js","webpack:////build/source/ee/app/assets/javascripts/vue_shared/security_configuration/graphql/provider.js","webpack:///./vue_merge_request_widget/queries/get_state.subscription.graphql","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:////build/source/ee/app/assets/javascripts/security_orchestration/graphql/queries/get_file.query.graphql","webpack:///./vue_shared/directives/autofocusonshow.js","webpack:////build/source/node_modules/core-js/internals/regexp-flags.js","webpack:////build/source/node_modules/isarray/index.js","webpack:////build/source/ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue?8dd1","webpack:///../../../ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue","webpack:////build/source/ee/app/assets/javascripts/approvals/components/rules/empty_rule_approvers.vue?bd36","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/@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:///./vue_shared/components/notes/skeleton_note.vue","webpack:///./vue_shared/components/notes/skeleton_note.vue?f249","webpack:///vue_shared/components/notes/skeleton_note.vue","webpack:///./vue_shared/components/notes/skeleton_note.vue?55c3","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:////build/source/node_modules/js-yaml/lib/js-yaml/schema.js","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/js-yaml/lib/js-yaml/type/int.js","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:///./notes/components/notes_app.vue","webpack:///./notes/components/note_preview.vue?6047","webpack:///notes/components/note_preview.vue","webpack:///./notes/components/note_preview.vue?2d16","webpack:///./notes/components/note_preview.vue","webpack:///./notes/components/comment_form.vue?efb9","webpack:///notes/components/comment_form.vue","webpack:///./notes/components/comment_form.vue?74ee","webpack:///./notes/components/comment_form.vue","webpack:///./notes/components/discussion_filter_note.vue?3b85","webpack:///notes/components/discussion_filter_note.vue","webpack:///./notes/components/discussion_filter_note.vue?f4a4","webpack:///./notes/components/discussion_filter_note.vue","webpack:///./notes/components/ordered_layout.vue?a400","webpack:///notes/components/ordered_layout.vue","webpack:///./notes/components/ordered_layout.vue","webpack:///./notes/components/sidebar_subscription.vue?b9f5","webpack:///notes/components/sidebar_subscription.vue","webpack:///./notes/components/sidebar_subscription.vue","webpack:///notes/components/discussion_filter.vue","webpack:///./notes/components/discussion_filter.vue?3dbe","webpack:///./notes/components/notes_activity_header.vue?2f16","webpack:///notes/components/notes_activity_header.vue","webpack:///./notes/components/discussion_filter.vue?7ea1","webpack:///./notes/components/discussion_filter.vue","webpack:///./notes/components/notes_app.vue?584c","webpack:///notes/components/notes_app.vue","webpack:///./notes/components/notes_activity_header.vue?d0c9","webpack:///./notes/components/notes_activity_header.vue","webpack:///./notes/components/notes_app.vue?da28","webpack:////build/source/node_modules/lodash/uniq.js","webpack:////build/source/node_modules/lodash/_baseUniq.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/lib/vulnerability_states.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/lib/filters.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/lib/index.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/set.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/js-yaml/lib/js-yaml/type/merge.js","webpack:///./vue_merge_request_widget/services/mr_widget_service.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/node_modules/d3-selection/src/namespaces.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:///./vue_merge_request_widget/queries/states/missing_branch.query.graphql","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:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/lib/actions.js","webpack:///./vue_merge_request_widget/components/checks/constants.js","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/js-yaml/lib/js-yaml/exception.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:///./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:///./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:////build/source/node_modules/js-yaml/lib/js-yaml/type/omap.js","webpack:///./diffs/utils/file_reviews.js","webpack:///./right_sidebar.js","webpack:///./lib/utils/simple_poll.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scope/constants.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:////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/ee/app/assets/javascripts/security_orchestration/graphql/mutations/create_policy.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_escalation_policies.query.graphql","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/str.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/toggle/toggle.js","webpack:///./diffs/utils/queue_events.js","webpack:////build/source/node_modules/d3-selection/src/window.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/label/label.js","webpack:///./vue_merge_request_widget/queries/states/ready_to_merge.fragment.graphql","webpack:////build/source/node_modules/core-js/modules/es.regexp.flags.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/mixins/has-listener.js","webpack:///./vue_merge_request_widget/queries/states/ready_to_merge.subscription.graphql","webpack:///./security_configuration/graphql/configure_iac.mutation.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/queries/states/merge_train_position.fragment.graphql","webpack:///./sidebar/components/sidebar_editable_item.vue","webpack:///./sidebar/components/sidebar_editable_item.vue?0348","webpack:///sidebar/components/sidebar_editable_item.vue","webpack:///./sidebar/components/sidebar_editable_item.vue?6457","webpack:///./ci/constants.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/project_issue_parent.query.graphql","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:///./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:////build/source/node_modules/js-yaml/lib/js-yaml/type/map.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/seq.js","webpack:////build/source/node_modules/lodash/isRegExp.js","webpack:////build/source/node_modules/lodash/_hasUnicodeWord.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:////build/source/node_modules/lodash/_asciiSize.js","webpack:////build/source/node_modules/lodash/_copySymbolsIn.js","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/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?272b","webpack:///ci/common/private/job_name_component.vue","webpack:///./ci/common/private/job_name_component.vue?453a","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/type/js/function.js","webpack:///./vue_merge_request_widget/queries/states/auto_merge_enabled.fragment.graphql","webpack:////build/source/node_modules/base64-js/index.js","webpack:///./vue_merge_request_widget/mixins/merge_request_query_variables.js","webpack:///./security_configuration/graphql/configure_sast.mutation.graphql","webpack:///./vue_merge_request_widget/queries/merge_checks.query.graphql","webpack:///./ide/stores/utils.js","webpack:////build/source/node_modules/lodash/_cloneDataView.js","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_value.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_value.vue?1090","webpack:///sidebar/components/labels/labels_select_widget/dropdown_value.vue","webpack:///./sidebar/components/labels/labels_select_widget/dropdown_value.vue?9943","webpack:///./sidebar/utils.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/issue_escalation_policy.query.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/queries/approval_rules.subscription.graphql","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/schema/default_full.js","webpack:///./ci/utils.js","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/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/ee/app/assets/javascripts/approvals/constants.js","webpack:////build/source/node_modules/lodash/_unicodeWords.js","webpack:///./users_select/constants.js","webpack:////build/source/node_modules/lodash/deburr.js","webpack:////build/source/node_modules/d3-selection/src/select.js","webpack:////build/source/node_modules/lodash/takeRightWhile.js","webpack:///./vue_merge_request_widget/queries/states/auto_merge_failed.query.graphql","webpack:///./ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql","webpack:////build/source/node_modules/lodash/intersection.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/loader.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:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js","webpack:////build/source/node_modules/d3-selection/src/selectorAll.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/ee/app/assets/javascripts/security_orchestration/components/constants.js","webpack:////build/source/node_modules/js-yaml/lib/js-yaml/schema/json.js","webpack:////build/source/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:///./vue_merge_request_widget/components/mr_widget_status_icon.vue","webpack:///./vue_merge_request_widget/components/mr_widget_status_icon.vue?f2cf","webpack:///vue_merge_request_widget/components/mr_widget_status_icon.vue","webpack:///./vue_merge_request_widget/components/mr_widget_status_icon.vue?1a3a","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:////build/source/ee/app/assets/javascripts/sidebar/queries/issue_escalation_policy.mutation.graphql","webpack:///./vue_merge_request_widget/components/review_app_link.vue","webpack:///./vue_merge_request_widget/components/review_app_link.vue?b656","webpack:///vue_merge_request_widget/components/review_app_link.vue","webpack:///./vue_merge_request_widget/components/review_app_link.vue?9abd","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:///./ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_modal.vue?21ee","webpack:///ci/common/private/job_action_modal.vue","webpack:///./ci/common/private/job_action_modal.vue?c514","webpack:///./ci/common/private/job_action_modal.vue","webpack:///ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_action_button.vue?28db","webpack:///./ci/common/private/job_dropdown_item.vue?1d97","webpack:///ci/common/private/job_dropdown_item.vue","webpack:///./ci/common/private/job_action_button.vue?6d71","webpack:///./ci/common/private/job_action_button.vue","webpack:///./ci/common/private/job_dropdown_item.vue?6f73","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/d3-selection/src/selection/on.js","webpack:////build/source/node_modules/lodash/_castSlice.js","webpack:///./pages/projects/merge_requests/show/index.js","webpack:////build/source/ee/app/assets/javascripts/pages/projects/merge_requests/show/index.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/epic.fragment.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/queries/states/merge_train_car_index.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:///./vue_merge_request_widget/queries/merge_checks.subscription.graphql","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scan_result/lib/rules.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:////build/source/node_modules/js-yaml/lib/js-yaml/type/null.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/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","webpack:////build/source/ee/app/assets/javascripts/security_orchestration/graphql/mutations/create_policy_project_async.mutation.graphql","webpack:///./vue_merge_request_widget/constants.js","webpack:////build/source/ee/app/assets/javascripts/sidebar/queries/constants.js","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/queries/approvals.query.graphql","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/ee/app/assets/javascripts/vue_merge_request_widget/queries/states/merge_train_car_count.fragment.graphql","webpack:///./users_select/utils.js","webpack:///./users_select/index.js","webpack:///./sidebar/queries/issue_crm_contacts.fragment.graphql","webpack:////build/source/node_modules/js-yaml/lib/js-yaml.js","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:///./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/node_modules/lodash/_cloneRegExp.js","webpack:////build/source/ee/app/assets/javascripts/graphql_shared/subscriptions/issuable_weight.subscription.graphql","webpack:////build/source/ee/app/assets/javascripts/vue_merge_request_widget/components/approvals/queries/approval_rules.query.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","props","label","type","required","component","_c","this","_self","staticClass","style","color","attrs","_v","_s","title","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","min","arrays","iteratee","comparator","includes","length","othLength","othIndex","caches","Array","maxLength","Infinity","array","undefined","index","seen","outer","computed","cache","push","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","trim","isArray","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","arr","ariaSelected","isEmpty","isDisabled","isToday","isSelected","hasEvent","isInRange","isStartRange","isEndRange","join","renderRow","days","isRowSelected","reverse","renderTitle","instance","c","refYear","randId","i","j","monthHtml","yearHtml","_o","isMinYear","isMaxYear","html","prev","next","Pikaday","options","self","config","_onMouseDown","target","event","srcElement","parentNode","prevMonth","setDate","getAttribute","hide","blur","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","max","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","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","interactionEvents","scrollToTargetOnResize","targetId","location","hash","scrollContainer","ScrollParent","getElementById","scrollContainerIsDocument","ro","ResizeObserver","entries","forEach","entry","CustomEvent","detail","containerEl","querySelector","interactionListenersAdded","keepTargetAtTop","anchorEl","scrollY","contentTop","scrollTo","removeListeners","unobserve","observe","doc","loc","source","definitionRefs","findOperation","name","definitions","element","def","refs","Set","collectFragmentReferences","node","kind","add","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","size","prevRefs","has","childRef","op","oneQuery","components","GlTooltip","GlAvatar","lazy","Boolean","default","imgSrc","String","defaultAvatarUrl","cssClasses","imgAlt","__","Number","tooltipText","tooltipPlacement","pseudo","sanitizedSource","baseSrc","maximumSize","_isObject","values","resultantSrcAttribute","placeholderImage","_vm","ref","class","backgroundImage","$scopedSlots","$refs","userAvatar","_t","_e","addition","sum","_len","arguments","numbers","_key","reduce","average","modulo","n","divisor","engineeringNotation","precision","invalidValues","NaN","num","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","Schema","include","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","subValue","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","find","$spriteIconElement","emojiName","addAward","getVotesBlock","getAwardUrl","method","args","$addBtn","_this2","$menu","positionMenu","showMenuElement","$createdMenu","isCreatingEmojiMenu","categoryMap","getEmojiCategoryMap","categoryNameKey","emojisInCategory","firstCategory","renderCategory","frequentlyUsedEmojis","getFrequentlyUsedEmojis","frequentlyUsedCatgegory","frequentEmojis","emojiMenuMarkup","insertAdjacentHTML","addRemainingEmojiMenuCategories","setupSearch","_this3","isAddingRemainingEmojiMenuCategories","menu","emojiContentElement","promiseChain","then","Promise","resolve","categoryMarkup","catch","err","Error","message","emojiList","_this4","_escape","glEmojiTag","sprite","css","outerHeight","offset","bp","getBreakpointSize","outerWidth","votesBlock","awardUrl","_this5","isMainAwardsBlock","isInVueNoteablePage","id","attr","toggleAwardEvent","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","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","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","acc","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","names","unique","defs","asciiSize","hasUnicode","unicodeSize","string","Api","geoSitePath","geoSitesPath","geoSitesStatusPath","ldapGroupsPath","subscriptionPath","childEpicPath","codeReviewAnalyticsPath","groupActivityIssuesPath","groupActivityMergeRequestsPath","groupActivityNewMembersPath","countriesPath","countryStatesPath","paymentFormPath","filePath","validatePaymentMethodPath","vulnerabilityPath","vulnerabilityActionPath","vulnerabilityIssueLinksPath","descendantGroupsPath","projectDeploymentFrequencyAnalyticsPath","projectGroupsPath","issueMetricImagesPath","issueMetricSingleImagePath","environmentApprovalPath","protectedEnvironmentsPath","mrStatusCheckRetryPath","protectedEnvironmentPath","aiCompletionsPath","aiEmbeddingsPath","aiChatPath","tanukiBotAskPath","userSubscription","namespaceId","url","buildUrl","encodeURIComponent","ldapGroups","provider","search","DEFAULT_PER_PAGE","createChildEpic","confidential","groupId","parentEpicId","parent_id","descendantGroups","codeReviewAnalytics","groupActivityMergeRequestsCount","groupPath","group_path","groupActivityIssuesCount","groupActivityNewMembersCount","fetchCountries","fetchStates","country","fetchPaymentFormParams","getFile","validatePaymentMethod","gitlabUserId","gitlab_user_id","changeVulnerabilityState","getGeoSites","getGeoSitesStatus","createGeoSite","site","updateGeoSite","put","removeGeoSite","deploymentFrequencies","projectId","fetchIssueMetricImages","issueIid","metricImagesUrl","uploadIssueMetricImage","urlText","contentTypeMultipartFormData","formData","FormData","updateIssueMetricImage","imageId","deleteMetricImage","individualMetricImageUrl","projectGroups","deploymentApproval","deploymentId","representedAs","approve","comment","status","represented_as","approveDeployment","rejectDeployment","protectedEnvironments","entityType","createProtectedEnvironment","protectedEnvironment","updateProtectedEnvironment","deleteProtectedEnvironment","requestAICompletions","model","prompt","rest","requestAIEmbeddings","requestAIChat","messages","requestTanukiBotResponse","q","snakeCase","createCompounder","word","toLowerCase","__vue_script__","vertical","__vue_component__","_h","$createElement","_g","$listeners","staticRenderFns","VueApollo","apolloProvider","defaultClient","createDefaultClient","scrollToContainer","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","sidebar","pageLayout","expandSidebar","paddingTop","actionRegex","scrollPositions","commitsTab","currentTab","diffsLoaded","diffsClass","commitsLoaded","isFixedLayoutPreferred","classList","contains","eventHub","createEventHub","loadedPages","setCurrentAction","bind","switchViewType","tabShown","clickTab","click","_event$state","skipScrolling","pathName","at","getActionFromHref","pathname","href","$on","unbindEvents","$off","storeScroll","recallScroll","storedPosition","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","history","pushState","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","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","prepend","removeAttribute","toggleDraftStatus","$this","shouldSubmit","form","$button","submit","decreaseCounter","by","first","addDelimiter","isReady","toast","titleEl","setUrlParams","DEFAULT_AGENT_NAME","AGENT_KEY","SCAN_EXECUTION_RULES_PIPELINE_KEY","SCAN_EXECUTION_RULES_SCHEDULE_KEY","SCAN_EXECUTION_RULES_LABELS","ADD_CONDITION_LABEL","CONDITIONS_LABEL","SCAN_EXECUTION_PIPELINE_RULE","SCAN_EXECUTION_SCHEDULE_RULE","SCAN_EXECUTION_RULE_SCOPE_BRANCH_KEY","SCAN_EXECUTION_RULE_SCOPE_AGENT_KEY","SCAN_EXECUTION_RULE_SCOPE_TYPE","SCAN_EXECUTION_RULE_PERIOD_DAILY_KEY","SCAN_EXECUTION_RULE_PERIOD_WEEKLY_KEY","SCAN_EXECUTION_RULE_PERIOD_TYPE","ACTION_RUNNER_TAG_MODE_SPECIFIC_TAG_KEY","ACTION_RUNNER_TAG_MODE_SELECTED_AUTOMATICALLY_KEY","TAGS_MODE_SELECTED_ITEMS","DEFAULT_SCANNER","REPORT_TYPE_SECRET_DETECTION","SCANNER_HUMANIZED_TEMPLATE","SCANNER_HUMANIZED_TEMPLATE_ALT","POLICY_ACTION_BUILDER_TAGS_ERROR_KEY","POLICY_ACTION_BUILDER_DAST_PROFILES_ERROR_KEY","RUNNER_TAGS_PARSING_ERROR","DAST_SCANNERS_PARSING_ERROR","ERROR_MESSAGE_MAP","Type","YAML_DATE_REGEXP","RegExp","YAML_TIMESTAMP_REGEXP","exec","construct","hour","minute","second","fraction","delta","UTC","setTime","instanceOf","represent","toISOString","textSelectionActive","sel","containsNode","baseIsSet","nodeUtil","nodeIsSet","read","buffer","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","s","pow","write","rt","log","LN2","baseClamp","toNumber","number","lower","upper","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","CHANGES_TAB","DISCUSSION_TAB","SHOW_TAB","REVIEW_BAR_VISIBLE_CLASS_NAME","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","mixins","getBvRadioGroup","isRadioGroup","GlFormRadio","directives","SafeHtml","inheritAttrs","onInput","onChange","$attrs","_l","option","idx","disabled","rawName","expression","GlDropdownItem","inject","footerCreateLabelTitle","footerManageLabelTitle","showManageLabelsItem","labelsManagePath","allowLabelCreate","nativeOn","$event","resetServiceWorkersPublicPath","relativeRootPath","__webpack_public_path__","footVariant","BTfoot","getBvTableRowGroup","getBvTable","isTfoot","bvTable","dark","isStacked","isResponsive","isStickyHeader","stickyHeader","tableVariant","bvAttrs","role","h","tfootClasses","tfootAttrs","bvListeners","normalizeSlot","timeFormatted","time","getTimeago","timeagoLanguageCode","tooltipTitle","asDateTimeFull","LOADING","ERROR","SUCCESS","STATUS_FAILED","STATUS_SUCCESS","STATUS_NEUTRAL","SLOT_SUCCESS","SLOT_LOADING","SLOT_ERROR","CODE_QUALITY_SCALE_KEY","SAST_SCALE_KEY","predicate","isPolicyInherited","inherited","policyHasNamespace","namespace","isDefaultMode","policyScope","complianceFrameworks","nodes","frameworks","excludingProjects","excluding","includingProjects","including","noScope","existingDefaultScope","_isEmpty","policyScopeHasExcludingProjects","policyScopeHasIncludingProjects","policyScopeProjectsKey","INCLUDING","EXCLUDING","policyScopeHasGroups","includingGroups","policyScopeHasComplianceFrameworks","policyScopeGroups","_policyScope$includin","policyExcludingProjects","_policyScope$excludin","policyScopeComplianceFrameworks","_policyScope$complian","policyScopeProjects","pageInfo","projects","isProject","namespaceType","NAMESPACE_TYPES","PROJECT","GROUP","isScanningReport","scanner","REPORT_TYPE_CONTAINER_SCANNING","REPORT_TYPE_DEPENDENCY_SCANNING","fromYaml","manifest","safeLoad","json","hasScheduledRule","policy","_policyObject","policyObject","yaml","__typename","POLICY_TYPE_COMPONENT_OPTIONS","scanExecution","typeName","rules","checkForPerformanceRisk","projectsCount","extractPolicyContent","withType","defaultPayload","parsingError","hasParsingError","urlParameter","isValidPolicyType","parsedYaml","extractedPolicy","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","len","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","p","$mirror","$flag","contentEditable","settings","iframe","contentWindow","contentDocument","caret","isPlainObject","apply","apis","GlSearchBoxByType","labelsCreateTitle","labelsListTitle","showDropdownContentsCreateView","labelsFetchInProgress","searchKey","isStandalone","dropdownTitle","focusInput","_this$$refs$searchInp","searchInput","_k","baseGetTag","isObjectLike","common","YAMLException","DEFAULT_FULL_SCHEMA","DEFAULT_SAFE_SCHEMA","_toString","_hasOwnProperty","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","encodeHex","character","handle","toUpperCase","repeat","State","schema","indent","noArrayIndent","skipInvalid","flowLevel","isNothing","styleMap","compiledTypeMap","styleAliases","compileStyleMap","sortKeys","lineWidth","noRefs","noCompatMode","condenseFlow","implicitTypes","compiledImplicit","explicitTypes","compiledExplicit","duplicates","usedDuplicates","indentString","spaces","ind","generateNextLine","level","isWhitespace","isPrintable","isPlainSafe","isNsChar","needIndentIndicator","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","char","prev_char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","charCodeAt","writeScalar","iskey","dump","testImplicitResolving","blockHeader","dropEndingNewline","moreIndented","lineRe","nextLF","foldLine","prevMoreIndented","prefix","foldString","nextChar","escapeSeq","escapeString","indentIndicator","clip","end","breakRe","start","curr","detectType","explicit","_result","typeList","defaultStyle","writeNode","block","compact","duplicateIndex","objectOrArray","objectKey","objectValue","explicitPair","pairBuffer","_tag","objectKeyList","writeBlockMapping","writeFlowMapping","arrayLevel","writeBlockSequence","writeFlowSequence","getDuplicateReferences","duplicatesIndexes","inspectNode","safeDump","f","compare","ascending","lo","hi","mid","ascendingBisect","bisector","bisectRight","bisect","valueof","stop","step","e10","sqrt","e5","e2","ticks","tickIncrement","isFinite","LN10","tickStep","step0","step1","i0","value0","CATEGORY_OPTIONS","GlTooltipDirective","GlLoadingIcon","UserAvatarImage","loading","participants","numberOfLessParticipants","showParticipantLabel","isShowingMoreParticipants","lessParticipants","visibleParticipants","hasMoreParticipants","toggleLabel","sprintf","moreCount","participantLabel","participantCount","toggleMoreParticipants","getParticipantId","participantId","getIdFromGraphQLId","participant","web_url","isItem","_item$text","itemValidator","group","hasOnlyListItemsVue2","defaultSlot","tags","vNode","_vNode$componentOptio","componentOptions","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","_vNode$type","isValidSlotTagVue3","hasOnlyListItems","version","HEALTH_STATUS_I18N_ASSIGN_HEALTH_STATUS","HEALTH_STATUS_I18N_NO_STATUS","HEALTH_STATUS_I18N_SELECT_HEALTH_STATUS","healthStatusDropdownOptions","GlCollapsibleListbox","healthStatus","selected","textSrOnly","dropdownText","healthStatusTextMap","open","$$v","stackedMixin","isStackedAlways","logError","console","matches","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","UserAvatarLink","breakpoint","imgSize","emptyText","isExpanded","visibleItems","hasHiddenItems","hasBreakpoint","expandText","expand","messageAdditionsDeletions","noFilesFound","noFileNameAvailable","searchFiles","variantCssColorMap","success","danger","GlDisclosureDropdown","GlIcon","changed","added","deleted","filteredFiles","fuzzaldrinPlus","dropdownItems","iconColor","messageChanged","focusFirstItem","additionsText","numberOfChanges","deletionsText","locals","content","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","CLOSED","OPEN","UNBLOCK_RULES_KEY","UNBLOCK_RULES_TEXT","regex","ps","getComputedStyle","getPropertyValue","scroll","overflow","HTMLElement","SVGElement","scrollingElement","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","alias","GlBadge","Mark","column","getSnippet","head","tail","snippet","where","_uniqueId","modalId","tooltipContainer","category","modalDomId","$nextTick","clipboard","ClipboardJS","$root","BV_HIDE_TOOLTIP","clearSelection","destroyed","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","freeze","not_diffable","image","diffViewerErrors","too_large","stored_externally","leftSidebarViews","review","rightSidebarViews","pipelines","keepAlive","jobsDetail","mergeRequestInfo","terminal","stageKeys","unstaged","staged","commitItemIconMap","modified","modalTypes","rename","tree","blob","commitActionTypes","update","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","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","toggleText","primary","variant","toggleId","noCaret","toggleAriaLabelledBy","listAriaLabelledBy","dropdownOffset","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","disclosureId","nextFocusedItemIndex","_this$items","$slots","baseDropdown","close","code","elements","getFocusableListItemElements","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","currentIndex","nextIndex","_elements$index","closeAndFocus","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","onShow","onHide","onBeforeClose","onKeydown","disclosureTag","handleAction","groupItem","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","description","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","discussionId","resolveDiscussion","isDraft","mapGetters","resolvedStatusMessage","discussionResolved","isDiscussionResolved","draft","discussion_id","discussionToBeResolved","resolve_discussion","showStaysResolved","componentClasses","resolveButtonTitle","resolvedBy","fileSize","fileSizeReadable","numberToHumanSize","fileName","pop","storageKey","asString","persist","clear","newVal","saveValue","serialize","removeItem","exists","getStorageValue","deserialize","warn","_isString","_this$$scopedSlots$de","_this$$scopedSlots","EDITOR_MODE_RULE","EDITOR_MODE_YAML","PARSING_ERROR_MESSAGE","ACTION_SECTION_DISABLE_ERROR","CONDITION_SECTION_DISABLE_ERROR","EDITOR_MODES","DELETE_MODAL_CONFIG","secondary","attributes","cancel","MATCH_ON_INCLUSION_LICENSE","DEFAULT_MR_TITLE","POLICY_RUN_TIME_MESSAGE","POLICY_RUN_TIME_TOOLTIP","SECURITY_POLICY_ACTIONS","APPEND","REMOVE","REPLACE","GRAPHQL_ERROR_MESSAGE","NO_RULE_MESSAGE","ACTIONS","variables","INVALID_RULE_MESSAGE","INVALID_PROTECTED_BRANCHES","ADD_RULE_LABEL","RULES_LABEL","ADD_ACTION_LABEL","ACTIONS_LABEL","RULE_OR_LABEL","SCOPE_LABEL","ACTION_AND_LABEL","RULE_MODE_SCANNERS","REPORT_TYPE_SAST","SAST_SHORT_NAME","REPORT_TYPE_SAST_IAC","SAST_IAC_SHORT_NAME","REPORT_TYPE_DAST","DAST_SHORT_NAME","SECRET_DETECTION_NAME","CONTAINER_SCANNING_NAME","DEPENDENCY_SCANNING_NAME","MAX_ALLOWED_RULES_LENGTH","MAX_ALLOWED_APPROVER_ACTION_LENGTH","PRIMARY_POLICY_KEYS","SPECIFIC_BRANCHES","ALL_BRANCHES","GROUP_DEFAULT_BRANCHES","PROJECT_DEFAULT_BRANCH","ALL_PROTECTED_BRANCHES","ANY_COMMIT","ANY_UNSIGNED_COMMIT","ANY_OPERATOR","GREATER_THAN_OPERATOR","LESS_THAN_OPERATOR","VULNERABILITIES_ALLOWED_OPERATORS","VULNERABILITY_AGE_OPERATORS","SCAN_RESULT_BRANCH_TYPE_OPTIONS","nameSpaceType","SCAN_EXECUTION_BRANCH_TYPE_OPTIONS","VALID_SCAN_EXECUTION_BRANCH_TYPE_OPTIONS","VALID_SCAN_RESULT_BRANCH_TYPE_OPTIONS","BRANCHES_KEY","BRANCH_TYPE_KEY","BRANCH_EXCEPTIONS_KEY","HUMANIZED_BRANCH_TYPE_TEXT_DICT","MORE_LABEL","MULTIPLE_SELECTED_LABEL","MULTIPLE_SELECTED_LABEL_SINGLE_OPTION","SELECTED_ITEMS_LABEL","ALL_SELECTED_LABEL","REGULAR_BRANCH","PROTECTED_BRANCH","BRANCH_TYPES","BRANCH_TYPES_ITEMS","mapToListboxItems","EXCEPTION_KEY","NO_EXCEPTION_KEY","EXCEPTION_TYPE_ITEMS","SPLIT_VIEW_MAX_WIDTH","SPLIT_VIEW_MIN_WIDTH","RULE_SECTION_INITIAL_WIDTH","RULE_SECTION_COLLAPSED_WIDTH","SPLIT_VIEW_HALF_WIDTH","RULE_SECTION_MAX_WIDTH","getNotesFilterData","notesFilterValue","valueData","notesFilters","filtersData","filtersParsed","$diffFile","userCanCreateNote","isParallelView","showButton","hideButton","buttonParentElement","getButtonParent","validateButtonParent","nextElementSibling","hoveredElement","previousElementSibling","viewModes","ImageFile","_defineProperty","wrap","availWidth","requestImageInfo","swipe","maxWidth","maxHeight","prepareFrames","$swipeFrame","$swipeWrap","$swipeBar","wrapPadding","initDraggable","dragTrackWidth","$frame","$frameAdded","$track","$dragger","framePadding","opacity","initViewModes","initView","viewMode","activateViewMode","views","padding","dragging","$body","$offsetEl","dragStart","dragStop","dragMove","pageX","touches","frame","img","domImg","complete","naturalWidth","naturalHeight","createImageBadge","classNames","buttonEl","addCommentIndicator","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","isCollapsed","imageWidth","imageHeight","widthRatio","heightRatio","round","generateBadgeFromDiscussionDOM","firstNoteEl","getTargetSelection","offsetX","offsetY","actualWidth","actualHeight","normalizedX","normalizedY","ImageDiff","canCreateNote","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","getOwnPropertyNames","viewType","super","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","isOpen","collapsedContent","loadingContent","hasError","getContentHTML","$file","FilesCommentButton","initImageDiffHelper","isBound","toArray","formatElementToObject","_merge","fileHash","rawButton","renderedButton","renderedViewer","rawViewer","isLocked","firstFile","handleClickUnfold","handleClickLineNum","handleParallelLineDown","$e","viewTypeSwitch","getLocationHash","highlightSelectedLine","openAnchoredDiff","prepareRenderedDiff","since","unfold","prevNewLine","link","replaceWith","locationHash","anchoredDiff","clickTarget","lineClass","originalEvent","diffSource","$diffFiles","allElements","elementsForRenderedDiff","fileElements","onclick","showRawViewer","showRenderedViewer","arrayReduce","deburr","words","reApos","sendEmail","GlModal","GlFormInputGroup","HelpIcon","ModalCopyButton","GlModalDirective","issuableName","mailToLink","subject","new_address","newAddress","$toast","cancelHandler","modal","modifiers","resetIncomingEmailToken","ADVANCED_SAST_NAME","SAST_IAC_NAME","DAST_HELP_PATH","helpPagePath","CONTAINER_SCANNING_FOR_REGISTRY_NAME","COVERAGE_FUZZING_NAME","API_FUZZING_NAME","CLUSTER_IMAGE_SCANNING_NAME","PRE_RECEIVE_SECRET_DETECTION","PRE_RECEIVE_SECRET_DETECTION_NAME","SCANNER_NAMES_MAP","SAST","SAST_ADVANCED","SAST_IAC","DAST","API_FUZZING","CONTAINER_SCANNING","CONTAINER_SCANNING_FOR_REGISTRY","COVERAGE_FUZZING","SECRET_DETECTION","DEPENDENCY_SCANNING","CLUSTER_IMAGE_SCANNING","GENERIC","featureToMutationMap","mutationId","getMutationPayload","projectPath","mutation","configureSastMutation","configuration","global","pipeline","analyzers","configureSastIacMutation","configureSecretDetectionMutation","AUTO_DEVOPS_ENABLED_ALERT_DISMISSED_STORAGE_KEY","TEMP_PROVIDER_LOGOS","Kontra","svg","SecureFlag","TEMP_PROVIDER_URLS","TAB_VULNERABILITY_MANAGEMENT_INDEX","TRACK_TOGGLE_TRAINING_PROVIDER_ACTION","TRACK_TOGGLE_TRAINING_PROVIDER_LABEL","TRACK_CLICK_TRAINING_LINK_ACTION","TRACK_PROVIDER_LEARN_MORE_CLICK_ACTION","TRACK_PROVIDER_LEARN_MORE_CLICK_LABEL","TRACK_TRAINING_LOADED_ACTION","TRACK_PROMOTION_BANNER_CTA_CLICK_ACTION","TRACK_PROMOTION_BANNER_CTA_CLICK_LABEL","configurationHistory","securityTesting","latestPipelineDescription","securityConfiguration","vulnerabilityManagement","securityTraining","securityTrainingDescription","securityTrainingDoc","checkForErrors","errors","validationErrors","cause","modifyPolicy","assignedPolicyProject","namespacePath","yamlEditorValue","extraMergeRequestInput","newPolicyCommitBranch","scanExecutionPolicyCommit","branch","gqClient","mutate","createPolicy","mode","policyYaml","updatePolicy","mergeRequest","sourceBranch","targetBranch","mergeRequestCreate","createMergeRequestMutation","createMergeRequest","goToPolicyMR","assignedPolicyProjectFullPath","redirectToMergeRequest","assignSecurityPolicyProjectAsync","securityPolicyProjectCreateAsync","createPolicyProjectAsync","createHumanizedScanners","scanners","ruleHasConflictingKeys","rule","hasConflictingKeys","hasInvalidKey","allowedValues","isValidPolicy","primaryKeys","rulesKeys","actionsKeys","_policy$rules","_policy$rules2","_policy$actions","slugify","separator","slug","slugifyToArray","branches","hasInvalidCron","cronString","isValidCron","enforceIntValue","renderMultiSelectText","itemTypeName","useAllSelected","useSingleOption","itemsKeys","itemsKeysLength","defaultPlaceholder","commonItems","_intersection","commonItemsLength","oneItemLabel","multiSelectLabel","TEXT_TEMPLATE","NUMBER_TO_EXTRACT","moreLabel","numberOfAdditionalLabels","firstLabel","secondLabel","renderMultiselectLabel","parseCustomFileConfiguration","project","hasFilePath","hasRef","hasProjectPath","showLinkedFile","createProjectWithMinimumValues","mapExceptionsListBoxItem","full_path","mapObjectsToString","itemKey","hasDuplicates","findItemsWithErrors","mapKey","_items$filter","mapBranchesToExceptions","addIdsToPolicy","updatedPolicy","_policy$actions2","_policy$rules3","removeIdsFromPolicy","_policy$actions3","_policy$rules4","enabledRadioButtonTooltipText","getPolicyLimitDetails","policyLimitReached","policyLimit","initialValue","sprintfParameters","radioButton","isEqualOrUndefined","value1","value2","isCauseOfError","errorSources","sourcePrimaryKey","sourceIndex","sourceLocation","parseError","doesFileExist","_data$project","repository","blobs","getMergeRequestConfig","context","compliance_framework_name","frameworkName","compliance_framework_id","frameworkIdString","frameworkLink","gitlab_url","framework","policyBodyToYaml","policyToYaml","_window$gon","securityPoliciesNewYamlFormat","policyWithoutIds","payload","parseAllowDenyLicenseList","licenses","isDenied","DENIED","KEY","ALLOWED","license","_license$packages","exceptions","packages","purls","mapComponentLicenseFormatToYaml","findItemsIntersection","collectionOne","collectionTwo","mapperFn","approver","_isNumber","mappedId","convertToGraphQLId","mapYamlApproversActionsFormatToEditorFormat","group_approvers_ids","groupApproversIds","user_approvers_ids","userApproversIds","role_approvers","roleApprovers","user_approvers","userApprovers","group_approvers","groupApprovers","splitItemsByCommaOrSpace","parseExceptionsStringToItems","parsedExceptions","parsedWithErrorsExceptions","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","assignee_ids","$labelSelect","userCheckedIds","userUncheckedIds","checkedIdsToShow","_difference","_union","getOriginalCommonIds","indeterminateIdsToShow","getOriginalIndeterminateIds","labelIds","uniqueIds","issuableLabels","labelId","scopeEl","YAML_FLOAT_PATTERN","SCIENTIFIC_WITHOUT_DOT","base","digits","POSITIVE_INFINITY","NEGATIVE_INFINITY","isNegativeZero","res","locked","displayText","unlocked","Outside","isEditable","issue","issueCapitalized","mergeRequestCapitalized","lockingMergeRequest","unlockingMergeRequest","lockMergeRequest","unlockMergeRequest","lockedMessage","unlockedMessage","isLoading","isLockDialogOpen","isIssuable","getNoteableData","issuableDisplayName","issuableDisplayNameCapitalized","discussion_locked","lockStatus","lockToggleInProgressText","unlockingMergeRequestText","lockingMergeRequestText","lockToggleText","unlockMergeRequestText","lockMergeRequestText","lockedMessageText","unlockedMessageText","toggleForm","beforeDestroy","toggleLocked","updateLockedAttribute","alertMessage","closeForm","stateToComponentMap","merged","closed","merging","missingBranch","readyToMerge","nothingToMerge","archived","checking","preparing","pipelineFailed","failedToMerge","shaMismatch","mergeChecksFailed","stateKey","diffFileDiscussions","allDiscussions","clickedToggle","toggleDiscussion","calcPercent","renderedSize","DesignNotePin","imageDiffMixin","canComment","showCommentIcon","badgeClass","shouldToggleDiscussion","renderedWidth","renderedHeight","currentCommentForm","getCommentFormForDiffFile","_isArray","getImageDimensions","$parent","getPositionForObject","clickedImage","xPercent","yPercent","openDiffFileCommentForm","resolved","FEEDBACK_TYPE_ISSUE","FEEDBACK_TYPE_MERGE_REQUEST","REPORT_FILE_TYPES","ARCHIVE","TRACE","METADATA","REPORT_TYPE_CONTAINER_SCANNING_FOR_REGISTRY","REPORT_TYPE_CLUSTER_IMAGE_SCANNING","REPORT_TYPE_COVERAGE_FUZZING","REPORT_TYPE_API_FUZZING","reportTypeToSecurityReportTypeEnum","GlTruncate","timeagoMixin","cssClass","dateTimeFormat","DEFAULT_DATE_TIME_FORMAT","timeFormat","DATE_TIME_FORMATS","enableTruncation","timeAgo","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","msg","getApprovalRuleNamesLeft","multipleApprovalRulesAvailable","rulesLeft","_groupBy","_x$type","rule_type","RULE_TYPE_ANY_APPROVER","RULE_TYPE_REGULAR","RULE_TYPE_REPORT_APPROVER","RULE_TYPE_CODE_OWNER","iconName","iconAriaLabel","capitalizeFirstCharacter","backgroundClass","_this$$options$EXTENS","EXTENSION_ICON_CLASS","iconClass","_this$$options$EXTENS2","EXTENSION_ICON_NAMES","baseOrderBy","collection","iteratees","orders","mediator","Mediator","fetch","mountSidebar","DEFAULT_ASSIGNED_POLICY_PROJECT","PAGE_SIZE","GROUP_TYPE","ROLE_TYPE","USER_TYPE","MAX_SCAN_EXECUTION_ACTION_COUNT","fileSymlinkInformation","fileList","iteratedFile","includesSymlink","a_mode","b_mode","DIFF_FILE_SYMLINK_MODE","DIFF_FILE_DELETED_MODE","automaticallyCollapsed","manuallyCollapsed","forceOpen","isNotDiffable","viewerModes","_file$blob2","additionalProperties","drafts","load_collapsed_diff_url","_file$blob","getDerivedMergeRequestInformation","uuids","seeds","file_identifier_hash","identifier","order","collapsedType","_file$viewer2","DIFF_FILE_MANUAL_COLLAPSE","DIFF_FILE_AUTOMATIC_COLLAPSE","_file$viewer3","_file$viewer4","getShortShaFromFile","truncateSha","fileA","fileB","universal","stats","valid","percent","changeInPercent","old_size","new_size","countLinesInBetween","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","hasDetailedStatus","detailedStatus","CiIcon","pipelinePath","maxRenderedPipelines","totalPipelineCount","pipelinesTrimmed","shouldRenderCounter","counterLabel","counterTooltipText","pipelineTooltipText","_pipeline$project","_pipeline$detailedSta","loadingText","mergeTrainMessage","stage","stageJobsFetchError","viewStageLabel","JobDropdownItem","isMergeTrain","emits","isDropdownOpen","stageJobs","apollo","getQueryHeaders","graphqlEtag","getPipelineStageJobsQuery","skip","pollInterval","PIPELINE_POLL_INTERVAL_DEFAULT","_data$ciPipelineStage","ciPipelineStage","jobs","reportToSentry","dropdownHeaderText","dropdownTooltipTitle","graphqlEtagStagePath","$apollo","queries","toggleQueryPollingByVisibility","onHideDropdown","stopPolling","onShowDropdown","startPolling","stageAriaLabel","PipelineStageDropdown","job","stages","arrowStyles","DownstreamPipelines","PipelineStages","downstreamPipelines","pipelineStages","upstreamPipeline","formattedDownstreamPipelines","details","TYPENAME_CI_PIPELINE","formattedStages","TYPENAME_CI_STAGE","hasDownstreamPipelines","latestDownstreamPipelines","hasUpstreamPipeline","_this$upstreamPipelin","keepLatestDownstreamPipelines","upstreamPipelineStatus","_this$upstreamPipelin2","_this$upstreamPipelin3","upstreamTooltipText","_this$upstreamPipelin4","_this$upstreamPipelin5","baseDifference","baseRest","isArrayLikeObject","SEVERITY","STATUS","TYPE","ATTRIBUTE","AGE","ALLOW_DENY","UNKNOWN_LICENSE","AGE_TOOLTIP_MAXIMUM_REACHED","AGE_TOOLTIP_NO_PREVIOUSLY_EXISTING_VULNERABILITY","AGE_TOOLTIPS","FILTERS","LICENCE_FILTERS","ALLOWED_DENIED_OPTIONS","ALLOWED_DENIED_LISTBOX_ITEMS","AGE_DAY","AGE_INTERVALS","VULNERABILITY_AGE_ALLOWED_KEYS","FILTERS_STATUS_INDEX","FIX_AVAILABLE","FALSE_POSITIVE","VULNERABILITY_ATTRIBUTES","VULNERABILITY_ATTRIBUTE_OPERATORS","NEWLY_DETECTED","PREVIOUSLY_EXISTING","NEEDS_TRIAGE_PLURAL","NEEDS_TRIAGE_SINGULAR","APPROVAL_VULNERABILITY_STATE_GROUPS","APPROVAL_VULNERABILITY_STATES","new_needs_triage","new_dismissed","detected","confirmed","dismissed","DEFAULT_VULNERABILITY_STATES","APPROVAL_VULNERABILITY_STATES_FLAT","states","extends","iconStateClass","GlPopover","triggerClass","targetFn","_this$$refs$popoverTr","popoverTrigger","slot","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","date2","getDateInPast","daysInPast","getDateInFuture","daysInFuture","areDatesEqual","displayAsText","textSize","disableTooltip","statusText","statusClass","statusIcon","statusColor","textSizeClass","deburrLetter","basePropertyOf","pair","avatars","maxVisible","avatarSize","badgeSrOnlyText","badgeTooltipProp","badgeTooltipMaxChars","hiddenAvatars","16","32","badgeSize","collapsable","badgeTooltipTitle","badgeLabel","baseUniq","union","isProjectArchived","getNoteableDataByProp","archivedProjectDocsPath","lockedIssueDocsPath","notes","withBatchComments","_state$batchComments","batchComments","addReplyToReview","noteText","errorCallback","postData","reply_id","draft_note","for_commit","project_id","saveDraft","isReplying","handleClearForm","response","_response$data","reason","errorMessage","SAVING_THE_COMMENT_FAILED","SOMETHING_WENT_WRONG","addToReview","_diffFile$diff_refs","commentLineStart","formatLineRange","diffFileCommentForm","IMAGE_DIFF_POSITION_TYPE","diffFileHeadSha","_this2$line","closeDiffFileCommentForm","diffFileHash","FILE_DIFF_POSITION_TYPE","toggleFileCommentForm","file_path","_response$data2","cancelCommentForm","autosaveKey","clearDraft","resetAutoSave","showDraft","replyId","shouldRenderDraftRowInDiscussion","asciiWords","hasUnicodeWord","unicodeWords","pattern","backgroundClasses","warning","transform","computedValue","computedMax","renderInfo","innerCssClasses","hasFileSize","hasDimensions","safePath","encodeSaferUrl","resizeThrottled","onImgLoad","_throttle","calculateImgSize","timeout","contentImg","reAsciiWord","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","waitFor","getEl","interval","t","sleep","GlAlert","MarkdownField","LocalStorageSync","ContentEditor","setFacade","Function","renderMarkdownPath","uploadsPath","uploads_path","enableContentEditor","formFieldProps","autofocus","enableAutocomplete","autocompleteDataSources","supportsQuickActions","markdownDocsPath","drawioEnabled","disableAttachments","codeSuggestionsConfig","restrictedToolBarItems","restoreFromAutosave","editingMode","text_editor","EDITING_MODE_CONTENT_EDITOR","EDITING_MODE_MARKDOWN_FIELD","EDITING_MODE_KEY","autosaveValue","getDraft","alert","markdown","autofocused","isContentEditorActive","contentEditorAutofocused","markdownFieldRestrictedToolBarItems","restrictAttachments","isDefaultEditorEnabled","_window$gon2","_this$setFacade","autofocusTextarea","getValue","setValue","CLEAR_AUTOSAVE_ENTRY_EVENT","updateValue","autosizeTextarea","setTemplate","template","dismiss","applyTemplateAlert","primaryButtonText","secondaryButtonText","primaryAction","secondaryAction","updateMarkdownFromContentEditor","updateMarkdownFromMarkdownField","renderMarkdown","render_quick_actions","origin","otherData","onEditingModeChange","notifyEditingModeChange","onEditingModeRestored","componentToFocus","contentEditor","textarea","setEditorAsAutofocused","updateDraft","togglePreview","markdownField","previewMarkdown","Autosize","ctrlKey","metaKey","placeholder","domProps","canSuggest","showPopover","__assign","defineProperty","safeParseInt","isQuestionMark","validateForRange","condition","splits","endsWith","sides","isWildcard","_a","small","big","isValidRange","isValidStep","monthAlias","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","weekdaysAlias","sun","mon","tue","wed","thu","fri","sat","defaultOptions","seconds","allowBlankDay","allowSevenAsSunday","cron","checks","shift","hasValidSeconds","minutes","hours","hasValidMinutes","hasValidHours","hasValidDays","remappedMonths","hasValidMonths","remappedWeekdays","hasValidWeekdays","hasCompatibleDayFormat","unassigned","GlDropdownForm","GlDropdown","GlDropdownDivider","SidebarParticipant","headerText","allowMultipleAssignees","isEditing","issuableId","issuableAuthor","searchUsers","isSearching","participantsQueries","skipQuery","getStatus","_data$workspace","workspace","issuable","canMerge","userSearchQueries","searchUsersVariables","_data$workspace2","_user$mergeRequestInt","mergeRequestInteraction","isMergeRequest","TYPENAME_MERGE_REQUEST","_this$participants","filteredParticipants","mergedSearchResults","current","moveCurrentUserAndAuthorToStart","isSearchEmpty","shouldShowParticipants","isCurrentUserInList","noUsersFound","showCurrentUser","showAuthor","selectedFiltered","foundUsernames","filtered","selectedUserNames","unselectedFiltered","_this$users","selectedIsEmpty","debouncedSearchKeyUpdate","_debounce","setSearchKey","DEFAULT_DEBOUNCE_AND_THROTTLE_MS","selectAssignee","clearAndFocusSearch","unassign","unselect","focusSearch","showDropdown","showDivider","sortedUsers","_this5$issuableAuthor","unselectedUser","GlButtonGroup","glFeatureFlagsMixin","discussionNavigation","blocksMerge","jumpNext","jumpToNextDiscussion","jumpPrevious","jumpToPreviousDiscussion","allResolved","unresolvedDiscussionsCount","toggleThreadsLabel","allVisibleDiscussionsExpanded","nextUnresolvedDiscussionShortcutKey","shouldDisableShortcuts","keysFor","MR_NEXT_UNRESOLVED_DISCUSSION","nextUnresolvedDiscussionTitle","nextUnresolvedDiscussionTooltip","sanitize","previousUnresolvedDiscussionShortcutKey","MR_PREVIOUS_UNRESOLVED_DISCUSSION","previousUnresolvedDiscussionTitle","previousUnresolvedDiscussionTooltip","resolveAllDiscussionsIssuePath","create_issue_to_resolve_discussions_path","threadOptions","toggleAllVisibleDiscussions","extraAttrs","isNotificationsTodosButtons","glFeatures","notificationsTodosButtons","resolvableDiscussionsCount","initMrStateLazyLoad","mrNotes","reviewBarParams","discussionsEl","diffsEl","activeTab","notesDataset","diffsDataset","currentUserData","endpoints","metadata","endpointMetadata","mrPath","endpointBatch","endpointDiffForPath","endpointCoverage","endpointUpdateUser","updateCurrentUserPath","dismissEndpoint","showSuggestPopover","viewDiffsFileByFile","fileByFileDefault","defaultSuggestionCommitMessage","mrReviews","getReviewsForMergeRequest","DIFF_VIEW_COOKIE_NAME","INLINE_DIFF_VIEW_TYPE","setupMrNotesState","$once","ReviewBar","newCommentTemplatePaths","canSummarize","fetchDrafts","draftsCount","initReviewBar","discussionsCount","getters","discussionTabCounter","initOverviewTabCounter","DiscussionCounter","initDiscussionCounter","immediate","lazyLoadParams","mrShowNode","mrAction","initRevertCommitModal","initCherryPickCommitModal","initMrNotes","$subscribe","titleSubscription","mergeRequestMergeStatusUpdated","titleHtml","GlIntersectionObserver","StatusBadge","ImportedBadge","TodoWidget","SubscriptionsWidget","ClipboardButton","defaultBranchName","sourceProjectPath","isFluidLayout","isImported","isStickyHeaderVisible","discussionCounter","doneFetchingBatchDiscussions","badgeState","issuableIid","isSignedIn","isForked","source_branch","copySourceBranchTooltip","shouldShowTargetCopyButton","target_branch","setStickyHeaderVisible","visitTab","_window$mrTabs","safeHtmlConfig","ADD_TAGS","arg","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","EVT_MR_PREPARED","observeMergeRequestFinishingPreparation","copyReferenceText","reportAbuse","markAsReady","markAsDraft","closing","reopen","reopening","lock","mergeRequestActions","SidebarSubscriptionsWidget","AbuseCategorySelector","glFeatureFlagMixin","reportAbusePath","editUrl","isCurrentUser","defauilt","canUpdateMergeRequest","isMerged","sourceProjectMissing","clipboardText","reportedUserId","isLoadingDraft","isLoadingClipboard","isReportAbuseDrawerOpen","isDropdownVisible","draftLabel","draftState","editItem","showDropdownTooltip","draftAction","closeActionsDropdown","stateAction","api","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","hidden","imported","getStateQuery","MergeRequestHeader","initialState","copyReferenceButton","initShow","beforeCreate","initReportAbuse","MrMoreDropdown","initMrMoreDropdown","startCodeReviewMessaging","diffsEventHub","changesCountBadge","fileCount","diffStatsSummary","DIFF_TAB_INDEX","diffTab","initSidebarBundle","parsedData","StickyHeader","callbacks","Map","activeEventTypes","lastMousedown","globalListener","eventTypes","onMousedown","OutsideDirective","bindings","_ref3","modifiersList","parseBinding","eventType","startListening","unbind","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","DIFF_FILE","tooLarge","blobView","editInFork","fork","autoCollapsed","autoCollapsedGenerated","START_THREAD","SETTINGS_DROPDOWN","whitespace","fileByFile","preferences","CONFLICT_TEXT","both_modified","modified_source_removed_target","modified_target_removed_source","renamed_same_file","removed_source_renamed_target","removed_target_renamed_source","both_added","HIDE_COMMENTS","BUILDING_YOUR_MR","ERROR_LOADING_FULL_DIFF","ERROR_DISMISSING_SUGESTION_POPOVER","ENCODED_FILE_PATHS_TITLE","ENCODED_FILE_PATHS_MESSAGE","copyObject","noop","Dispatch","parseTypenames","typenames","types","typename","T","copy","that","definition","Color","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","g","rgbConvert","o","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","displayable","formatHsl","brighter","darker","linear","gamma","nogamma","exponential","rgbGamma","rgbSpline","spline","colors","reA","reB","taskHead","taskTail","am","bm","bs","bi","one","clockLast","clockNow","clockSkew","clock","performance","setFrame","clearNow","Timer","_call","_time","_next","timer","delay","restart","wake","timerFlush","t0","nap","poke","clearTimeout","TypeError","elapsed","emptyOn","emptyTween","schedules","__transition","tween","__data__","tick","duration","ease","timing","schedule","cssNode","cssRoot","cssView","svgNode","empty","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","scale","interpolateTransformCss","defaultView","decompose","interpolateTransformSvg","createElementNS","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","attrRemove","attrRemoveNS","fullname","removeAttributeNS","space","local","attrConstant","interpolate","string00","interpolate0","string1","string0","attrConstantNS","getAttributeNS","attrFunction","string10","attrFunctionNS","attrInterpolate","attrInterpolateNS","setAttributeNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","listener","on0","on1","sit","Selection","styleInterpolate","styleTween","textInterpolate","textTween","Transition","groups","_groups","_parents","_name","newId","selection_prototype","subgroups","subnode","subgroup","selectorAll","child","inherit","matcher","merge","groups0","groups1","m0","merges","group0","group1","id0","id1","styleNull","listener0","styleMaybeRemove","textFunction","textConstant","reject","interrupt","defaultTiming","number1","number2","cos","sin","proto","xm","ym","xp","yp","_root","leaf","x0","_x0","y0","_y0","x1","_x1","y1","_y1","_x","quadtree","Quadtree","addAll","leaf_copy","treeProto","cover","xz","yz","z","visit","extent","x2","y2","x3","y3","quads","radius","dx","dy","d2","retainer","previous","removeAll","visitAfter","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","normal","exp","sourceRandomLogNormal","randomIrwinHall","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","lambda","sourceRandomExponential","re","formatSpecifier","specifier","FormatSpecifier","fill","align","symbol","zero","comma","formatDecimalParts","coefficient","prefixExponent","exponent","toLocaleString","toPrecision","formatRounded","prefixes","locale","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","i1","formatTrim","formatPrefix","floori","offseti","d0","d1","setFullYear","weekday","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","getMilliseconds","getSeconds","getMinutes","getHours","getUTCSeconds","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","S","L","utcDate","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","u","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","week","X","utcFormat","utcParse","formatLocale","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","RedBlackTree","RedBlackNode","C","R","P","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","insert","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","arc","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","cx","epsilon2","ha","hc","circle","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","clipCells","edges","polygons","polygon","triangles","s0","e1","s1","links","_found","vx","vy","SQRT2","Transform","point","applyX","applyY","invertX","invertY","rescaleX","domain","rescaleY","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","todoMutations","todoMutation","todo","queryProps","sourceData","readQuery","produce","writeQuery","track","textClass","BDropdownText","functional","issuableListTabs","STATUS_OPEN","titleTooltip","STATUS_CLOSED","STATUS_ALL","mergeRequestListTabs","STATUS_MERGED","availableSortOptions","sortDirection","descending","DEFAULT_PAGE_SIZE","DEFAULT_SKELETON_COUNT","PAGE_SIZE_STORAGE_KEY","TABLE_TAG_NAMES","filterEvent","tagName","labelFor","targetDepth","depth","justify","sourceLinks","center","targetLinks","ascendingSourceBreadth","ascendingBreadth","ascendingTargetBreadth","defaultId","defaultNodes","graph","defaultLinks","nodeById","computeLinkBreadths","Sankey","py","linkSort","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","fixedValue","kx","layer","computeNodeLayers","ky","reorderLinks","initializeNodeBreadths","alpha","beta","relaxRightToLeft","relaxLeftToRight","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","nodeId","nodeAlign","nodeSort","nodeWidth","nodePadding","linkSource","linkTarget","curve","argv","curveHorizontal","moveTo","bezierCurveTo","horizontalSource","horizontalTarget","initInviteMembersModal","primaryActionEventName","pushCode","branchCollaboration","branchesEndpoint","createStore","defaultBranch","modalTitle","prependedText","CommitFormModal","openModal","badgePropertiesMap","STATUS_LOCKED","badgeProperties","ROOT_ACTION_EVENT_NAME_SHOW","PROPERTY","getTarget","getTriggerElement","setRole","oldProp","handler","componentUpdated","binding","vnode","VBModal","inserted","updated","Ue","Qt","Zt","defineProperties","er","getOwnPropertyDescriptors","getOwnPropertySymbols","Le","Me","propertyIsEnumerable","Oe","Be","enumerable","configurable","writable","D","E","O","throw","done","Int32Array","ae","Uint8Array","ee","F","ze","se","Xe","te","ie","ce","Qe","G","le","A","lt","toDataURL","ne","ue","protocol","Y","implementation","createHTMLDocument","ownerDocument","J","fe","de","XMLSerializer","serializeToString","ut","toBlob","quality","atob","Blob","ft","me","FileReader","onload","onerror","onabort","readAsDataURL","readAsArrayBuffer","dt","decoding","src","currentSrc","poster","readyState","once","decode","originalSrc","ge","all","he","we","gt","it","timeEnd","ct","ht","Ge","pe","autoDestruct","workerUrl","workerNumber","debug","backgroundColor","maximumCanvasSize","progress","requestInit","bypassingCache","fetchFn","font","drawImageInterval","onCloneNode","onEmbedNode","onCreateForeignObjectSvg","includeStyleProperties","__CONTEXT__","ownerWindow","dpi","svgStyleElement","ye","svgDefsElement","svgStyles","defaultComputedStyles","workers","Worker","onmessage","I","onmessageerror","fontFamilies","fontCssTexts","acceptOfImage","requests","drawImageCount","tasks","isEnable","wt","pt","canvas","context2d","getContext","fillStyle","fillRect","yt","drawImage","bt","St","be","sandbox","visibility","namespaceURI","Se","getPropertyPriority","lastIndexOf","Et","Ct","Ee","cloneNode","putImageData","getImageData","xt","et","st","oe","Nt","srcset","kt","crossOrigin","currentTime","It","Ce","Te","nt","currentParentNodeStyle","currentNodeStyle","DOMMatrix","translateSelf","Dt","ve","shadowRoot","firstChild","assignedNodes","Pt","Ze","getAttributeNames","scrollWidth","At","Rt","scrollHeight","Tt","tt","ot","vt","Ae","Ft","responseType","We","AbortController","abort","signal","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","qt","Pe","Ht","K","B","He","btoa","fromCharCode","Fe","createContext","destroyContext","domToBlob","mt","domToCanvas","domToDataUrl","domToForeignObjectSvg","domToImage","domToJpeg","domToPixel","domToPng","domToSvg","domToWebp","loadMedia","waitUntilLoad","Symbol","toStringTag","pi","tau","tauEpsilon","Path","closePath","lineTo","quadraticCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","a0","a1","ccw","cw","da","pipelineCount","implicit","lowercase","uppercase","camelcase","baseDelay","func","wait","buttonText","BFormRadio","checked","findNoteObjectById","getQuickActionText","executedCommands","AjaxCache","GfmAutoComplete","dataSources","commands","command","commandDescription","prepareDiffLines","createGqClient","fetchPolicy","fetchPolicies","NO_CACHE","utils","updateIssueLockMutation","updateMergeRequestLockMutation","discussionLocked","issueSetLocked","mergeRequestSetLocked","expandDiscussion","collapseDiscussion","setNotesData","setNoteableData","setConfidentiality","setUserData","setLastFetchedAt","setInitialNotes","setTargetNoteHash","setNotesFetchedState","toggleAllDiscussions","allDiscussionsExpanded","fetchDiscussions","persistFilter","notes_filter","persist_filter","constants","fetchNotes","isFetching","getFetchDiscussionsConfig","notesEventHub","initPolling","isPollingInitialized","getNotesDataByProp","debouncedFetchUpdatedNotes","actionCable","subscriptions","channel","group_id","noteableId","connected","received","fetchDiscussionsBatch","cursor","_config$params","nextConfig","updateDiscussion","setDiscussionSortDirection","direction","setTimelineView","setSelectedCommentPosition","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","reopenIssuable","reopenPath","toggleStateButtonLoading","emitStateChangedEvent","EVENT_ISSUABLE_VUE_APP_CHANGE","isClosed","openState","toggleIssueLocalState","STATUS_REOPENED","saveNote","noteData","placeholderText","hasQuickActions","methodToDispatch","noteBody","isSystemNote","quick_actions_status","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","_resp$notes","isResolvingDiscussion","last_fetched_at","pollSuccessCallBack","toggleAwardRequest","fetchDiscussionDiffLines","truncated_diff_lines_path","truncated_diff_lines","updateMergeRequestWidget","mrWidgetEventHub","setLoadingState","filterDiscussion","setCommentsDisabled","startTaskList","nextTick","updateResolvableDiscussionsCounts","submitSuggestion","suggestionId","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","isNotesFetched","persistSortOrder","timelineEnabled","getBlockedByIssues","blocked_by_issues","userCanReply","current_user","can_create_note","getUserData","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","_flattenDeep","getDiscussionLastNote","showJumpToNextDiscussion","unresolvedDiscussionsIdsByDiff","unresolvedDiscussionsIdsByDate","resolvedDiscussionsById","allResolvableDiscussions","resolvable","aDate","bDate","allState","authoritativeFiles","diff_file","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","expanded","isDiscussion","resolve_with_issue_path","diff_discussion","existingNote","noteObj","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","selectedCommentPosition","selectedCommentPositionHover","currentDiscussionId","isLoadingDescriptionVersion","isPromoteCommentToTimelineEventInProgress","createState","ASC","preview_note_path","MR_FILTER_OPTIONS","DEFAULT_CALLBACKS","KEY_CODE","App","ESC","TAB","ENTER","CTRL","LEFT","UP","RIGHT","DOWN","BACKSPACE","SPACE","beforeSave","Controller","arrayToDefaultHash","flag","subtext","should_startWithSpace","acceptSpaceBar","decodeURI","remoteFilter","sorter","atwho_order","tplEval","tpl","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","results","lookUp","visible","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","isString","iframeOffset","scaleBottom","startStr","headPos","change","_getRange","_setRange","setEndAfter","setStartAfter","setEndBefore","setStartBefore","_clearRange","ctrl_a_pressed","_movingEvent","which","_unwrap","unwrap","nodeValue","$inserted","$query","_range","lastNode","matched","query_content","startContainer","contents","last","ELEMENT_NODE","startOffset","cloneContents","TEXT_NODE","previousSibling","siblings","surroundContents","getClientRects","overrides","suffixNode","storage","saved","_remoteFilter","save","load","_load","$elUl","timeoutID","bindEvent","header_tpl","lastCoordX","lastCoordY","$cur","clientX","clientY","expr","stopShowing","_window","overflowOffset","nextEl","prevEl","$ul","isSelecting","setIframe","run","_args","displayTpl","insertTpl","headerTpl","functionOverrides","hideWithoutSuffix","startWithSpace","highlightFirst","limit","maxLen","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","GlFormCheckbox","GlFormGroup","isCherryPick","actionPrimary","actionCancel","BV_SHOW_MODAL","handlePrimary","trackRedisHllUserEvent","resetModalHandler","clearModal","setSelectedBranch","csrf","token","targetProjectName","setSelectedProject","setBranch","COMMENT_FORM","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","shouldConfirm","_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","BLOCK_BRANCH_MODIFICATION","BLOCK_GROUP_BRANCH_MODIFICATION","PREVENT_PUSHING_AND_FORCE_PUSHING","PREVENT_APPROVAL_BY_AUTHOR","PREVENT_APPROVAL_BY_COMMIT_AUTHOR","REMOVE_APPROVALS_WITH_NEW_COMMIT","REQUIRE_PASSWORD_TO_APPROVE","protectedBranchesConfiguration","pushingBranchesConfiguration","PROTECTED_BRANCHES_CONFIGURATION_KEYS","MERGE_REQUEST_CONFIGURATION_KEYS","mergeRequestConfiguration","BLOCK_GROUP_BRANCH_MODIFICATION_WITH_EXCEPTIONS_HUMANIZED_STRING","BLOCK_GROUP_BRANCH_MODIFICATION_HUMANIZED_STRING","SETTINGS_HUMANIZED_STRINGS","SETTINGS_TOOLTIP","SETTINGS_POPOVER_STRINGS","featureName","SETTINGS_LINKS","VALID_APPROVAL_SETTINGS","PERMITTED_INVALID_SETTINGS_KEY","PERMITTED_INVALID_SETTINGS","buildConfig","hasLinkedGroups","baseConfigurations","blockBranchModificationValue","groupProtectedBranchesConfiguration","buildSettingsList","hasEnabledProperty","WITHOUT_EXCEPTIONS","EXCEPT_GROUPS","EXCEPTION_GROUPS_TEXTS","EXCEPTION_GROUPS_LISTBOX_ITEMS","createGroupObject","convertedId","full_name","fullName","isMergeRequestSettingOverridden","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","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","steps","help","step2","step3","step4","tip","isFork","sourceProjectDefaultUrl","reviewingDocsPath","resolveConflictsFromCli","anchor","mergeInfo1","escapedOriginBranch","escapeShellString","escapedSourceBranch","escapedForkBranch","mergeInfo2","escapedForkPushBranch","userColorScheme","user_color_scheme","modalEl","MrWidgetHowToMergeModal","validateRuleMode","approval","excludeLicensePackages","approval_settings","fallback_behavior","hasInvalidApprovalSettings","hasInvalidSettingStructure","_isBoolean","hasInvalidFallbackBehavior","fail","createPolicyObject","NoteableNote","draftCommands","references","autosaveDraftKey","scrollToDraft","mapMutations","setDraftEditing","publishNow","publishSingleDraft","handleEditing","draftId","handleNotEditing","handleMouseEnter","handleMouseLeave","deleteDraft","toggleResolveDiscussion","baseForOwn","setter","accumulator","tertiaryButtons","updatingTooltip","hasOneOption","hasMultipleOptions","dataClipboardText","dataMethod","onClickAction","onClick","tooltipOnClick","setTooltip","btn","testId","popoverTarget","popoverTitle","popoverLink","popoverText","NodeBuffer","Buffer","BASE64_MAP","bitlen","tailbits","bits","setToArray","createSet","TooltipOnTruncate","severity","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","checkReportStatus","HealthStatusDropdown","SidebarEditableItem","IssueHealthStatus","isUpdating","healthStatusQueries","canUpdate","_this$issuable","healthStatusText","healthStatusTooltip","_this$issuable2","_this$issuable3","editable","updateHealthStatus","updateIssue","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","__proto__","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","fromString","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","_arr","ret","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","modules","installedModules","__webpack_require__","moduleId","loaded","comment_handler_1","jsx_parser_1","parser_1","tokenizer_1","delegate","commentHandler","proxyDelegate","parserDelegate","collectComment","attachComment","CommentHandler","attach","parser","isModule","sourceType","jsx","JSXParser","Parser","ast","parseModule","parseScript","comments","tokens","tolerant","errorHandler","parsingOptions","tokenize","tokenizer","Tokenizer","getNextToken","tolerate","syntax_1","Syntax","leading","trailing","insertInnerComments","BlockStatement","innerComments","findTrailingComments","trailingComments","entry_1","firstComment","findLeadingComments","leadingComments","visitNode","Program","visitComment","AssignmentExpression","AssignmentPattern","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AwaitExpression","BinaryExpression","BreakStatement","CallExpression","CatchClause","ClassBody","ClassDeclaration","ClassExpression","ConditionalExpression","ContinueStatement","DoWhileStatement","DebuggerStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForStatement","ForOfStatement","ForInStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","Literal","LabeledStatement","LogicalExpression","MemberExpression","MetaProperty","MethodDefinition","NewExpression","ObjectExpression","ObjectPattern","Property","RestElement","ReturnStatement","SequenceExpression","SpreadElement","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","extendStatics","__extends","setPrototypeOf","character_1","JSXNode","jsx_syntax_1","Node","token_1","xhtml_entities_1","getQualifiedElementName","elementName","qualifiedName","JSXSyntax","JSXIdentifier","JSXNamespacedName","ns","JSXMemberExpression","TokenName","_super","parsePrimaryExpression","parseJSXRoot","startJSX","startMarker","lineStart","finishJSX","nextToken","reenterJSX","expectJSX","createJSXNode","collectComments","createJSXChildNode","scanXHTMLEntity","quote","terminated","numeric","eof","ch","Character","isDecimalDigit","isHexDigit","XHTMLEntities","lexJSX","cp","n1","n2","isIdentifierStart","isIdentifierPart","lex","nextJSXToken","lastMarker","convertToken","nextJSXText","isLineTerminator","peekJSXToken","saveState","scanComments","restoreState","throwUnexpectedToken","matchJSX","parseJSXIdentifier","finalize","parseJSXElementName","name_1","parseJSXAttributeName","attributeName","name_2","parseJSXStringLiteralAttribute","raw","getTokenRaw","parseJSXExpressionAttribute","tolerateError","parseAssignmentExpression","JSXExpressionContainer","parseJSXAttributeValue","parseJSXElement","parseJSXNameValueAttribute","JSXAttribute","parseJSXSpreadAttribute","argument","JSXSpreadAttribute","parseJSXAttributes","parseJSXOpeningElement","selfClosing","JSXOpeningElement","parseJSXBoundaryElement","name_3","JSXClosingElement","parseJSXEmptyExpression","JSXEmptyExpression","parseJSXExpressionContainer","parseJSXChildren","JSXText","parseComplexJSXElement","opening","JSXElement","open_1","isStartOfExpression","Regex","NonAsciiIdentifierStart","NonAsciiIdentifierPart","fromCodePoint","isWhiteSpace","isOctalDigit","openingElement","closingElement","generator","operator","AsyncArrowFunctionExpression","AsyncFunctionDeclaration","AsyncFunctionExpression","logical","callee","param","ComputedMemberExpression","consequent","alternate","Directive","directive","declaration","specifiers","exported","isStatic","static","Module","properties","shorthand","RegexLiteral","Script","expressions","StaticMemberExpression","discriminant","cases","quasi","quasis","finalizer","declarations","assert_1","error_handler_1","messages_1","scanner_1","ErrorHandler","Scanner","trackComment","operatorPrecedence","lookahead","hasLineTerminator","await","allowIn","allowStrictDirective","allowYield","firstCoverInitializedNameError","isAssignmentTarget","isBindingElement","inFunctionBody","inIteration","inSwitch","labelSet","strict","throwError","messageFormat","whole","assert","createError","unexpectedTokenError","Messages","UnexpectedToken","UnexpectedEOS","UnexpectedIdentifier","UnexpectedNumber","UnexpectedString","UnexpectedTemplate","isFutureReservedWord","UnexpectedReserved","isStrictModeReservedWord","StrictReservedWord","lastMarkerLineStart","tolerateUnexpectedToken","multiLine","nextRegexToken","scanRegExp","createNode","startNode","lastLineStart","marker","expect","expectCommaSeparator","expectKeyword","keyword","matchKeyword","matchContextualKeyword","matchAssign","isolateCoverGrammar","parseFunction","previousIsBindingElement","previousIsAssignmentTarget","previousFirstCoverInitializedNameError","inheritCoverGrammar","consumeSemicolon","matchAsyncFunction","parseFunctionExpression","octal","StrictOctalLiteral","parseTemplateLiteral","parseGroupExpression","parseArrayInitializer","parseObjectInitializer","parseIdentifierName","parseClassExpression","parseSpreadElement","parsePropertyMethod","previousStrict","previousAllowStrictDirective","simple","parseFunctionSourceElements","firstRestricted","stricted","parsePropertyMethodFunction","previousAllowYield","parseFormalParameters","parsePropertyMethodAsyncFunction","previousAwait","parseObjectPropertyKey","isPropertyKey","parseObjectProperty","hasProto","isAsync","lookaheadPropertyKey","qualifiedPropertyName","parseGetterMethod","parseSetterMethod","parseGeneratorMethod","DuplicateProtoProperty","parseTemplateHead","cooked","parseTemplateElement","parseExpression","reinterpretExpressionAsPattern","startToken","parseRestElement","arrow","parseArguments","isIdentifierName","parseNewExpression","parseLeftHandSideExpression","parseAsyncArgument","parseAsyncArguments","parseLeftHandSideExpressionAllowCall","maybeAsync","previousAllowIn","asyncArrow","parseSuper","parseUpdateExpression","parseUnaryExpression","isRestrictedWord","StrictLHSPrefix","InvalidLHSInAssignment","StrictLHSPostfix","parseAwaitExpression","StrictDelete","parseExponentiationExpression","binaryPrecedence","parseBinaryExpression","prec","markers","precedences","parseConditionalExpression","checkPatternParam","validateParam","reinterpretAsCoverFormalsList","paramSet","StrictParamDupe","parseYieldExpression","StrictLHSAssignment","parseStatementListItem","statement","IllegalExportDeclaration","parseExportDeclaration","IllegalImportDeclaration","parseImportDeclaration","parseLexicalDeclaration","inFor","parseFunctionDeclaration","parseClassDeclaration","isLexicalDeclaration","parseStatement","parseBlock","parseLexicalBinding","parsePattern","StrictVarName","DeclarationMissingInitializer","parseBindingList","parseBindingRestElement","parseArrayPattern","parsePatternWithDefault","parsePropertyPattern","keyToken","parseVariableIdentifier","parseObjectPattern","LetInLexicalBinding","parseVariableDeclaration","parseVariableDeclarationList","opt","parseVariableStatement","parseEmptyStatement","parseExpressionStatement","parseIfClause","StrictFunction","parseIfStatement","parseDoWhileStatement","previousInIteration","parseWhileStatement","parseForStatement","forIn","decl","ForInOfLoopInitializer","initStartToken","InvalidLHSInForIn","InvalidLHSInForLoop","initSeq","parseContinueStatement","UnknownLabel","IllegalContinue","parseBreakStatement","IllegalBreak","parseReturnStatement","IllegalReturn","parseWithStatement","StrictModeWith","parseSwitchCase","parseSwitchStatement","previousInSwitch","defaultFound","clause","MultipleDefaultsInSwitch","parseLabelledStatement","Redeclaration","GeneratorInLegacyContext","parseThrowStatement","NewlineAfterThrow","parseCatchClause","paramMap","DuplicateBinding","StrictCatchVariable","parseFinallyClause","parseTryStatement","NoCatchOrFinally","parseDebuggerStatement","parseDirectivePrologues","previousLabelSet","previousInFunctionBody","StrictParamName","DefaultRestParameter","ParameterAfterRestParameter","parseFormalParameter","identifierIsOptional","isGenerator","StrictFunctionName","previousAllowAwait","formalParameters","parseDirective","IllegalLanguageModeDirective","BadGetterArity","BadSetterArity","BadSetterRestParameter","parseClassElement","hasConstructor","punctuator","ConstructorIsAsync","StaticPrototype","ConstructorSpecialMethod","DuplicateConstructor","parseClassElementList","parseClassBody","elementList","classBody","parseModuleSpecifier","InvalidModuleSpecifier","parseImportSpecifier","parseNamedImports","parseImportDefaultSpecifier","parseImportNamespaceSpecifier","NoAsAfterImportNamespace","MissingFromClause","parseExportSpecifier","exportDeclaration","isExportFromIdentifier","recordError","constructError","col","InvalidEscapedReservedWord","InvalidHexEscapeSequence","InvalidRegExp","TemplateOctalLiteral","UnexpectedTokenIllegal","UnterminatedRegExp","hexValue","octalValue","curlyStack","skipSingleLineComment","skipMultiLineComment","isKeyword","codePointAt","scanHexEscape","scanUnicodeCodePointEscape","getIdentifier","getComplexIdentifier","octalToDecimal","scanIdentifier","restore","scanPunctuator","scanHexLiteral","scanBinaryLiteral","scanOctalLiteral","isImplicitOctalLiteral","scanNumericLiteral","scanStringLiteral","unescaped_1","unescaped","octToDec","scanTemplate","rawOffset","unescaped_2","testRegExp","tmp","$0","exception","scanRegExpBody","classMarker","scanRegExpFlags","quot","amp","apos","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","not","shy","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","epsilon","zeta","eta","theta","iota","kappa","nu","xi","omicron","rho","sigmaf","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","equiv","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","lang","rang","Reader","curly","paren","beforeFunctionExpression","isRegexStart","check","trackRange","trackLoc","reader","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","EnterNode","datum","_parent","bindIndex","enter","exit","groupLength","bindKey","keyValue","nodeByKeyValue","keyValues","propertyRemove","propertyConstant","propertyFunction","classArray","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","htmlRemove","htmlConstant","htmlFunction","raise","creatorInherit","uri","creatorFixed","constantNull","selection_cloneShallow","selection_cloneDeep","bubbles","cancelable","dispatchConstant","dispatchFunction","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","onexit","compareDocumentPosition","compareNode","sortgroups","sortgroup","classed","creator","deep","colgroupMixin","$colgroup","bytesToMiB","BYTES_IN_KIB","bytesToGiB","numberToHumanSizeSplit","digitsOptions","minimumFractionDigits","maximumFractionDigits","formatNumberWithLocaleAndDigits","formatNumber","humanSize","numberToMetricPrefix","THOUSAND","MILLION","median","middle","sorted","firstY","lastY","formattedChangeInPercent","nonFiniteResult","isNumeric","numberRegex","isPositiveInteger","countFloatingPointDigits","parts","integer","splitDecimalNumber","baseToString","castSlice","isRegExp","stringSize","stringToArray","reFlags","omission","strLength","strSymbols","newEnd","createLoadedImage","imageSrc","FaviconOverlay","_position","reactiveObject","FaviconOverlayManager","makeReactive","centered","imageUrl","overlayImage","overlays","faviconElement","originalHref","faviconSelector","isInitialized","faviconUrl","faviconImage","clearRect","overlay","getDefaultFaviconManager","_memoize","setFaviconOverlay","resetFavicon","resetFaviconOverlay","trackToggleTimelineView","marked","markedBidi","rawMarkdown","markdownConfig","createNoteErrorMessages","_data$quick_actions_s","error_messages","updateNoteErrorMessage","_e$response","trimmedMessage","BThead","listeners","isThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","isFoot","stopIfBusy","isSortable","isSelectable","hasHeadClickListener","hasListener","selectAllRows","clearSelected","$cells","colIndex","labelHtml","stickyColumn","headerTitle","headClicked","keydown","sortAttrs","sortTheadThAttrs","sortClass","sortTheadThClasses","sortLabel","sortTheadThLabel","thStyle","tabindex","sortable","headerAbbr","getThValues","thAttr","slotNames","scope","$content","$srLabel","$trs","eventHubFactory","_typeof","iterator","later","callNow","remain","rtag","wtag","wclass","wstyle","pagemode","scrollelement","variable","bench","totop","tobottom","onscroll","istable","itemcount","itemprops","changeProp","itemModeForceRender","newScrollelement","oldScrollelement","removeScrollListener","addScrollListener","keeps","total","offsetAll","paddingBottom","varCache","varAverSize","varLastCalcIndex","getZone","setScrollTop","getVarOffset","beforeUpdate","calcstart","zone","isLast","forceRender","scrollHandler","onScroll","vsl","scrollelementRect","_elemRect","updateZone","overs","getVarOvers","shouldRenderNextZone","lastStart","$forceUpdate","low","middleOffset","high","nocache","getVarSize","$children","$vnode","shm","getVarPaddingTop","getVarPaddingBottom","getVarAllHeight","updateVariable","allHeight","slots","hasPadding","renders","dbc","_this$delta","renderList","shortcuts","branchInMemoryButton","branchClipboardInstance","refInMemoryButton","refClipboardInstance","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","branchName","refButton","copiedRef","actionText","showSpinner","noteUrl","emailParticipant","isUsernameLinkHovered","authorId","authorHref","noteTimestampLink","isGid","hasAuthor","isServiceDeskEmailParticipant","authorLinkClasses","hover","authorName","internalNoteTooltip","updateTargetNoteHash","$store","handleUsernameMouseEnter","authorNameLink","Event","handleUsernameMouseLeave","isCommon","valuesLength","valuesIndex","elementMap","onOpenButtonClick","onCancelButtonClick","showSuggestionSection","forkPath","hideSuggestionSection","userPermissions","userPermissionsQuery","tertiaryActionsButtons","adminMergeRequest","mergeRequestApproversAvailable","sidebarEventHub","sourcegraph","assetsUrl","process","scriptPath","SOURCEGRAPH_ASSETS_URL","SOURCEGRAPH_URL","SOURCEGRAPH_INTEGRATION","script","defer","loadScript","noteableTypeText","Task","KeyResult","Objective","isConfidential","lockedNoteableDocsPath","confidentialNoteableDocsPath","warningIcon","isLockedAndConfidential","confidentialContextText","lockedContextText","emails","moreParticipantsAvailable","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","ARROW_DOWN","ARROW_UP","END","HOME","POSITION_ABSOLUTE","POSITION_FIXED","GlDrawer","GlFormRadioGroup","reportedFromUrl","showDrawer","getDrawerHeaderHeight","getContentWrapperHeight","closeDrawer","symbolProto","symbolValueOf","isInactive","isOnImage","isNewNote","pinLabel","inactive","baseFindIndex","baseIteratee","fromIndex","DEFAULT_TITLE","dismissAlert","identityVerificationRequired","identityVerificationPath","updateStatus","ConfidentialityBadge","LockedBadge","HiddenBadge","fetchState","sequence","cycle","sourceKeys","GlDropdownSectionHeader","SidebarDropdownWidget","IterationTitle","workspacePath","issueId","getCadenceTitle","currentIteration","_currentIteration$ite","attributeUrl","getWindow","_node$ownerDocument","getComputedStyle$1","isNode","getNodeName","isHTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflowX","overflowY","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","platform","getClippingRect","boundary","rootBoundary","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","clippingRect","accRect","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","reference","floating","getOffsetParentFn","getDimensionsFn","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","passive","cleanupIo","onMove","timeoutId","io","cleanup","disconnect","refresh","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","cancelAnimationFrame","prevRefRect","frameLoop","nextRefRect","computePosition","mergedOptions","platformWithCache","jumpToNext","jumpToPrevious","jumpToFirstUnresolvedDiscussion","Mousetrap","FETCH_LOADING","FETCH_ERROR","APPROVE_ERROR","UNAPPROVE_ERROR","APPROVED_BY_YOU_AND_OTHERS","APPROVED_BY_YOU","APPROVED_BY_OTHERS","approvals","approvedByQuery","setApprovals","disableCommittersApproval","mergeRequestsDisableCommittersApproval","mergeRequestApprovalStateUpdated","_this$mr","updateQuery","subscriptionData","queryResult","alerts","clearError","hasApprovalAuthError","refreshApprovals","service","fetchApprovals","StatusIcon","Actions","isCollapsible","collapseOnDesktop","expandDetailsTooltip","collapseDetailsTooltip","wrapperClasses","hasActionsSlot","_this$$scopedSlots$ac","popoverTextGeneric","popoverTextSingle","popoverTextMultiple","policies","policiesWithMergeRequestSettingsOverride","showPolicyDetails","editPath","hasPoliciesOverridingApprovalSettings","hasMultiplePolicies","UserAvatarList","PolicyApprovalSettingsIcon","approvalState","isUserAvatarListExpanded","approvers","_this$approvalState$a","approvedBy","approved","_this$approvalState$a2","approvalsLeft","_this$approvalState$a3","approvalLeftMessage","approvedByMe","approvedByOthers","hasApprovers","currentUserHasCommitted","_this$approvalState$c","committers","policiesOverridingApprovalSettings","onUserAvatarListExpanded","onUserAvatarListCollapsed","canApprove","helpPath","ApprovalsSummary","ApprovalsSummaryOptional","StateContainer","approvalsMixin","isOptionalDefault","approveDefault","requirePasswordToApprove","hasAllApprovals","actionButtons","isApproving","isBasic","approvalsWidgetType","isApproved","isOptional","hasAction","invalidRules","_this$approvals$appro","invalid","invalidApprovedRules","allowMergeWhenInvalid","invalidFailedRules","hasInvalidRules","hasInvalidApprovedRules","hasInvalidFailedRules","_this$approvals$appro2","userHasApproved","userCanApprove","showApprove","showUnapprove","showApproveButton","requireSamlAuthToApprove","approvalText","unapprove","pluralizedApprovedRuleText","invalidRulesPlural","invalidRuleSingular","pluralizedFailedRuleText","invalidFailedRulesPlural","invalidFailedRuleSingular","pluralizedRuleText","samlApprovalPath","updateApproval","approveMergeRequest","approveWithSamlAuth","approveWithAuth","approveMergeRequestWithAuth","_error$response","unapproveMergeRequest","serviceFn","errFn","refetch","linkToInvalidRules","INVALID_RULES_DOCS_PATH","approvalsHelpPath","GlFormInput","approvalPassword","actionPrimaryProps","actionCancelProps","inputState","invalidFeedback","approvalPasswordInput","documentationLink","documentationText","popoverId","ApprovalCheckPopover","codeCoverageCheckHelpPagePath","showCoverageCheckPopover","COVERAGE_CHECK_NAME","approvalRuleConfig","APPROVAL_RULE_CONFIGS","popoverTriggerId","autoApproved","actionRequired","optional","countOfTotal","popover","suggestion1","suggestion2","pendingApprovalsText","isAutoApproved","isActionRequired","approvalsRequired","invalidRulesClasses","rulesDocsPath","settingsDocsPath","createSecurityPolicyRuleHelpText","scanResultPolicies","applicableRules","rulesString","reportTypes","reportType","strings","convertRulesToStrings","approvalRulesQuery","_this$mergeRequest","GlSkeletonLoader","ApprovedIcon","ApprovalCheckRulePopover","EmptyRuleApprovers","NumberOfApprovals","ApprovalsUsersList","eligibleApproversDocsPath","sections","approvalRules","_orderBy","nameClass","section","getTooltipText","summaryText","summaryOptionalText","summaryRequiredText","sectionNameLabel","numberOfColumns","ruleTypeAnyApprover","commentedBy","ApprovalsList","staticStyle","eligibleApprovers","Approvals","ApprovalsAuth","ApprovalsFooter","assignReviewersActionButton","_this$approvals","_this$approvals2","hasFooter","_this$approvals3","MRWidgetService","CEWidgetService","apiApprovalSettingsPath","apiApprovePath","approval_password","fetchApprovalSettings","fetchReport","deviseState","detailedMergeStatus","DETAILED_MERGE_STATUS","PREPARING","commitsCount","projectArchived","branchMissing","CHECKING","isSHAMismatch","MERGEABLE","CI_STILL_RUNNING","autoMergeEnabled","preferredAutoMergeStrategy","MWCP_MERGE_STRATEGY","getStateKey","isGeoSecondaryNode","MTWCP_MERGE_STRATEGY","CEStateKey","CEGetStateKey","hasKeys","STATE_MACHINE","IDLE","MergeRequestStore","sha","diff_head_sha","gitlabLogo","apiApprovalsPath","api_approvals_path","api_approve_path","apiUnapprovePath","api_unapprove_path","hasApprovalsAvailable","has_approvals_available","stateMachine","initial","testState","send","_definition$states","forcedState","startMachine","machine","machineValue","mergeError","multiple_approval_rules_available","setPaths","setData","initCodeQualityReport","setGitpodData","blobPath","blob_path","codeQuality","codequality_reports_path","isRebased","_data$pipeline","_data$pipeline2","_data$pipeline3","initApprovals","updateStatusState","pipelineStatus","squash","squashIsEnabledByDefault","squash_enabled_by_default","squashIsReadonly","squash_readonly","enableSquashBeforeMerge","squashIsSelected","squash_on_merge","targetBranchSha","target_branch_sha","sourceBranchProtected","source_branch_protected","conflictsDocsPath","conflicts_docs_path","commitMessage","default_merge_commit_message","shortMergeCommitSha","short_merged_commit_sha","mergeCommitSha","merged_commit_sha","commitMessageWithDescription","default_merge_commit_message_with_description","divergedCommitsCount","diverged_commits_count","pipelineCoverageDelta","pipeline_coverage_delta","buildsWithCoverage","builds_with_coverage","mergePipeline","merge_pipeline","deployments","postMergeDeployments","commits","commits_without_merge_commits","squashCommitMessage","default_squash_commit_message","rebaseInProgress","rebase_in_progress","mergeRequestDiffsPath","diffs_path","approvals_widget_type","mergeRequestWidgetPath","merge_request_widget_path","issues_links","mentioned","mentioned_but_not_closing","assignToMe","assign_to_closing","unassignedCount","assign_to_closing_count","relatedLinks","closingCount","closing_count","mentionedCount","mentioned_count","updatedAt","updated_at","metrics","buildMetrics","setToAutoMergeBy","formatUserObject","merge_user","mergeUserId","merge_user_id","sourceBranchRemoved","source_branch_exists","shouldRemoveSourceBranch","remove_source_branch","autoMergeStrategy","auto_merge_strategy","availableAutoMergeStrategies","available_auto_merge_strategies","getPreferredAutoMergeStrategy","ffOnlyEnabled","ff_only_enabled","ffMergePossible","ff_merge_possible","isRemovingSourceBranch","mergeRequestState","latestSHA","isMergeAllowed","mergeable","mergeOngoing","merge_ongoing","allowCollaboration","allow_collaboration","sourceProjectId","source_project_id","hasCI","has_ci","ciStatus","ci_status","isPipelinePassing","isPipelineSkipped","pipelineDetailedStatus","isPipelineActive","pipelineIid","pipelineProjectPath","project_path","cleanLeadingSeparator","isPipelineBlocked","only_allow_merge_if_pipeline_succeeds","faviconOverlayPath","favicon_overlay_path","terraformReportsPath","terraform_reports_path","testResultsPath","test_reports_path","accessibilityReportPath","accessibility_report_path","exposedArtifactsPath","exposed_artifacts_path","cancelAutoMergePath","cancel_auto_merge_path","canCancelAutomaticMerge","ciIntegrationJenkins","jenkins_integration_active","retargeted","newBlobPath","new_blob_path","sourceBranchPath","sourceBranchLink","source_branch_with_namespace_link","rebasePath","rebase_path","targetBranchPath","target_branch_commits_path","targetBranchTreePath","target_branch_tree_path","conflictResolutionPath","conflict_resolution_path","removeWIPPath","remove_wip_path","createIssueToResolveDiscussionsPath","mergePath","merge_path","mergeCommitPath","merged_commit_path","canPushToSourceBranch","can_push_to_source_branch","cherryPickInForkPath","cherry_pick_in_fork_path","revertInForkPath","revert_in_fork_path","canRemoveSourceBranch","can_remove_source_branch","canCreateIssue","can_create_issue","canCherryPickInCurrentMR","can_cherry_pick_on_current_merge_request","canRevertInCurrentMR","can_revert_on_current_merge_request","setState","setGraphqlData","onlyAllowMergeIfPipelineSucceeds","allowMergeOnSkippedPipeline","canBeMerged","mergeStatus","commitCount","sourceBranchExists","targetBranchExists","hasConflicts","conflicts","hasMergeableDiscussionsState","mergeableDiscussionsState","mergeAfter","isPipelineFailed","diffHeadSha","shouldBeRebased","setGraphqlSubscriptionData","showGitpodButton","show_gitpod_button","gitpodUrl","gitpod_url","gitpodEnabled","gitpod_enabled","userPreferencesGitpodPath","user_preferences_gitpod_path","userProfileEnableGitpodPath","user_profile_enable_gitpod_path","translateStateToMachine","squashBeforeMergeHelpPath","squash_before_merge_help_path","mrTroubleshootingDocsPath","mr_troubleshooting_docs_path","ciTroubleshootingDocsPath","ci_troubleshooting_docs_path","pipelineMustSucceedDocsPath","pipeline_must_succeed_docs_path","mergeRequestBasicPath","merge_request_basic_path","mergeRequestCachedWidgetPath","merge_request_cached_widget_path","emailPatchesPath","email_patches_path","plainDiffPath","plain_diff_path","mergeCheckPath","merge_check_path","mergeActionsContentPath","commit_change_content_path","mergeRequestPipelinesHelpPath","merge_request_pipelines_docs_path","reviewing_and_managing_merge_requests_docs_path","ciEnvironmentsStatusPath","ci_environments_status_path","code_coverage_check_help_page_path","licenseComplianceDocsPath","license_compliance_docs_path","eligible_approvers_docs_path","mergeImmediatelyDocsPath","merge_immediately_docs_path","approvals_help_path","mergeRequestAddCiConfigPath","merge_request_add_ci_config_path","pipelinesEmptySvgPath","pipelines_empty_svg_path","humanAccess","human_access","newPipelinePath","new_project_pipeline_path","source_project_default_url","userCalloutsPath","user_callouts_path","suggestPipelineFeatureId","suggest_pipeline_feature_id","migrateJenkinsFeatureId","migrate_jenkins_feature_id","isDismissedSuggestPipeline","is_dismissed_suggest_pipeline","isDismissedJenkinsMigration","is_dismissed_jenkins_migration","securityReportsDocsPath","security_reports_docs_path","securityConfigurationPath","security_configuration_path","headBlobPath","head_path","baseBlobPath","base_path","codequalityReportsPath","sastComparisonPath","sast_comparison_path","secretDetectionComparisonPath","secret_detection_comparison_path","sastComparisonPathV2","new_sast_comparison_path","secretDetectionComparisonPathV2","new_secret_detection_comparison_path","mergedBy","merged_by","closedBy","closed_by","mergedAt","formatDate","merged_at","closedAt","closed_at","readableMergedAt","getReadableDate","readableClosedAt","MTWPS_MERGE_STRATEGY","MT_MERGE_STRATEGY","MWPS_MERGE_STRATEGY","setRemoveSourceBranch","removeSourceBranch","isApprovalNeeded","transitionStateMachine","unsafeForce","stateToTransitionMap","transitionOptions","CEMergeRequestStore","sastHelp","sast_help_path","containerScanningHelp","container_scanning_help_path","dastHelp","dast_help_path","apiFuzzingHelp","api_fuzzing_help_path","coverageFuzzingHelp","coverage_fuzzing_help_path","secretDetectionHelp","secret_detection_help_path","dependencyScanningHelp","dependency_scanning_help_path","canReadVulnerabilities","can_read_vulnerabilities","canReadVulnerabilityFeedback","can_read_vulnerability_feedback","canRetryExternalStatusChecks","can_retry_external_status_checks","securityReportsPipelineId","pipeline_id","securityReportsPipelineIid","pipeline_iid","createVulnerabilityFeedbackIssuePath","create_vulnerability_feedback_issue_path","createVulnerabilityFeedbackMergeRequestPath","create_vulnerability_feedback_merge_request_path","createVulnerabilityFeedbackDismissalPath","create_vulnerability_feedback_dismissal_path","appUrl","licenseScanning","license_scanning","require_password_to_approve","require_saml_auth_to_approve","merge_request_approvers_available","aiCommitMessageEnabled","pathLocksPath","path_locks_path","initBrowserPerformanceReport","initLoadPerformanceReport","initLicenseComplianceReport","metricsReportsPath","metrics_reports_path","enabledReports","enabled_reports","api_approval_settings_path","mergeTrainsPath","merge_trains_path","pipelineEtag","pipeline_etag","initGeo","mergePipelinesEnabled","merge_pipelines_enabled","mergeTrainsSkipAllowed","merge_trains_skip_train_allowed","policyViolation","policy_violation","jiraAssociation","jira_associations","_project$mergeTrains","mergeTrainsCount","mergeTrains","cars","mergeTrainCar","_data$mergeRequest","discoverProjectSecurityPath","discover_project_security_path","apiStatusChecksPath","api_status_checks_path","saml_approval_path","containerScanningComparisonPath","container_scanning_comparison_path","coverageFuzzingComparisonPath","coverage_fuzzing_comparison_path","apiFuzzingComparisonPath","api_fuzzing_comparison_path","dastComparisonPath","dast_comparison_path","dependencyScanningComparisonPath","dependency_scanning_comparison_path","containerScanningComparisonPathV2","new_container_scanning_comparison_path","coverageFuzzingComparisonPathV2","new_coverage_fuzzing_comparison_path","apiFuzzingComparisonPathV2","new_api_fuzzing_comparison_path","dastComparisonPathV2","new_dast_comparison_path","dependencyScanningComparisonPathV2","new_dependency_scanning_comparison_path","securityPoliciesPath","security_policies_path","is_geo_secondary_node","geoSecondaryHelpPath","geo_secondary_help_path","NOT_APPROVED","BLOCKED_STATUS","EXTERNAL_STATUS_CHECKS","hasMergeChecksFailed","browserPerformance","browser_performance","browserPerformanceMetrics","improved","degraded","same","loadPerformance","load_performance","loadPerformanceMetrics","license_scanning_comparison_path","license_scanning_comparison_collapsed_path","licenseCompliance","compareBrowserPerformanceMetrics","headMetrics","baseMetrics","headMetricsIndexed","normalizeBrowserPerformanceMetrics","baseMetricsIndexed","subjectMetrics","metric","headMetricData","baseMetricData","metricData","desiredSize","browserPerformanceData","indexedSubjects","indexedMetrics","compareLoadPerformanceMetrics","normalizeLoadPerformanceMetrics","loadPerformanceData","http_reqs","rate","http_req_waiting","passes","fails","ceStateMap","geoSecondaryNode","notificationGranted","notification","Notification","notify","notifyPermissions","requestPermission","notifyMe","permission","dismissible","isDismissed","onDismiss","setEndpoint","requestArtifacts","eTagPoll","clearEtagPoll","restartPolling","fetchArtifacts","Poll","resource","getArtifacts","successCallback","Visibility","makeRequest","receiveArtifactsSuccess","receiveArtifactsError","artifacts","job_path","job_name","arrowIconName","ArtifactsList","MrCollapsibleExtension","hasArtifacts","actionsConfiguration","actionInProgress","buttonTitle","computedDeploymentStatus","containerClasses","isActionInProgress","actionName","ReviewAppLink","autofocusonshow","appButtonText","deployment","deploymentExternalUrl","changes","external_url","shouldRenderDropdown","filteredChanges","_this$deployment","btnIcons","play","DeploymentActionButton","DeploymentViewButton","STOPPING","DEPLOYING","REDEPLOYING","isCurrent","canBeManuallyDeployed","playPath","canBeManuallyRedeployed","redeployPath","hasExternalUrls","external_url_formatted","_this$deployment$deta","playable_build","play_path","retry_url","stopUrl","stop_url","environmentAvailable","environment_available","showDeploymentActionButton","buttonVariant","busyText","confirmMessage","primaryBtnText","primaryBtnVariant","confirmAction","executeInlineAction","stopEnvironment","executeAction","deployManually","redeploy","MemoryUsage","showMetrics","deployedTextMap","deployTimeago","deployed_at","deployedText","hasDeploymentTime","deployed_at_formatted","hasDeploymentMeta","hasMetrics","metrics_url","showMemoryUsage","DeploymentActions","DeploymentInfo","metrics_monitoring_url","isManual","Deployment","deploymentClass","hasDeploymentMetrics","showCollapsedDeployments","multipleDeploymentsTitle","artifactSectionHeader","pipelineId","download","rel","shouldShowDropdown","_this$artifacts","isCreatingPipeline","_this$$refs$modal","postMergeRequestPipeline","unauthorized","primaryButton","mergeRequestEventType","mergeRequestEventTypeQuery","_d$project","PipelineMiniGraph","PipelineArtifacts","HelpPopover","runPipelineMixin","hasCi","pipelineMustSucceed","mergeStrategy","isPostMerge","downstream","triggered","hasPipeline","hasCIError","_this$pipeline","_this$pipeline2","_this$pipeline3","hasStages","_this$pipeline4","hasCommitInfo","isMergeRequestPipeline","merge_request_pipeline","showSourceBranch","finishedAt","_this$pipeline5","finished_at","coverageDeltaClass","pipelineCoverageJobNumberText","pipelineCoverageTooltipDeltaDescription","pipelineCoverageTooltipDescription","_this$pipeline$flags","merge_train_pipeline","showPipelineTypeHelpPopover","_this$pipeline6","PIPELINE_EVENT_TYPE_MERGE_TRAIN","PIPELINE_EVENT_TYPE_MERGED_RESULT","PIPELINE_EVENT_TYPE_MERGE_REQUEST","event_type_name","pipelineTypeHelpPopoverOptions","_this$pipeline7","eventTypeName","PIPELINE_EVENT_TYPE_MAP","errorText","monitoringPipelineText","ArtifactsApp","DeploymentList","MrWidgetContainer","MrWidgetPipeline","runPipeline","triggered_by","commit_path","short_id","coverage","pipelineCoverageQuestion","build","MergeTrainPositionIndicator","branchLink","featureId","feature_name","SP_ICON_NAME","SP_TRACK_LABEL","SP_SHOW_TRACK_EVENT","SP_SHOW_TRACK_VALUE","SP_HELP_CONTENT","SP_HELP_URL","MrWidgetIcon","DismissibleContainer","pipelineSvgPath","userCalloutFeatureId","tracking","InternalEvents","JM_JENKINS_TITLE_ICON_NAME","JM_EVENT_NAME","JM_MIGRATION_LINK","migrationPlan","information","trackEvent","MIGRATION_LINK","removesBranchText","BoldText","cancelButtonText","_mergeTrains$nodes$","CEAutoMergeMixin","_this$state","showAuthorName","authorUrl","autoMergeEnabledQuery","NETWORK_ONLY","mergeRequestQueryVariables","MrWidgetAuthor","autoMergeMixin","mergeRequestQueryVariablesMixin","isCancellingAutoMerge","stateRemoveSourceBranch","forceRemoveSourceBranch","_this$state$mergeRequ","mergeUser","cancelAutomaticMerge","should_remove_source_branch","AUTO_MERGE_STRATEGIES","autoMergeFailedQuery","isRefreshing","refreshWidget","MR_WIDGET_PREPARING_ASYNCHRONOUSLY","MR_WIDGET_MISSING_BRANCH_WHICH","MR_WIDGET_MISSING_BRANCH_RESTORE","MR_WIDGET_MISSING_BRANCH_MANUALCLI","SQUASH_BEFORE_MERGE","checkboxLabel","helpLabel","I18N_SHA_MISMATCH","warningMessage","actionButtonLabel","MR_WIDGET_CLOSED_REOPEN","MR_WIDGET_CLOSED_REOPENING","MR_WIDGET_CLOSED_RELOADING","MR_WIDGET_CLOSED_REOPEN_FAILURE","dateTitle","dateReadable","MrWidgetAuthorTime","isPending","isReloading","reopenText","showGlobalToast","prepareMergeError","timerText","updateTimer","stripHtml","mergeDetailsCollapsed","toggleMergeDetails","isMakingRequest","shouldShowRemoveSourceBranch","shouldShowSourceBranchRemoving","revertTitle","cherryPickTitle","revertLabel","cherryPickLabel","openRevertModal","openCherryPickModal","modalEventHub","transitions","MERGE_FAILURE","statusCount","MERGE_ACTIVE_STATUS_PHRASES","initiateMergePolling","simplePoll","continuePolling","handleMergePolling","poll","fetchUserCounts","initiateRemoveSourceBranchPolling","merge_error","missingBranchQuery","statusEmpty","STATUS_EMPTY","ciHelpPage","PIPELINE_MUST_SUCCEED_CONFLICT_TEXT","MERGE_WHEN_CHECKS_PASS_HELP","isMergeButtonDisabled","shouldShowMergeControls","preventMerge","pipelineMustSucceedConflictText","autoMergeText","autoMergeHelperText","isPreferredAutoMergeStrategyMWPC","autoMergePopoverSettings","helpLink","bodyText","shouldDisplayMergeImmediatelyDropdownOptions","shouldShowMergeImmediatelyDropdown","isAutoMergeAvailable","isMergeImmediatelyDangerous","shouldRenderMergeTrainHelperIcon","showFailedPipelineModalMergeTrain","onStartMergeTrainConfirmation","MERGE_TRAINS_HELP","CEReadyToMergeMixin","PIPELINE_FAILED_STATE","mergeStrateyMergeTrain","handleMergeButtonClick","mergeCommitCount","isSquashEnabled","isFastForwardEnabled","targetBranchEscaped","commitsCountMessage","showAssignToMe","closesText","assignIssueText","shouldShowAssignToMeLink","GlFormTextarea","inputId","AiCommitMessage","mrId","shortId","short_Id","info","confirmation","focusCancelButton","cancelButton","mergeChanges","MERGE","AUTO_MERGE","MERGING","readyToMergeQuery","manual","_data$project2","defaultMergeCommitMessage","squashBeforeMerge","squashOnMerge","isSquashReadOnly","squashReadOnly","defaultSquashCommitMessage","mergeRequestsFfOnlyEnabled","commitMessageIsTouched","squashCommitMessageIsTouched","_isNil","pollingInterval","readyToMergeSubscription","_this$mr2","SquashBeforeMerge","CommitEdit","CommitMessageDropdown","MergeFailedPipelineConfirmationDialog","MergeImmediatelyConfirmationDialog","MergeTrainFailedPipelineConfirmationDialog","MergeTrainRestartTrainConfirmationDialog","AddedCommitMessage","RelatedLinks","readyToMergeMixin","isMergingImmediately","isPipelineFailedModalVisibleMergeTrain","isPipelineFailedModalVisibleNormalMerge","isMergeTrainBeingForceMerged","mergeTrainMergeType","MT_RESTART_TRAIN","skipMergeTrain","editCommitMessage","headPipeline","showMergeFailedPipelineConfirmationDialog","commitTemplateHelpPage","commitTemplateHintText","shouldShowSquashEdit","shouldShowMergeEdit","mergeAndSquashCommitTemplatesHintText","squashCommitTemplateHintText","mergeCommitTemplateHintText","_this$state$commitsWi","commitsWithoutMergeCommits","hasPipelineMustSucceedConflict","mergeButtonText","showAutoMergeHelperText","isNotClosed","isNeitherClosedNorMerged","isRemoveSourceBranchButtonDisabled","shouldShowSquashBeforeMerge","shaMismatchLink","showDangerMessageForMergeTrain","_this$state$userPermi","sourceBranchPreMergeText","sourceBranchMergedText","sourceHasDivergedFromTarget","showMergeDetailsHeader","autoMergeHelpPopoverOptions","isSkipMergeTrainAvailable","mergeTrainsSkipTrain","displaySkipMergeTrainOptions","updateGraphqlState","startingPollInterval","secondsToMilliseconds","useAutoMerge","mergeImmediately","confirmationClicked","skip_merge_train","squash_commit_message","commit_message","handleMergeImmediatelyButtonClick","confirmationDialog","handleMergeTrainMergeImmediatelyButtonClick","processMergeTrain","MT_SKIP_TRAIN","onMergeImmediatelyConfirmation","onMergeWithFailedPipelineConfirmation","handleRemoveBranchPolling","setCommitMessage","setSquashCommitMessage","appendCommitMessage","messageType","updateRemoveSourceBranchSettings","sourceDivergedFromTargetText","divergedCommits","MrSecurityWidget","MrTestReportWidget","MrTerraformWidget","MrCodeQualityWidget","MrAccessibilityWidget","mrReportsTab","testReportWidget","terraformPlansWidget","codeQualityWidget","accessibilityWidget","widgets","widget","mergeChecksQuery","mergeChecksSubscription","warningChecks","checkingMergeChecks","failedChecks","_this$state2","_this$state3","mergeabilityChecks","sortedChecks","isStatusInactive","hasMessage","isStatusFailed","isStatusChecking","isStatusWarning","showChecks","checkComponent","COMPONENTS","FAILURE_REASONS","Loading","WidgetContainer","MrWidgetSuggestPipeline","WidgetSuggestPipeline","MrWidgetMigrateJenkins","MrWidgetPipelineContainer","MrWidgetAlertMessage","MrWidgetMerged","MergedState","MrWidgetClosed","ClosedState","MrWidgetMerging","MergingState","MrWidgetFailedToMerge","FailedToMerge","MrWidgetArchived","ArchivedState","MrWidgetNothingToMerge","NothingToMergeState","MrWidgetMissingBranch","MissingBranchState","MrWidgetReadyToMerge","ShaMismatch","MrWidgetChecking","CheckingState","MrWidgetPreparing","PreparingState","MrWidgetAutoMergeEnabled","MrWidgetAutoMergeFailed","AutoMergeFailed","SourceBranchRemovalStatus","MrWidgetApprovals","ReadyToMerge","ReadyToMergeState","MergeChecks","notifyOnNetworkStatusChange","networkStatus","apolloStateQueryPollingInterval","checkStatus","getStateSubscription","mrData","MRWidgetStore","createService","machineState","recomputeComponentName","STATE_QUERY_POLLING_INTERVAL_DEFAULT","apolloStateQueryMaxPollingInterval","FOUR_MINUTES_IN_MS","unboundedInterval","STATE_QUERY_POLLING_INTERVAL_BACKOFF","_clamp","shouldRenderApprovals","componentName","classState","shouldRenderPipelines","shouldSuggestPipelines","showRenderMigrateFromJenkins","shouldRenderCollaborationStatus","shouldRenderMergedPipeline","showMergePipelineForkWarning","showManageStorageDocsLink","_this$mr$mergeError","formattedHumanAccess","hasMergeError","hasAlerts","mergeBlockedComponentVisible","oldVal","initPostMergeDeploymentsPolling","handleNotification","fetchInitialData","initWidget","unbindEventListeners","deploymentsInterval","postMergeDeploymentsInterval","setFaviconHelper","initDeploymentsPolling","bindEventHubListeners","getServiceEndpoints","deploymentsPoll","fetchPreMergeDeployments","fetchPostMergeDeployments","fetchDeployments","throwDeploymentsError","fetchActionsContent","fetchMergeActionsContent","dataTitle","resumePolling","checkRebasedStatus","setIsRemovingSourceBranch","setMergeError","setMrData","onFetchDeployments","dismissSuggestPipelines","dismissMigrateFromJenkins","MrBrowserPerformanceWidget","MrLoadPerformanceWidget","MrMetricsWidget","MrSecurityWidgetEE","MrSecurityWidgetCE","MrStatusChecksWidget","MrLicenseComplianceWidget","CEWidgetApp","licenseComplianceWidget","browserPerformanceWidget","loadPerformanceWidget","metricsWidget","statusChecksWidget","isNothingToMergeState","securityReportsWidget","MrWidgetGeoSecondaryNode","MrWidgetPolicyViolation","MrWidgetJiraAssociationMissing","BlockingMergeRequestsReport","manageStorageDocsMsg","manageStorageDocsLink","CEWidgetOptions","reportsMixin","Translate","cacheConfig","typePolicies","MergeRequestApprovalState","notesFilterProps","NotesApp","mrFilter","isShowTabActive","mrWidget","gitlab_logo","default_avatar_url","dismissalDescriptions","dismissal_descriptions","vm","artifacts_endpoint","artifacts_endpoint_placeholder","falsePositiveDocUrl","false_positive_doc_url","canViewFalsePositive","can_view_false_positive","commitPathTemplate","commit_path_template","MrWidgetOptions","setEndpoints","fetchMrMetadata","discussionNavigator","shouldShow","initNotes","parseSpan","spanValidator","colspan","rowspan","stackedHeading","BTd","getBvTableTr","bvTableTr","inTbody","inThead","inTfoot","isDark","hasStickyHeader","isStickyColumn","rowVariant","headOrFoot","computedColspan","computedRowspan","isStackedCell","cellClasses","cellAttrs","DiffStats","compareButtonLabel","fileModeTooltip","discussionPath","collapsible","addMergeRequestButtons","canCurrentUserFork","showLocalFileReviews","reviewed","diffContentIDSelector","diffUrl","titleLink","submodule","submodule_tree_url","submodule_link","submoduleDiffCompareLinkText","submodule_compare","truncatedOldSha","old_sha","truncatedNewSha","new_sha","oldCommitId","newCommitId","deleted_file","isUsingLfs","external_storage","collapseIcon","viewFileButtonText","truncatedContentSha","commitId","viewReplacedFileButtonText","truncatedBaseSha","gfmCopyText","isFileRenamed","isModeChanged","expandDiffToFullFileTitle","showEditButton","_this$diffFile$blob","readable_text","edit_path","ide_edit_path","isReviewable","reviewable","externalUrlLabel","formatted_external_url","labelToggleFile","showCommentButton","handleToggleFile","setFileForcedOpen","forced","showForkMessage","can_modify_blob","handleFileNameClick","setCurrentFileHash","toggleReview","newReviewedStatus","reviewFile","setFileCollapsedByUser","old_path_html","new_path_html","view_path","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","_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","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","getPolicyType","_Object$values$find","decomposeApprovers","existingApprovers","output","roles","hasUsers","hasGroups","TYPENAME_USER","TYPENAME_GROUP","removeUnnecessaryDashes","textMap","remainingTime","formatTime","remainingTimeIntervalId","startRemainingTimeInterval","isDelayedJob","_this$job","_this$job2","scheduled","scheduledAt","scheduledTime","scheduled_at","updateRemainingTime","remainingMilliseconds","calculateRemainingMilliseconds","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","backdrop","pause","unpause","autosize","$dropzone","forElement","toggleSrText","trackingLabel","discussionsRequireResolution","noteableDisplayName","isReviewDropdown","isNoteTypeComment","isNoteTypeDiscussion","dropdownCommentButtonTitle","dropdownStartThreadButtonTitle","commentButtonTitle","startDiscussionDescription","commentDescription","testid","handleClick","setNoteType","linkHref","imgCssClasses","imgCssWrapperClasses","popoverUserId","popoverUsername","userId","shouldShowUsername","avatarTooltipText","LabelItem","allowMultiselect","localSelectedLabels","workspaceLabelsQueries","localSelectedLabelsIds","visibleLabels","showNoMatchingResultsMessage","shouldHighlightFirstItem","isLabelSelected","scrollIntoViewIfNeeded","highlightedLabel","labelsListContainer","updateSelectedLabels","handleLabelClick","onDropdownAppear","selectFirstItem","handleFocus","_event$target$parentN","isDropdownVariantSidebar","VARIANT_SIDEBAR","isDropdownVariantStandalone","VARIANT_STANDALONE","isDropdownVariantEmbedded","VARIANT_EMBEDDED","DropdownContentsLabelsView","DropdownContentsCreateView","DropdownHeader","DropdownFooter","toggleAttrs","selectedLabels","dropdownButtonText","labelCreateType","isDirty","dropdownContentsView","firstLabelName","remainingLabelCount","showDropdownFooter","isSidebar","setLabels","toggleDropdownContentsCreateView","toggleDropdownContent","_this$$refs$dropdown","$_popper","scheduleUpdate","handleDropdownHide","header","clearSearch","handleNewLabel","GlLabel","allowLabelRemove","supportsLockOnMerge","labelsFilterBasePath","labelsFilterParam","sortedSelectedLabels","_sortBy","isScopedLabel","buildFilterUrl","basePath","filterParam","scopedLabel","allowScopedLabels","isLabelLocked","lock_on_merge","showCloseButton","removeLabel","DropdownValue","DropdownContents","EmbeddedLabelsList","allowLabelEdit","showEmbeddedLabelsList","issuableSupportsLockOnMerge","contentIsOnViewport","labelsSelectInProgress","oldIid","sidebarExpandedOnClick","issuableLabelIds","isRealtimeEnabled","realtimeLabels","isLabelListEnabled","isLockOnMergeSupported","labelShortcutDescription","labelShortcutKey","labelTooltip","issuableLabelsQueries","issuableQuery","queryVariables","TYPE_TEST_CASE","issuableLabelsSubscription","issuableLabelsUpdated","handleCollapsedValueClick","handleDropdownClose","getUpdateVariables","collapseEditableItem","_this$$refs$editable","dropdownContents","currentIid","updateVariables","operationMode","mutationOperationMode","addLabelIds","removeLabelIds","inputVariables","_data$updateIssuableL","_data$updateIssuableL2","_data$updateIssuableL3","updateIssuableLabels","getRemoveVariables","removeVariables","handleLabelRemove","showHelp","helpHref","showHelpState","newCveIdRequestUrl","currUrl","newUrl","toggleHelpState","groupIterationsQuery","shouldFetch","currentIterationId","_this$currentIteratio","iterationCadences","iterationCadencesListBoxItems","dropdownSelectedText","_this$currentIteratio2","handleSearch","setSearchTerm","iterationId","_this$iterationCadenc","onDropdownShow","POLICIES_PATH","policyText","policyName","EscalationPolicyCollapsedState","EscalationPolicyHelpState","INDEX_PATH","EscalationPoliciesEmptyState","escalationsPossible","policiesPath","attributeTitle","healthStatusFormInput","handleChange","epicFormInput","SidebarDropdown","iterationFormInput","getIdForIteration","handleIterationSelect","IterationDropdown","onIterationSelect","CEMountSidebar","SidebarWeightWidget","mountSidebarWeightWidget","SidebarHealthStatusWidget","mountSidebarHealthStatusWidget","workItemEpics","mountSidebarEpicWidget","SidebarIterationWidget","mountSidebarIterationWidget","hasEscalationPolicies","SidebarEscalationPolicy","mountSidebarEscalationPolicy","CveIdRequest","mountSidebarCveIdRequest","Mutation","discardChanges","getSharedStateQuery","sharedData","showDiscardChangesModal","formTouched","goFirstStep","profileType","goForward","goBack","resetHistory","toggleModal","setCachedPayload","cachedPayload","setFormTouched","setResetAndClose","resetAndClose","Query","cachedData","resolvers","typeDefs","isPromotionInProgress","handleButtonClick","editCommentLabel","deleteCommentLabel","moreActionsLabel","EmojiPicker","ReplyButton","TimelineEventButton","UserAccessRoleBadge","resolvedStatusMixin","accessLevel","isAuthor","isContributor","projectName","showReply","canDelete","canResolve","canReportAsAbuse","shouldShowActionsDropdown","showDeleteAction","isUserAssigned","displayAssignUserText","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","NoteForm","Suggestions","DuoCodeReviewFeedback","failedToLoadMetadata","hasSuggestion","lineType","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","commentLineOptions","fileResolvedFromAvailableSource","getDiffFileByHash","isMRDiffView","_this$note$position2","isFileComment","_this$note$position3","scrollIntoView","editHandler","updateSuccess","oldContent","detectAndConfirmSensitiveTokens","handleUpdateError","recoverNoteContent","ignoreWhilePending","secondaryBtnVariant","secondaryBtnText","hideCancel","getLineClasses","assigneesUpdate","external_author","noteable_note_url","is_contributor","is_noteable_author","project_name","deleteHandler","formUpdateHandler","visibilityObserver","anObject","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","popoverContainerId","BDropdownHeader","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","safeId","$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","tabIndex","onTBodyRowClicked","renderBusy","renderTopRow","renderEmpty","renderBottomRow","$busy","defaultSlotName","lowercaseSlotName","renderTbodyRow","handlers","auxclick","onTbodyRowMiddleMouseRowClicked","contextmenu","onTbodyRowContextmenu","dblclick","onTbodyRowDblClicked","onTbodyRowKeydown","$props","getPrototypeOf","nn","rn","isFrozen","tn","getOwnPropertyDescriptor","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","compileList","exclude","includedSchema","currentType","previousType","previousIndex","loadKind","scalar","mapping","collectType","compileMap","DEFAULT","schemas","actionDetailText","editedAt","editedBy","isOctCode","isDecCode","hasDigits","binary","hexadecimal","GlClearIconButton","inputListeners","clearInput","nameId","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","GlListboxItem","GlListboxGroup","GlListboxSearchInput","multiple","isCheckCentered","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","searchPlaceholder","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","selectedValue","_this$scrollObserver2","observer","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","listboxToggleText","toggleButtonClasses","headerId","onResetButtonClicked","onSelectAllButtonClicked","listboxClasses","itemTag","hasHeader","isFocused","listboxItemMoreItemsAriaAttributes","onIntersectionObserverAppear","showNote","isSyntheticNote","showEdited","_this$noteId","noteHtml","_this$note","body_html","noteQuery","_data$note$last_edite","_result$errors","_result$data","NoteSignedOutWidget","DiscussionLockedWidget","CommentTypeDropdown","noteIsInternal","canSetInternalNote","can_create_confidential_note","issueActionButtonTitle","openOrClose","actionButtonClassNames","canToggleIssueState","can_update","closedAndLocked","draftEndpoint","slugifyWithUnderscore","disableSubmitButton","convertToCamelCase","handleSaveError","handleSaveDraft","handleSave","withIssueAction","saveNoteParams","discard","toggleIssueState","handleEnter","_badgeState$updateSta","editCurrentUserLastNote","lastNote","dismissError","selectFilter","slotKeys","gqlClient","watchQuery","confidentialityQueries","CACHE_ONLY","_res$data","SORT_OPTIONS","DESC","cls","DISCUSSION_FILTERS_DEFAULT_VALUE","currentValue","NOTE_UNDERSCORE","displayFilters","selectedSortOption","sortStorageKey","toggleFilters","handleLocationHash","toggleCommentsForm","COMMENTS_ONLY_FILTER_VALUE","HISTORY_ONLY_FILTER_VALUE","DISCUSSION_TAB_LABEL","filterType","DISCUSSION_FILTER_TYPES","ALL","COMMENTS","HISTORY","fetchSortedDiscussions","isSortDropdownItemActive","sortDir","TimelineToggle","DiscussionFilter","AiSummarizeNotes","MrDiscussionFilter","showTimelineViewToggle","resourceGlobalId","aiLoading","showAiActions","summarizeComments","NotePreview","NotesActivityHeader","NoteableDiscussion","SystemNote","CommentForm","PlaceholderNote","PlaceholderSystemNote","SkeletonLoadingContainer","DiscussionFilterNote","OrderedLayout","SidebarSubscription","DraftNote","AiSummary","summarizeClientSubscriptionId","uuidv4","renderSkeleton","isInitialEventTriggered","sortDirDesc","previewNoteId","_this$targetNoteHash","skeletonNotes","prerenderedNotesCount","isSkeletonNote","previewNote","isPreviewNote","canReply","isAppReady","checkLocationHash","handleReviewTracking","handleHashChanged","ISSUABLE_COMMENT_OR_REPLY","quoteReply","highlightCurrentUser","getDiscussionInSelection","CopyAsGFM","selectionToGfm","showReplyForm","replyInMainEditor","commentForm","discussionIsIndividualNoteAndNotConverted","startReplying","setAiLoading","noteFormStartReview","noteFormAddToReview","autoSaveKey","getAutoSaveKeyFromDiscussion","systemNote","refInFor","seenIndex","groupSelectedVulnerabilityStates","transformedStates","transformNewlyDetectedState","vulnerabilityStatusGroup","vulnerabilityState","statesForGroup","groupVulnerabilityStatesWithDefaults","buildFiltersFromRule","vulnerability_age","vulnerabilityAge","vulnerability_states","vulnerabilityStates","vulnerability_attributes","vulnerabilityStateGroups","vulnerabilityAttributes","buildFiltersFromLicenseRule","_licenses","license_types","DEFAULT_SETTINGS","DEFAULT_PROJECT_SETTINGS","DEFAULT_GROUP_SETTINGS","FALLBACK","DEFAULT_SCAN_RESULT_POLICY","DEFAULT_SCAN_RESULT_POLICY_NEW_FORMAT","DEFAULT_SCAN_RESULT_POLICY_WITH_SCOPE_WITH_GROUP_SETTINGS","DEFAULT_SCAN_RESULT_POLICY_WITH_SCOPE_WITH_GROUP_SETTINGS_NEW_FORMAT","getPolicyYaml","newYamlFormat","baseIsMap","nodeIsMap","confidentialBodyText","confidentialIcon","tooltipLabel","confidentialityOnWarning","confidentialityOffWarning","toggleButtonText","isTestCase","isIssueOrTestCase","permissions","issuableTypeText","commentText","issuableSetConfidential","hideDropdownEvent","SidebarConfidentialityContent","SidebarConfidentialityForm","client","clients","draftData","removeWIP","targetParam","environment_target","getData","getCachedData","spread","cachedRes","rebase","skipCi","metricsUrl","projectsFetchPath","dropdownButtonTitle","dropdownHeaderTitle","moveInProgress","projectsList","selectedProjects","fetchProjects","triggerSearch","name_with_namespace","handleProjectSelect","handleMoveClick","baseInverter","toIteratee","xhtml","xlink","xml","xmlns","requestBranches","setBranchesEndpoint","_data$Branches","Branches","_state$projects","refsUrl","selectedBranch","GlResizeObserver","GlResizeObserverDirective","truncateTarget","tooltipDisabled","updateTooltip","updateTooltipDebounced","selectTarget","_isFunction","hasHorizontalOverflow","onResize","getObserver","$_gl_intersectionHandler","$_gl_intersectionObserver","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","sast","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","VULNERABILITY_DETAIL_CODE_FLOWS","APPROVER_TYPE_DICT","ADD_APPROVER_LABEL","APPROVER_TYPE_LIST_ITEMS","mapIds","removeAvailableApproverType","createActionFromApprovers","approvals_required","newAction","userIds","groupIds","actionHasType","approversOutOfSync","_action$user_approver","_action$user_approver2","_action$user_approver3","_action$user_approver4","usersIDs","usersNames","userName","userLength","usersOutOfSync","_action$group_approve","_action$group_approve2","_action$group_approve3","_action$group_approve4","groupsIDs","groupsPaths","groupsOutOfSync","WARN_TEMPLATE","WARN_TEMPLATE_HELP_TITLE","WARN_TEMPLATE_HELP_DESCRIPTION","getDefaultHumanizedTemplate","numOfApproversRequired","DEFAULT_APPROVER_DROPDOWN_TEXT","REQUIRE_APPROVAL_TYPE","BOT_MESSAGE_TYPE","WARN_TYPE","buildApprovalAction","buildBotMessageAction","buildAction","WARN_TYPE_TEXT","ACTION_OPTIONS","ACTION_LISTBOX_ITEMS","securityPolicyApprovalWarnMode","DISABLED_BOT_MESSAGE_ACTION","conflict","discussions_not_resolved","draft_status","merge_time","need_rebase","requested_changes","locked_paths","locked_lfs_files","not_approved","security_policy_violations","commits_status","ci_must_pass","not_open","merge_request_blocked","status_checks_must_pass","jira_association_missing","approvals_syncing","ICON_NAMES","failed","BORDER_CLASSES","bordered","borderPosition","_this$group","showHeader","borderClass","groupLabeledBy","ToggleRepliesWidget","resolvedText","lastUpdatedBy","lastUpdatedAt","linkStart","discussion_path","commitDisplay","isForCommit","linkEnd","toggleDiscussionHandler","FIRST_CHAR_REGEX","DiffFileHeader","DiffViewer","ImageDiffOverlay","diffMode","diffViewerMode","_this$discussion$diff","fileDiffRefs","headSha","baseSha","isTextFile","hasTruncatedDiffLines","_this$discussion$posi","isFileDiscussion","backfilledDiffFile","fetchDiff","highlight","trimChar","userColorSchemeClass","DiscussionReplyPlaceholder","ResolveDiscussionButton","ResolveWithIssueButton","resolveWithIssuePath","shouldShowJumpToNextDiscussion","resolvableNotes","userCanResolveDiscussion","_note$current_user","DiscussionNotesRepliesWrapper","diffLine","shouldGroupReplies","hasReplies","isDiscussionInternal","_this$discussion$note","SYSTEM_NOTE","componentData","DiffDiscussionHeader","DiscussionNotes","DiscussionActions","diffLineNoteFormMixin","renderDiffFile","alwaysExpanded","discussionsByDiffOrder","newNotePath","shouldRenderDiffs","wrapperComponent","DiffWithNote","wrapperComponentProps","shouldHideDiscussionBody","canShowReplyActions","_this$discussion$orig","_this$discussion$orig2","discussionHolderClass","onStartReplying","noteForm","cancelReplyForm","cancelBtnText","replyData","showReplies","draftForDiscussion","saveReply","mark","captureStackTrace","getSymbols","CreateLabelDropdown","$dropdownBack","$cancelButton","$newLabelField","$newColorField","$colorPreview","$addList","$newLabelError","$newLabelErrorContent","$newLabelCreateButton","$colorSuggestions","addListDefault","cleanBinding","addBinding","addColorValue","enableLabelCreateButton","updateColorPreview","updateColorPickerPreview","resetForm","saveLabel","previewColor","newLabel","humanize","addNewList","els","$els","$dropdown","$dropdownContainer","issueUpdateURL","selectedLabel","showNo","showAny","showMenuAbove","defaultLabel","abilityName","$form","$sidebarCollapsedValue","$value","$loading","initialSelected","scopedLabels","saveLabelData","label_ids","labelCount","getLabelTemplate","enableScopedLabels","toRemoveIds","initDeprecatedJQueryDropdown","labelUrl","extraData","isAny","positionMenuAbove","colorEl","removesAll","indeterminate","dropdownValue","multiSelect","linkEl","selectedLayoutClasses","listItemEl","selectable","filterable","$dropdownParent","$dropdownInputField","isIssueIndex","isMRIndex","Issuable","filterResults","clearMenu","vue","clicked","clickEvent","isMarking","selectedObj","enableBulkLabelDropdown","setDropdownData","preserveContext","tplData","linkOpenTag","labelTemplate","_template","labelTextClass","escapeStr","text_color","scopedLabelTemplate","tooltipTitleTemplate","rightLabelTextClass","onSelectCheckboxIssue","$container","isOverviewPage","getAllDiscussionElements","findNextClosestVisibleDiscussion","discussionElements","visibleHorizontalOffset","getNextDiscussion","firstDiscussion","nextClosestDiscussion","nextDiscussion","getPreviousDiscussion","lastDiscussion","previousDiscussion","handleJumpForBothPages","ctx","scrollOptions","_window$mrTabs2","_window$mrTabs3","_window$mrTabs4","disableVirtualScroller","isDescriptionVersionExpanded","deleteInProgress","canSeeDescriptionVersion","description_diff_path","displayDeleteButton","can_delete_description_version","shouldShowDescriptionVersion","descriptionVersionToggleIcon","toggleDescriptionVersion","_this$descriptionVers","deleteDescriptionVersion","delete_description_version_path","ICON_COLORS","deleteButtonLabel","descriptionVersionHistoryMixin","showLines","loadingDiff","isAllowedIcon","isTargetNote","toggleIcon","actionTextHtml","hasMoreCommits","singleLineDescription","deleteButtonClasses","iconBgClass","systemNoteIconName","outdated_line_change_path","labelText","notificationCallback","intervalHeader","canPoll","checkConditions","makeDelayedRequest","clipboardTooltipText","clipboardProps","tooltipBoundary","clipboardTooltip","loadingIconLabel","templateText","isTodo","isIconButton","incrementGlobalTodoCount","updateGlobalTodoCount","decrementGlobalTodoCount","onToggle","pairKey","pairHasKey","objectKeys","getFileReviewsKey","isFileReviewed","reviews","fileReviews","reviewStatuses","flat","reviewsForMr","setReviewsForMergeRequest","markFileReview","usableReviews","updatedReviews","updateSidebarClasses","layoutPage","rightSidebar","windowSize","isMR","addEventListeners","$document","sidebarCollapseClicked","onSidebarDropdownHidden","sidebarToggleClicked","contentRect","$toggleButtons","$collapseIcon","$expandIcon","$toggleContainer","blockOrName","getBlock","setCollapseAfterUpdate","toggleSidebar","sidebarDropdownHidden","triggerOpenSidebar","startTime","differenceInMilliseconds","PROJECTS_WITH_FRAMEWORK","ALL_PROJECTS_IN_GROUP","SPECIFIC_PROJECTS","ALL_PROJECTS_IN_LINKED_GROUPS","PROJECT_SCOPE_TYPE_TEXTS","PROJECT_SCOPE_TYPE_LISTBOX_ITEMS","EXCEPT_PROJECTS","COMPLIANCE_FRAMEWORKS_KEY","PROJECTS_KEY","GROUPS_KEY","EXCEPTION_TYPE_TEXTS","GROUP_EXCEPTION_TYPE_TEXTS","EXCEPTION_TYPE_LISTBOX_ITEMS","GROUP_EXCEPTION_TYPE_LISTBOX_ITEMS","Participants","fetchingError","SidebarParticipants","borderless","clearButtonTitle","focusin","onFocusin","focusout","onFocusout","hasValue","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","I18N","SeverityToken","initialSeverity","INCIDENT_SEVERITY","UNKNOWN","severitiesList","updateSeverity","updateIssuableSeverity","issueSetSeverity","UPDATE_SEVERITY_ERROR","TRY_AGAIN","SEVERITY_VALUE","uuid","labelPosition","isVerticalLayout","shouldRenderDescription","shouldRenderHelp","isChecked","helpId","toggleFeature","queueRedisHllEvents","verifyCap","timestamp","TRACKING_CAP_KEY","TRACKING_CAP_LENGTH","shouldDispatchEvent","deferDuration","_delay","dispatchRedisHllUserEvent","DEFER_DURATION","scoped","splitScopedLabelIndex","textColorVariant","light","labelTitle","labelComponent","scopedKey","scopedValue","tooltipTarget","globalThis","DESCRIPTORS","defineBuiltInAccessor","regExpFlags","RegExpPrototype","INDICES_SUPPORT","calls","expected","addGetter","chr","pairs","hasListenerMixin","$events","_events","buttonId","initialLoading","shouldShowConfirmationPopover","editTooltip","editAriaLabel","editKeyshortcuts","editButtonText","editTooltipText","editAriaLabelText","editKeyshortcutsText","collapseWhenOffClick","collapseOnEscape","emitEvent","forwardDeploymentFailureModalId","BUTTON_TOOLTIP_RETRY","BUTTON_TOOLTIP_CANCEL","BUTTON_TOOLTIP_DELETE","FILTER_TAG_IDENTIFIER","JOB_GRAPHQL_ERRORS","jobMutationErrorText","jobQueryErrorText","ICONS","TAG","MR","BRANCH","RETRY","SUCCESS_STATUS","PASSED_STATUS","MANUAL_STATUS","PIPELINE_ID_KEY","PIPELINE_IID_KEY","RAW_TEXT_WARNING","TRACKING_CATEGORIES","tests","listbox","PIPELINE_POLL_INTERVAL_BACKOFF","NETWORK_STATUS_READY","addedLines","removedLines","diffsCount","diffFilesLength","filesText","isCompareVersionsHeader","hasDiffFiles","notDiffable","fileStats","assigneesQueries","issuableAssigneesUpdated","handleFetchResult","setAssigneesFromRealtime","UncollapsedAssigneeList","signedIn","assigneesText","emptyUsers","InviteMembersTrigger","triggerSource","assigneesWidget","assignTo","IssuableAssignees","SidebarInviteMembers","SidebarAssigneesRealtime","UserSelect","directlyInviteMembers","initialAssignees","TYPE_ALERT","isSettingAssignees","oldSelected","_node$mergeRequestInt","shouldEnableRealtime","assigneeText","isAssigneesLoading","_gon","_gon2","_gon3","current_user_avatar_url","assigneeShortcutDescription","assigneeShortcutKey","assigneeTooltip","assigneeUsernames","issuableSetAssignees","assignSelf","saveAssignees","usernames","collapseWidget","expandWidget","userSelect","showError","setDirtyState","baseIsRegExp","nodeIsRegExp","reHasUnicodeWord","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","slotData","BTr","bvTableRowGroup","isRowDark","trClasses","trAttrs","baseProperty","getSymbolsIn","isDrop","fromRight","formattedDate","hasDate","resetText","SidebarFormattedDate","dateType","dateIsFixed","dateFields","isDateFixed","fixed","hasFixedDate","dateFixed","formattedFixedDate","noDate","formattedInheritedDate","dateFromMilestones","GlDatepicker","SidebarInheritDate","dateTypes","due","canInherit","dateQueries","skipIssueDueDateSubscription","startDateQueries","dueDateQueries","dateLabel","removeDateLabel","removeStartDate","removeDueDate","dateValue","first_day_of_week","parsedDate","dataTestId","epicDatePopoverEl","epicDatePopover","openDatePicker","datePicker","setFixedDate","toISODateFormat","issuableSetDate","dateHelpValidMessage","dateHelpUrl","esprima","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","decorateData","entity","tempFile","opened","rawPath","file_lock","parentPath","mimeType","lastCommitSha","lastOpenedAt","mrChange","prevPath","setPageTitleForFile","setPageTitle","currentBranchId","currentProjectId","commitActionForFile","createCommitPayload","newBranch","preBuiltCommitMessage","stagedFiles","isBlob","isBlobUrl","previous_path","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","isAbsolute","dataView","disableLabels","labelsList","labelsString","labelFilterUrl","lockOnMerge","handleCollapsedClick","getStatusLabel","_STATUS_LABELS$status","STATUS_LABELS","failureType","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","projectFullPath","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","getIssuesQuery","getIssuesCountQuery","moveIssueMutation","moveIssueInput","targetProjectPath","referenceQueries","reviewers","reviewer","defaultDropdownText","handleReset","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","SidebarReviewers","isInIssuePage","isInDesignPage","reviewersInputEl","SidebarReviewersInputs","reviewerDropdown","userDropdown","trackAction","trackLabel","trackShowInviteMemberLink","MilestoneDropdown","mountSidebarLabelsWidget","LabelsSelectWidget","projectIssuesPath","isInIncidentPage","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","projectArchivedWarning","lockedIssueWarning","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","childList","subtree","stopAutoUpdate","floatingUIConfig","_this$observer","_this$stopAutoUpdate","prevented","startFloating","hadFocusWithin","hasToggled","focusToggle","toggleOnEnter","toggleOnSpace","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","toggleComponent","toggleAttributes","toggleListeners","panelClasses","TYPE_USER","TYPE_GROUP","TYPE_HIDDEN_GROUPS","RULE_TYPE_FALLBACK","RULE_NAME_ANY_APPROVER","APPROVAL_SETTINGS_I18N","approvalSettingsHeader","approvalSettingsDescription","saveChanges","loadingErrorMessage","savingErrorMessage","savingSuccessMessage","lockedByAdmin","lockedByGroupOwner","PROJECT_APPROVAL_SETTINGS_LABELS_I18N","authorApprovalLabel","preventMrApprovalRuleEditLabel","preventCommittersApprovalLabel","requireUserPasswordLabel","whenCommitAddedLabel","keepApprovalsLabel","removeApprovalsOnPushLabel","selectiveCodeOwnerRemovalsLabel","GROUP_APPROVAL_SETTINGS_LABELS_I18N","APPROVAL_DIALOG_I18N","approvalsRequiredLabel","approvalTypeLabel","approversLabel","nameLabel","nameDescription","protectedBranchLabel","protectedBranchDescription","validations","approvalsRequiredNegativeNumber","approvalsRequiredNotNumber","approvalsRequiredMinimum","approversRequired","branchesRequired","ruleNameTaken","ruleNameMissing","ruleNameTooLong","MR_APPROVALS_PROMO_DISMISSED","MR_APPROVALS_PROMO_TRACKING_EVENTS","learnMoreClick","tryNowClick","collapsePromo","expandPromo","MR_APPROVALS_PROMO_I18N","accordionTitle","promoTitle","summary","tryNow","valueStatements","DROPDOWN_OPTION_PROJECT_GROUPS","TABLE_HEADERS","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","ACTIVE_AND_BLOCKED_USER_STATES","reLatin","reComboMark","baseWhile","baseIntersection","castArrayLikeObject","intersection","mapped","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","simpleEscapeSequence","charFromCodepoint","simpleEscapeCheck","simpleEscapeMap","onWarning","legacy","typeMap","lineIndent","documents","generateError","throwWarning","directiveHandlers","YAML","major","minor","checkLineBreaks","tagMap","captureSegment","checkJson","_length","_character","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readBlockSequence","nodeIndent","_line","_anchor","anchorMap","composeNode","readTagProperty","tagHandle","isVerbatim","isNamed","readAnchorProperty","parentIndent","nodeContext","allowToSeek","allowCompact","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","flowIndent","blockIndent","indentStatus","atNewLine","hasContent","following","_pos","atExplicitKey","readBlockMapping","terminator","isPair","isExplicitPair","isMapping","readNext","readFlowCollection","captureStart","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockScalar","captureEnd","readSingleQuotedScalar","hexLength","hexResult","readDoubleQuotedScalar","readAlias","withinFlowCollection","hasPendingContent","_lineStart","_lineIndent","_kind","readPlainScalar","readDocument","directiveName","directiveArgs","documentStart","hasDirectives","loadDocuments","nullpos","loadAll","safeLoadAll","internalNote","renderedNote","internalNoteClass","caption","captionHtml","captionMixin","$caption","hasCaptionSlot","captionId","isEpicAttribute","issuableParent","_this$glFeatures","epicWidgetEditConfirmation","hasCurrentAttribute","hasEpic","shouldSkipRealTimeEpicLinkUpdates","selectedTitle","editConfirmation","_this$issuableParent","attributeTypeIcon","timeFor","_this$glFeatures2","_this$currentAttribut4","_data$issuableSetAttr","handlePopoverClose","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","_event$target","NEW_POLICY_BUTTON_TEXT","PIPELINE_EXECUTION_POLICY_TYPE_HEADER","VULNERABILITY_MANAGEMENT_POLICY_TYPE_HEADER","legacyApproval","pipelineExecution","POLICIES_LIST_CONTAINER_CLASS","computeCoordsFromPlacement","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","detectOverflow","_await$platform$isEle","elementContext","altBoundary","paddingObject","clippingClientRect","offsetScale","elementClientRect","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","escaped","getBoundingRect","minX","minY","nativeClientRects","clientRects","sortedRects","prevRect","getRectsByLine","resetRects","firstRect","lastRect","isTop","isLeftSide","maxRight","minLeft","measureRects","_middlewareData$offse","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","convertValueToCoords","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","limitShift","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","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","openRegisterTimeSpentModal","CREATE_TIMELOG_MODAL_ID","setTimeEstimateModalId","SET_TIME_ESTIMATE_MODAL_ID","GlToggle","GlAnimatedNotificationIcon","showInDropdown","subscribed","emailsDisabled","subscribedQueries","_data$workspace4","parentIsGroup","notificationTooltip","subscribeDisabledDescription","labelOn","labelOff","notificationIcon","canSubscribe","setSubscribed","subscribedState","updateIssuableSubscription","toggleSubscribed","notifications","confirmationText","customMessage","jobName","modalText","confirmButton","cancelJob","playJob","retryJob","unscheduleJob","JOB_ACTIONS","dataName","cancelJobMutation","playJobMutation","retry","retryJobMutation","unscheduleJobMutation","JobActionModal","jobId","jobAction","showConfirmationModal","actionType","hasConfirmationModal","_this$jobAction","confirmationMessage","onActionButtonClick","executeJobAction","JobActionButton","JobNameComponent","delayedJobMixin","hasJobAction","_this$status","_this$status2","detailsPath","_this$status3","statusTooltip","captionTop","noBorderCollapse","outlined","responsive","tableClass","tableRendererMixin","isTableSimple","selectableTableClasses","stackedTableClasses","computedBusy","selectableTableAttrs","ariaAttrs","renderCaption","renderColgroup","renderTbody","renderTfoot","$table","tableClasses","tableAttrs","wrapperStyles","formClass","BDropdownForm","autocomplete","displayField","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","filterEvents","filterContextListener","contextListener","related","event1","event0","onRemove","__on","onAdd","sourceEvent","mountNotesApp","PipelineAccountVerificationAlert","kebabCase","MountingPortal","toggleDrawer","ReportAbuseDropdownItem","REPORT_TYPES_KEYS","VULNERABILITY_STATE_KEYS","ANY_MERGE_REQUEST","SCAN_FINDING","LICENSE_FINDING","MATCHING","EXCEPT","LICENSE_STATES","newly_detected","emptyBuildRule","invalidRuleValues","areDuplicatesAllowed","invalidScanners","invalidSeverities","invalidVulnerabilityStates","invalidVulnerabilityAttributes","validAttributes","invalidVulnerabilitiesAllowed","vulnerabilities_allowed","invalidVulnerabilityAge","validOperators","validIntervals","validVulnerabilityStates","getDefaultRule","scanType","severity_levels","branch_type","match_on_inclusion_license","license_states","doesBranchExist","projectProtectedBranch","getInvalidBranches","uniqueBranches","invalidBranches","invalidBranchType","humanizeInvalidBranchesError","lastBranch","createNewDraft","publishDraft","addDraftToDiscussion","publish","_res$position","_draft$position","draftsPublishPath","publishReview","tabEl","draftID","expandAllDiscussions","clearDrafts","discardDrafts","draftsDiscardPath","draftsPerDiscussionId","draftsPerFileHashAndLine","shouldRenderDraftRow","diffFileSha","shouldRenderParallelDraftRow","draftsForFile","lkey","rkey","showDraftsForThisSide","isPublishingDraft","currentlyPublishingDrafts","sortedDrafts","processDraft","shouldAnimateReviewButton","publishingDraftId","isPublishing","reviewBarRendered","draftIndex","computeSuggestionCommitMessage","noEmpties","dict","final","upd","matchPhrases","replacementExpression","selectedTargetIndex","_state$startVersion","startVersion","version_index","DIFF_COMPARE_BASE_VERSION_INDEX","selectedSourceIndex","mergeRequestDiff","selectedContextCommitsDiffs","contextCommitsDiff","showing_context_commits_diff","diffCompareDropdownTargetVersions","diffHeadParam","getParameterByName","diffHead","isBaseSelected","isHeadSelected","baseVersion","head_version_path","versionName","targetBranchName","base_version_path","isBase","headVersion","DIFF_COMPARE_HEAD_VERSION_INDEX","isHead","mergeRequestDiffs","compare_path","versionIndex","diffCompareDropdownSourceVersions","versions","isLatestVersion","version_path","commitsText","commits_count","addDivider","PARALLEL_DIFF_VIEW_TYPE","isInlineView","whichCollapsedTypes","automatic","any","diffHasAllExpandedDiscussions","getDiffFileDiscussions","diffHasAllCollapsedDiscussions","_diff$discussions","diffLineDiscussionsExpanded","expandedOnDiff","allDiffDiscussionsExpanded","highlightedLines","_diff$discussions2","isTreePathLoaded","_state$treeEntries$pa","treeEntries","flatBlobsList","allBlobs","isHeader","commentForms","fileLineCoverage","coverageFiles","fileCoverage","lineCoverage","currentDiffIndex","highlighted_diff_lines","branch_name","mrMetadata","user_full_name","isVirtualScrollingEnabled","isBatchLoading","batchLoadingState","isBatchLoadingError","linkedFile","linkedFileHash","retrievingBatches","updateDiffFilesInState","coverageLoaded","newFileData","diffPositionByLineCode","_discussion$original_","_discussion$position","originalStartLineCode","discussionLineCodes","line_codes","isTargetLine","discussionLineCode","isExpandedDiscussion","discussionItem","isHashTargeted","addDiscussion","originalDiscussions","lineHasDiscussion","showTreeList","fileId","viewedDiffFileIds","isTreeLoaded","renderTreeList","fileFinderVisible","newReviews","flattenTree","flatten","blobTree","treeToFlatten","TREE_TYPE","treeAcc","folder","getFolder","shouldGetFolder","currentFileTypeTree","firstFolder","getLowestSingleFolder","setBaseConfig","viewedId","prefetchSingleFile","treeEntry","diffId","startSha","urlParams","old","diff_head","diff_id","fetchFileByFile","_window2","EVT_PERF_MARK_DIFF_FILES_START","_state$diffFiles$","fetchDiffFilesBatch","linkedFileLoading","_window3","increaseAmount","totalLoaded","scrolledVirtualScroller","getBatch","pagination","_diffFiles$","_state$diffFiles","total_pages","code_navigation_path","codeNavigationPath","definitionPathPrefix","fetchDiffFilesMeta","strippedData","has_encoded_file_paths","merge_request_diffs","EVT_PERF_MARK_FILE_TREE_START","new_file","generateTreeList","EVT_PERF_MARK_FILE_TREE_END","VARIANT_WARNING","prefetchFileNeighbors","fetchCoverageFiles","coveragePoll","getCoverageReports","setHighlightedRow","removeParams","assignDiscussionsToDiff","_window4","EVT_DISCUSSIONS_ASSIGNED","removeDiscussionsFromDiff","removeDiscussion","toggleLineDiscussions","renderFileForDiscussionId","setDiffViewType","historyPushState","TRACKING_CLICK_DIFF_VIEW_SETTING","TRACKING_DIFF_VIEW_INLINE","TRACKING_DIFF_VIEW_PARALLEL","showCommentForm","overflowBottom","preventScroll","scrollBy","loadMoreLines","from_merge_request","scrollToLineIfNeededInline","scrollToLineIfNeededParallel","loadCollapsedDiff","_state$mergeRequestDi","versionPath","loadParams","toggleFileDiscussion","discussionWrappersExpanded","lineCodesWithDiscussions","saveDiffDiscussion","toggleTreeOpen","setTreeOpen","goToFile","scrollToFile","setShowTreeList","saving","MR_TREE_SHOW_KEY","toggleTreeList","setRenderTreeList","trackClick","TREE_LIST_STORAGE_KEY","TRACKING_CLICK_FILE_BROWSER_SETTING","TRACKING_FILE_BROWSER_TREE","TRACKING_FILE_BROWSER_LIST","setShowWhitespace","updateDatabase","show_whitespace_in_diffs","TRACKING_CLICK_WHITESPACE_SETTING","TRACKING_WHITESPACE_SHOW","TRACKING_WHITESPACE_HIDE","toggleFileFinder","receiveFullDiffError","setExpandedDiffLines","expandedDiffLines","TYPE_KEY","OLD_LINE_KEY","NEW_LINE_KEY","MAX_RENDERING_DIFF_LINES","START_RENDERING_INDEX","idleCb","startIndex","timeRemaining","MIN_RENDERING_MS","MAX_RENDERING_BULK_ROWS","fetchFullDiff","context_lines_path","full","switchToFullDiffFromRenamedFile","alternate_viewer","setFileCollapsedAutomatically","setSuggestPopoverDismissed","changeCurrentCommit","commitRE","moveToNeighboringCommit","_state$commit","_state$commit2","previousCommitId","prev_commit_id","nextCommitId","next_commit_id","canMove","rereadNoteHash","_window5","setCurrentDiffFileIdFromNote","_rootGetters$getDiscu","navigateToDiffFileIndex","setFileByFile","TRACKING_CLICK_SINGLE_FILE_SETTING","TRACKING_SINGLE_FILE_MODE","TRACKING_MULTIPLE_FILES_MODE","view_diffs_file_by_file","addDraftToFile","fetchLinkedFile","linkedFileUrl","fragmentFileHash","oldNumber","newNumber","fetchLinkedExpandedLine","matchLine","matchNewPosition","matchOldPosition","linesInBetween","isExpandBoth","previousLine","previousLineNumber","isLastMatchLine","loadLines","unlinkFile","toggleAllDiffDiscussions","expandAllFiles","collapseAllFiles","setActiveTab","_state$endpoints","isDiffsPage","setDrawer","activeDrawer","drawer","notesModule","namespaced","isDraftsFetched","findingsDrawer","canonical","imageViewMode","twoup","onion","DownloadViewer","oldPath","pixeliseValue","ImageViewer","onionMaxWidth","onionMaxHeight","onionOldImgInfo","onionNewImgInfo","onionDraggerPos","onionOpacity","onionMaxPixelWidth","onionMaxPixelHeight","onionDraggerPixelPos","stopDrag","dragTrack","dragger","leftValue","startDrag","prepareOnionSkin","onionNewImgLoaded","imgInfo","onionOldImgLoaded","swipeOldImgInfo","swipeNewImgInfo","swipeMaxWidth","swipeMaxHeight","swipeBarPos","swipeWrapWidth","swipeMaxPixelWidth","swipeMaxPixelHeight","swipeWrapPixelWidth","swipeBarPixelPos","resize","swipeFrame","prepareSwipe","swipeNewImgLoaded","swipeOldImgLoaded","newSize","oldSize","imageViewComponent","TwoUpViewer","SwipeViewer","OnionSkinViewer","isNew","isRenamed","changeMode","newMode","aMode","bMode","outputText","STATE_LOADING","STATE_ERRORED","uiText","showLink","loadError","STATE_IDLING","shortSha","canLoadFullDiff","switchToFull","transitionState","TRANSITION_LOAD_START","TRANSITION_LOAD_SUCCEED","TRANSITION_LOAD_ERROR","transitionEvent","currentState","RENAMED_DIFF_TRANSITIONS","clickLink","TRANSITION_ACKNOWLEDGE_ERROR","newSha","oldSha","RenamedFile","ModeChanged","ImageDiffViewer","DownloadDiffViewer","fullOldPath","fullNewPath","MERGED","classStateMap","EXTENSION_ICONS","neutral","notice","severityCritical","severityHigh","severityMedium","severityLow","severityInfo","severityUnknown","VIEW_MERGE_REQUEST_WIDGET","EXPAND_MERGE_REQUEST_WIDGET","CLICK_FULL_REPORT_ON_MERGE_REQUEST_WIDGET","NOT_OPEN","DISCUSSIONS_NOT_RESOLVED","DRAFT_STATUS","CI_MUST_PASS","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","inputHtmlString","getSelectedUserInputs","getSelected","checkMaxSelect","maxSelect","firstSelectedId","emitSidebarEvent","getMultiSelectDropdownTitle","selectedUser","selectedUsers","otherSelected","$input","assignee_id","openingTag","closingTag","processData","dataArg","anyUser","selectedInputs","beforeDivider","suggested","suggestedUsers","filterRemote","deprecatedJQueryDropdown","inputValue","filteredFullData","parseData","inputMeta","previouslySelected","addInput","highlightSelected","updateLabel","GitLabDropdownInstance","isEditMergeRequest","isNewMergeRequest","merge_request_iid","approval_rules","show_suggested","linkClasses","tooltipAttributes","dataUserSuggested","busyBadge","renderRowAvatar","renderApprovalRules","applicable_approval_rules","countText","renderApprovalRulesCount","ruleName","dumper","deprecated","FAILSAFE_SCHEMA","JSON_SCHEMA","CORE_SCHEMA","MINIMAL_SCHEMA","SAFE_SCHEMA","DEFAULT_SCHEMA","scan","compose","addConstructor","localWeight","previousWeight","weight","skipIssueWeightSubscription","_this$issuable$weight","hasWeight","weightLabel","noWeightLabel","collapsedWeightLabel","setWeight","shouldRemoveWeight","issuableSetWeight","_issuableSetWeight$er","_issuableSetWeight$is","_issuableSetWeight$is2","handleFormSubmit","removeWeight","inputPlaceholder","maxDisplayWeight","_n","getSymbol","getLineNumber","_lineRange$otherKey","otherLineType","startingLine","preferredSide","fallbackSide","linesCopy","startingLineCode","upToSelected","_takeRightWhile","extractProps","getCommentedLines","endLine","findLineCodeIndex","_position$left","_position$right","toggleSelection","checkedClasses"],"mappings":"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","file":"pages.projects.merge_requests.show.aa40c500.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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-break-anywhere\"},[_c('span',{staticClass:\"dropdown-label-box gl-top-0 gl-mr-3 gl-shrink-0\",style:({ 'background-color': _vm.label.color }),attrs:{\"data-testid\":\"label-color-box\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.label.title))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./label_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!./label_item.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  props: {\n    label: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-break-anywhere\">\n    <span\n      class=\"dropdown-label-box gl-top-0 gl-mr-3 gl-shrink-0\"\n      :style=\"{ 'background-color': label.color }\"\n      data-testid=\"label-color-box\"\n    ></span>\n    <span>{{ label.title }}</span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./label_item.vue?vue&type=template&id=486db2f8\"\nimport script from \"./label_item.vue?vue&type=script&lang=js\"\nexport * from \"./label_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 { 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","import ScrollParent from 'scrollparent';\nimport { contentTop } from './common_utils';\n\nconst interactionEvents = ['mousedown', 'touchstart', 'keydown', 'wheel'];\n\nexport function createResizeObserver() {\n  return new ResizeObserver((entries) => {\n    entries.forEach((entry) => {\n      entry.target.dispatchEvent(new CustomEvent(`ResizeUpdate`, { detail: { entry } }));\n    });\n  });\n}\n\n/**\n * Watches for change in size of a container element (e.g. for lazy-loaded images)\n * and scrolls the target note to the top of the content area.\n * Stops watching after any user input. So if user opens sidebar or manually\n * scrolls the page we don't hijack their scroll position\n *\n * @param {Object} options\n * @param {string} options.targetId - id of element to scroll to\n * @param {string} options.container - Selector of element containing target\n * @param {Element} options.component - Element containing target\n *\n * @return {ResizeObserver|null} - ResizeObserver instance if target looks like a note DOM ID\n */\nexport function scrollToTargetOnResize({\n  targetId = window.location.hash.slice(1),\n  container = '#content-body',\n} = {}) {\n  if (!targetId) return null;\n\n  const scrollContainer =\n    ScrollParent(document.getElementById(targetId)) || document.documentElement;\n  const scrollContainerIsDocument = scrollContainer === document.documentElement;\n\n  const ro = createResizeObserver();\n  // if we are scrolling document, add the resizeobserver to container el instead - we don't\n  // want to observe the whole document\n  const containerEl = scrollContainerIsDocument\n    ? document.querySelector(container)\n    : scrollContainer;\n  let interactionListenersAdded = false;\n\n  function keepTargetAtTop() {\n    const anchorEl = document.getElementById(targetId);\n\n    if (!anchorEl) return;\n\n    const anchorTop = anchorEl.getBoundingClientRect().top + window.scrollY;\n    const top = anchorTop - contentTop();\n    scrollContainer.scrollTo({\n      top,\n    });\n\n    if (!interactionListenersAdded) {\n      interactionEvents.forEach((event) =>\n        // eslint-disable-next-line no-use-before-define\n        document.addEventListener(event, removeListeners),\n      );\n      interactionListenersAdded = true;\n    }\n  }\n\n  function removeListeners() {\n    interactionEvents.forEach((event) => document.removeEventListener(event, removeListeners));\n\n    ro.unobserve(containerEl);\n    containerEl.removeEventListener('ResizeUpdate', keepTargetAtTop);\n  }\n\n  containerEl.addEventListener('ResizeUpdate', keepTargetAtTop);\n\n  ro.observe(containerEl);\n  return ro;\n}\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"createMergeRequest\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestCreateInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestCreate\"},\"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\":\"iid\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":163}};\n    doc.loc.source = {\"body\":\"mutation createMergeRequest($input: MergeRequestCreateInput!) {\\n  mergeRequestCreate(input: $input) {\\n    mergeRequest {\\n      id\\n      iid\\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[\"createMergeRequest\"] = oneQuery(doc, \"createMergeRequest\");\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","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n  include: [\n    require('./json')\n  ]\n});\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"readyToMergeEE\"},\"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\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ReadyToMerge\"},\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainCarCount\"},\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":288}};\n    doc.loc.source = {\"body\":\"#import \\\"~/vue_merge_request_widget/queries/states/ready_to_merge.fragment.graphql\\\"\\n#import \\\"./merge_train_car_count.fragment.graphql\\\"\\n\\nquery readyToMergeEE($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    ...ReadyToMerge\\n    ...MergeTrainCarCount\\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(\"~/vue_merge_request_widget/queries/states/ready_to_merge.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"./merge_train_car_count.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[\"readyToMergeEE\"] = oneQuery(doc, \"readyToMergeEE\");\n        \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","import Api, { DEFAULT_PER_PAGE } from '~/api';\nimport axios from '~/lib/utils/axios_utils';\nimport { contentTypeMultipartFormData } from '~/lib/utils/headers';\n\nexport default {\n  ...Api,\n  geoSitePath: '/api/:version/geo_sites/:id',\n  geoSitesPath: '/api/:version/geo_sites',\n  geoSitesStatusPath: '/api/:version/geo_sites/status',\n  ldapGroupsPath: '/api/:version/ldap/:provider/groups.json',\n  subscriptionPath: '/api/:version/namespaces/:id/gitlab_subscription',\n  childEpicPath: '/api/:version/groups/:id/epics',\n  codeReviewAnalyticsPath: '/api/:version/analytics/code_review',\n  groupActivityIssuesPath: '/api/:version/analytics/group_activity/issues_count',\n  groupActivityMergeRequestsPath: '/api/:version/analytics/group_activity/merge_requests_count',\n  groupActivityNewMembersPath: '/api/:version/analytics/group_activity/new_members_count',\n  countriesPath: '/-/countries',\n  countryStatesPath: '/-/country_states',\n  paymentFormPath: '/-/subscriptions/payment_form',\n  filePath: '/api/:version/projects/:id/repository/files/:file_path',\n  validatePaymentMethodPath: '/-/subscriptions/validate_payment_method',\n  vulnerabilityPath: '/api/:version/vulnerabilities/:id',\n  vulnerabilityActionPath: '/api/:version/vulnerabilities/:id/:action',\n  vulnerabilityIssueLinksPath: '/api/:version/vulnerabilities/:id/issue_links',\n  descendantGroupsPath: '/api/:version/groups/:group_id/descendant_groups',\n  projectDeploymentFrequencyAnalyticsPath:\n    '/api/:version/projects/:id/analytics/deployment_frequency',\n  projectGroupsPath: '/api/:version/projects/:id/groups.json',\n  issueMetricImagesPath: '/api/:version/projects/:id/issues/:issue_iid/metric_images',\n  issueMetricSingleImagePath:\n    '/api/:version/projects/:id/issues/:issue_iid/metric_images/:image_id',\n  environmentApprovalPath: '/api/:version/projects/:id/deployments/:deployment_id/approval',\n  protectedEnvironmentsPath: '/api/:version/:entity_type/:id/protected_environments/',\n  mrStatusCheckRetryPath:\n    '/api/:version/projects/:id/merge_requests/:merge_request_iid/status_checks/:external_status_check_id/retry',\n  protectedEnvironmentPath: '/api/:version/:entity_type/:id/protected_environments/:name',\n  aiCompletionsPath: '/api/:version/ai/experimentation/openai/completions',\n  aiEmbeddingsPath: '/api/:version/ai/experimentation/openai/embeddings',\n  aiChatPath: '/api/:version/ai/experimentation/openai/chat/completions',\n  tanukiBotAskPath: '/-/llm/tanuki_bot/ask',\n\n  userSubscription(namespaceId) {\n    const url = Api.buildUrl(this.subscriptionPath).replace(':id', encodeURIComponent(namespaceId));\n\n    return axios.get(url);\n  },\n\n  ldapGroups(query, provider, callback) {\n    const url = Api.buildUrl(this.ldapGroupsPath).replace(':provider', provider);\n    return axios\n      .get(url, {\n        params: {\n          search: query,\n          per_page: DEFAULT_PER_PAGE,\n          active: true,\n        },\n      })\n      .then(({ data }) => {\n        callback(data);\n\n        return data;\n      });\n  },\n\n  createChildEpic({ confidential, groupId, parentEpicId, title }) {\n    const url = Api.buildUrl(this.childEpicPath).replace(':id', encodeURIComponent(groupId));\n\n    return axios.post(url, {\n      parent_id: parentEpicId,\n      confidential,\n      title,\n    });\n  },\n\n  descendantGroups({ groupId, search }) {\n    const url = Api.buildUrl(this.descendantGroupsPath).replace(':group_id', groupId);\n\n    return axios.get(url, {\n      params: {\n        search,\n      },\n    });\n  },\n\n  codeReviewAnalytics(params = {}) {\n    const url = Api.buildUrl(this.codeReviewAnalyticsPath);\n    return axios.get(url, { params });\n  },\n\n  groupActivityMergeRequestsCount(groupPath) {\n    const url = Api.buildUrl(this.groupActivityMergeRequestsPath);\n    return axios.get(url, { params: { group_path: groupPath } });\n  },\n\n  groupActivityIssuesCount(groupPath) {\n    const url = Api.buildUrl(this.groupActivityIssuesPath);\n    return axios.get(url, { params: { group_path: groupPath } });\n  },\n\n  groupActivityNewMembersCount(groupPath) {\n    const url = Api.buildUrl(this.groupActivityNewMembersPath);\n    return axios.get(url, { params: { group_path: groupPath } });\n  },\n\n  fetchCountries() {\n    const url = Api.buildUrl(this.countriesPath);\n    return axios.get(url);\n  },\n\n  fetchStates(country) {\n    const url = Api.buildUrl(this.countryStatesPath);\n    return axios.get(url, { params: { country } });\n  },\n\n  fetchPaymentFormParams(id) {\n    const url = Api.buildUrl(this.paymentFormPath);\n    return axios.get(url, { params: { id } });\n  },\n\n  getFile(id, filePath, params = {}) {\n    const url = Api.buildUrl(this.filePath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':file_path', encodeURIComponent(filePath));\n\n    return axios.get(url, { params });\n  },\n\n  validatePaymentMethod(id, gitlabUserId) {\n    const url = Api.buildUrl(this.validatePaymentMethodPath);\n    return axios.post(url, { id, gitlab_user_id: gitlabUserId });\n  },\n\n  changeVulnerabilityState(id, state) {\n    const url = Api.buildUrl(this.vulnerabilityActionPath)\n      .replace(':id', id)\n      .replace(':action', state);\n\n    return axios.post(url);\n  },\n\n  getGeoSites() {\n    const url = Api.buildUrl(this.geoSitesPath);\n    return axios.get(url);\n  },\n\n  getGeoSitesStatus() {\n    const url = Api.buildUrl(this.geoSitesStatusPath);\n    return axios.get(url);\n  },\n\n  createGeoSite(site) {\n    const url = Api.buildUrl(this.geoSitesPath);\n    return axios.post(url, site);\n  },\n\n  updateGeoSite(site) {\n    const url = Api.buildUrl(this.geoSitesPath);\n    return axios.put(`${url}/${site.id}`, site);\n  },\n\n  removeGeoSite(id) {\n    const url = Api.buildUrl(this.geoSitePath).replace(':id', encodeURIComponent(id));\n    return axios.delete(url);\n  },\n\n  deploymentFrequencies(projectId, params = {}) {\n    const url = Api.buildUrl(this.projectDeploymentFrequencyAnalyticsPath).replace(\n      ':id',\n      encodeURIComponent(projectId),\n    );\n\n    return axios.get(url, { params });\n  },\n\n  fetchIssueMetricImages({ issueIid, id }) {\n    const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid));\n\n    return axios.get(metricImagesUrl);\n  },\n\n  uploadIssueMetricImage({ issueIid, id, file, url = null, urlText = null }) {\n    const options = { headers: { ...contentTypeMultipartFormData } };\n    const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid));\n\n    // Construct multipart form data\n    const formData = new FormData();\n    formData.append('file', file);\n    if (url) {\n      formData.append('url', url);\n    }\n    if (urlText) {\n      formData.append('url_text', urlText);\n    }\n\n    return axios.post(metricImagesUrl, formData, options);\n  },\n\n  updateIssueMetricImage({ issueIid, id, imageId, url = null, urlText = null }) {\n    const metricImagesUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid))\n      .replace(':image_id', encodeURIComponent(imageId));\n\n    // Construct multipart form data\n    const formData = new FormData();\n    if (url != null) {\n      formData.append('url', url);\n    }\n    if (urlText != null) {\n      formData.append('url_text', urlText);\n    }\n\n    return axios.put(metricImagesUrl, formData);\n  },\n\n  deleteMetricImage({ issueIid, id, imageId }) {\n    const individualMetricImageUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid))\n      .replace(':image_id', encodeURIComponent(imageId));\n\n    return axios.delete(individualMetricImageUrl);\n  },\n\n  projectGroups(id, options) {\n    const url = Api.buildUrl(this.projectGroupsPath).replace(':id', encodeURIComponent(id));\n\n    return axios\n      .get(url, {\n        params: {\n          ...options,\n        },\n      })\n      .then(({ data }) => {\n        return data;\n      });\n  },\n\n  deploymentApproval({ id, deploymentId, representedAs, approve, comment }) {\n    const url = Api.buildUrl(this.environmentApprovalPath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':deployment_id', encodeURIComponent(deploymentId));\n\n    return axios.post(url, {\n      status: approve ? 'approved' : 'rejected',\n      represented_as: representedAs,\n      comment,\n    });\n  },\n\n  approveDeployment({ id, deploymentId, representedAs, comment }) {\n    return this.deploymentApproval({ id, deploymentId, representedAs, approve: true, comment });\n  },\n  rejectDeployment({ id, deploymentId, representedAs, comment }) {\n    return this.deploymentApproval({ id, deploymentId, approve: false, representedAs, comment });\n  },\n\n  protectedEnvironments(id, entityType, params = {}) {\n    const url = Api.buildUrl(this.protectedEnvironmentsPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id));\n    return axios.get(url, { params });\n  },\n\n  createProtectedEnvironment(id, entityType, protectedEnvironment) {\n    const url = Api.buildUrl(this.protectedEnvironmentsPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id));\n    return axios.post(url, protectedEnvironment);\n  },\n\n  updateProtectedEnvironment(id, entityType, protectedEnvironment) {\n    const url = Api.buildUrl(this.protectedEnvironmentPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id))\n      .replace(':name', encodeURIComponent(protectedEnvironment.name));\n\n    return axios.put(url, protectedEnvironment);\n  },\n\n  deleteProtectedEnvironment(id, entityType, { name }) {\n    const url = Api.buildUrl(this.protectedEnvironmentPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id))\n      .replace(':name', encodeURIComponent(name));\n\n    return axios.delete(url);\n  },\n\n  requestAICompletions({ model, prompt, ...rest }) {\n    const url = Api.buildUrl(this.aiCompletionsPath);\n    return axios.post(url, { model, prompt, rest });\n  },\n\n  requestAIEmbeddings({ model, input, ...rest }) {\n    const url = Api.buildUrl(this.aiEmbeddingsPath);\n    return axios.post(url, { model, input, rest });\n  },\n\n  requestAIChat({ model, messages, ...rest }) {\n    const url = Api.buildUrl(this.aiChatPath);\n    return axios.post(url, { model, messages, rest });\n  },\n\n  requestTanukiBotResponse(q) {\n    const url = Api.buildUrl(this.tanukiBotAskPath);\n    return axios.post(url, { q });\n  },\n};\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestApprovalRule\"},\"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\":\"approvalState\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"invalidApproversRules\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"rules\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"invalid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowMergeWhenInvalid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"section\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commentedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"eligibleApprovers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scanResultPolicies\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportType\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":614}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/user.fragment.graphql\\\"\\n\\nfragment MergeRequestApprovalRule on MergeRequest {\\n  id\\n  approvalState {\\n    invalidApproversRules {\\n      id\\n    }\\n    rules {\\n      id\\n      type\\n      approved\\n      approvalsRequired\\n      invalid\\n      allowMergeWhenInvalid\\n      name\\n      section\\n      approvedBy {\\n        nodes {\\n          ...User\\n        }\\n      }\\n      commentedBy {\\n        nodes {\\n          ...User\\n        }\\n      }\\n      eligibleApprovers {\\n        ...User\\n      }\\n      scanResultPolicies {\\n        approvalsRequired\\n        name\\n        reportType\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user.fragment.graphql\").definitions));\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[\"MergeRequestApprovalRule\"] = oneQuery(doc, \"MergeRequestApprovalRule\");\n        \n","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 { __, s__ } from '~/locale';\nimport { REPORT_TYPE_SECRET_DETECTION } from '~/vue_shared/security_reports/constants';\n\nexport const DEFAULT_AGENT_NAME = '';\nexport const AGENT_KEY = 'agents';\n\nexport const SCAN_EXECUTION_RULES_PIPELINE_KEY = 'pipeline';\nexport const SCAN_EXECUTION_RULES_SCHEDULE_KEY = 'schedule';\n\nexport const SCAN_EXECUTION_RULES_LABELS = {\n  [SCAN_EXECUTION_RULES_PIPELINE_KEY]: s__('ScanExecutionPolicy|Triggers:'),\n  [SCAN_EXECUTION_RULES_SCHEDULE_KEY]: s__('ScanExecutionPolicy|Schedules:'),\n};\n\nexport const ADD_CONDITION_LABEL = s__('ScanExecutionPolicy|Add new condition');\nexport const CONDITIONS_LABEL = s__('ScanExecutionPolicy|Conditions');\n\nexport const SCAN_EXECUTION_PIPELINE_RULE = 'pipeline';\nexport const SCAN_EXECUTION_SCHEDULE_RULE = 'schedule';\n\nexport const SCAN_EXECUTION_RULE_SCOPE_BRANCH_KEY = 'branch';\nexport const SCAN_EXECUTION_RULE_SCOPE_AGENT_KEY = 'agent';\nexport const SCAN_EXECUTION_RULE_SCOPE_TYPE = {\n  [SCAN_EXECUTION_RULE_SCOPE_BRANCH_KEY]: s__('ScanExecutionPolicy|branch'),\n  [SCAN_EXECUTION_RULE_SCOPE_AGENT_KEY]: s__('ScanExecutionPolicy|agent'),\n};\n\nexport const SCAN_EXECUTION_RULE_PERIOD_DAILY_KEY = 'daily';\nexport const SCAN_EXECUTION_RULE_PERIOD_WEEKLY_KEY = 'weekly';\nexport const SCAN_EXECUTION_RULE_PERIOD_TYPE = {\n  [SCAN_EXECUTION_RULE_PERIOD_DAILY_KEY]: __('daily'),\n  [SCAN_EXECUTION_RULE_PERIOD_WEEKLY_KEY]: __('weekly'),\n};\n\nexport const ACTION_RUNNER_TAG_MODE_SPECIFIC_TAG_KEY = 'specific_tag';\nexport const ACTION_RUNNER_TAG_MODE_SELECTED_AUTOMATICALLY_KEY = 'selected_automatically';\n\nexport const TAGS_MODE_SELECTED_ITEMS = [\n  {\n    text: s__('ScanExecutionPolicy|has specific tag'),\n    value: ACTION_RUNNER_TAG_MODE_SPECIFIC_TAG_KEY,\n  },\n  {\n    text: s__('ScanExecutionPolicy|selected automatically'),\n    value: ACTION_RUNNER_TAG_MODE_SELECTED_AUTOMATICALLY_KEY,\n  },\n];\n\nexport const DEFAULT_SCANNER = REPORT_TYPE_SECRET_DETECTION;\n\nexport const SCANNER_HUMANIZED_TEMPLATE = s__(\n  'ScanExecutionPolicy|Run a %{scan} scan with the following options:',\n);\n\nexport const SCANNER_HUMANIZED_TEMPLATE_ALT = s__(\n  'ScanExecutionPolicy|Run %{scan} with the following options:',\n);\n\nexport const POLICY_ACTION_BUILDER_TAGS_ERROR_KEY = 'tags';\nexport const POLICY_ACTION_BUILDER_DAST_PROFILES_ERROR_KEY = 'profiles';\n\nexport const RUNNER_TAGS_PARSING_ERROR = s__(\n  'SecurityOrchestration|Non-existing tags have been detected in the policy yaml. As a result, rule mode has been disabled. To enable rule mode, remove those non-existing tags from the policy yaml.',\n);\n\nexport const DAST_SCANNERS_PARSING_ERROR = s__(\n  'SecurityOrchestration|Non-existing DAST profiles have been detected in the policy yaml. As a result, rule mode has been disabled. To enable rule mode, remove those non-existing profiles from the policy yaml.',\n);\n\nexport const ERROR_MESSAGE_MAP = {\n  [POLICY_ACTION_BUILDER_TAGS_ERROR_KEY]: RUNNER_TAGS_PARSING_ERROR,\n  [POLICY_ACTION_BUILDER_DAST_PROFILES_ERROR_KEY]: DAST_SCANNERS_PARSING_ERROR,\n};\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n  '^([0-9][0-9][0-9][0-9])'          + // [1] year\n  '-([0-9][0-9])'                    + // [2] month\n  '-([0-9][0-9])$');                   // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n  '^([0-9][0-9][0-9][0-9])'          + // [1] year\n  '-([0-9][0-9]?)'                   + // [2] month\n  '-([0-9][0-9]?)'                   + // [3] day\n  '(?:[Tt]|[ \\\\t]+)'                 + // ...\n  '([0-9][0-9]?)'                    + // [4] hour\n  ':([0-9][0-9])'                    + // [5] minute\n  ':([0-9][0-9])'                    + // [6] second\n  '(?:\\\\.([0-9]*))?'                 + // [7] fraction\n  '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n  '(?::([0-9][0-9]))?))?$');           // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n  if (data === null) return false;\n  if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n  if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n  return false;\n}\n\nfunction constructYamlTimestamp(data) {\n  var match, year, month, day, hour, minute, second, fraction = 0,\n      delta = null, tz_hour, tz_minute, date;\n\n  match = YAML_DATE_REGEXP.exec(data);\n  if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n  if (match === null) throw new Error('Date resolve error');\n\n  // match: [1] year [2] month [3] day\n\n  year = +(match[1]);\n  month = +(match[2]) - 1; // JS month starts with 0\n  day = +(match[3]);\n\n  if (!match[4]) { // no hour\n    return new Date(Date.UTC(year, month, day));\n  }\n\n  // match: [4] hour [5] minute [6] second [7] fraction\n\n  hour = +(match[4]);\n  minute = +(match[5]);\n  second = +(match[6]);\n\n  if (match[7]) {\n    fraction = match[7].slice(0, 3);\n    while (fraction.length < 3) { // milli-seconds\n      fraction += '0';\n    }\n    fraction = +fraction;\n  }\n\n  // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n  if (match[9]) {\n    tz_hour = +(match[10]);\n    tz_minute = +(match[11] || 0);\n    delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n    if (match[9] === '-') delta = -delta;\n  }\n\n  date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n  if (delta) date.setTime(date.getTime() - delta);\n\n  return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n  return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n  kind: 'scalar',\n  resolve: resolveYamlTimestamp,\n  construct: constructYamlTimestamp,\n  instanceOf: Date,\n  represent: representYamlTimestamp\n});\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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\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","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","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","\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"data-testid\":\"dropdown-footer\"}},[(_vm.allowLabelCreate)?_c('gl-dropdown-item',{attrs:{\"data-testid\":\"create-label-button\"},nativeOn:{\"!click\":function($event){$event.stopPropagation();return _vm.$emit('toggleDropdownContentsCreateView')}}},[_vm._v(\"\\n    \"+_vm._s(_vm.footerCreateLabelTitle)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(_vm.showManageLabelsItem)?_c('gl-dropdown-item',{attrs:{\"data-testid\":\"manage-labels-button\",\"href\":_vm.labelsManagePath},nativeOn:{\"!click\":function($event){$event.stopPropagation();}}},[_vm._v(\"\\n    \"+_vm._s(_vm.footerManageLabelTitle)+\"\\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!./dropdown_footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dropdown_footer.vue?vue&type=script&lang=js\"","<script>\nimport { GlDropdownItem } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlDropdownItem,\n  },\n  inject: ['allowLabelCreate', 'labelsManagePath'],\n  props: {\n    footerCreateLabelTitle: {\n      type: String,\n      required: true,\n    },\n    footerManageLabelTitle: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    showManageLabelsItem() {\n      return this.footerManageLabelTitle && this.labelsManagePath;\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"dropdown-footer\">\n    <gl-dropdown-item\n      v-if=\"allowLabelCreate\"\n      data-testid=\"create-label-button\"\n      @click.capture.native.stop=\"$emit('toggleDropdownContentsCreateView')\"\n    >\n      {{ footerCreateLabelTitle }}\n    </gl-dropdown-item>\n    <gl-dropdown-item\n      v-if=\"showManageLabelsItem\"\n      data-testid=\"manage-labels-button\"\n      :href=\"labelsManagePath\"\n      @click.capture.native.stop\n    >\n      {{ footerManageLabelTitle }}\n    </gl-dropdown-item>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./dropdown_footer.vue?vue&type=template&id=77bef9ca\"\nimport script from \"./dropdown_footer.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown_footer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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 { 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","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n  return true;\n}\n\nfunction constructJavascriptUndefined() {\n  /*eslint-disable no-undefined*/\n  return undefined;\n}\n\nfunction representJavascriptUndefined() {\n  return '';\n}\n\nfunction isUndefined(object) {\n  return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n  kind: 'scalar',\n  resolve: resolveJavascriptUndefined,\n  construct: constructJavascriptUndefined,\n  predicate: isUndefined,\n  represent: representJavascriptUndefined\n});\n","import { isEmpty } from 'lodash';\nimport { safeLoad } from 'js-yaml';\nimport {\n  EXCLUDING,\n  INCLUDING,\n} from 'ee/security_orchestration/components/policy_editor/scope/constants';\nimport { NAMESPACE_TYPES } from 'ee/security_orchestration/constants';\nimport {\n  REPORT_TYPE_DEPENDENCY_SCANNING,\n  REPORT_TYPE_CONTAINER_SCANNING,\n} from '~/vue_shared/security_reports/constants';\nimport { SCAN_EXECUTION_RULES_SCHEDULE_KEY } from 'ee/security_orchestration/components/policy_editor/scan_execution/constants';\nimport { POLICY_TYPE_COMPONENT_OPTIONS } from './constants';\n\nexport const isPolicyInherited = (source) => source?.inherited === true;\n\nexport const policyHasNamespace = (source) => Boolean(source?.namespace);\n\n/**\n * @param policyScope policy scope object on security policy\n * @returns {Boolean}\n */\nexport const isDefaultMode = (policyScope) => {\n  const {\n    complianceFrameworks: { nodes: frameworks } = {},\n    excludingProjects: { nodes: excluding } = {},\n    includingProjects: { nodes: including } = {},\n  } = policyScope || {};\n\n  const noScope = (items) => items?.length === 0;\n  const existingDefaultScope = noScope(frameworks) && noScope(excluding) && noScope(including);\n\n  return (\n    policyScope === undefined ||\n    policyScope === null ||\n    isEmpty(policyScope) ||\n    existingDefaultScope\n  );\n};\n\n/**\n * Returns true if police scope has projects that are excluded from it\n * @param policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasExcludingProjects = (policyScope = {}) => {\n  const { excludingProjects: { nodes: excluding = [] } = {} } = policyScope || {};\n  return excluding?.filter(Boolean).length > 0;\n};\n\n/**\n * Returns true if policy scope applies to specific projects\n * @param policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasIncludingProjects = (policyScope = {}) => {\n  const { includingProjects: { nodes: including = [] } = {} } = policyScope || {};\n  return including?.filter(Boolean).length > 0;\n};\n\n/**\n * Based on existence excluding or including projects on policy scope\n * return appropriate key\n * @param policyScope policyScope policy scope object on security policy\n * @returns {string|INCLUDING|EXCLUDING}\n */\nexport const policyScopeProjectsKey = (policyScope = {}) => {\n  return policyScopeHasIncludingProjects(policyScope) ? INCLUDING : EXCLUDING;\n};\n\n/**\n * Based on existence including groups on policy scope\n * return appropriate key\n * @param {Object} policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasGroups = (policyScope = {}) => {\n  const { includingGroups: { nodes = [] } = {} } = policyScope || {};\n  return nodes?.filter(Boolean).length > 0;\n};\n\n/**\n * Number of linked to policy scope projects\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Number}\n */\nexport const policyScopeProjectLength = (policyScope = {}) => {\n  return (\n    policyScope?.[`${policyScopeProjectsKey(policyScope)}Projects`]?.nodes?.filter(Boolean)\n      .length || 0\n  );\n};\n\n/**\n * Check if policy scope has compliance frameworks\n * @param policyScope policyScope policy scope object on security policy\n * @returns {boolean}\n */\nexport const policyScopeHasComplianceFrameworks = (policyScope = {}) => {\n  const { complianceFrameworks: { nodes = [] } = {} } = policyScope || {};\n  return nodes?.filter(Boolean).length > 0;\n};\n\n/**\n * Extract ids from including groups\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Array}\n */\nexport const policyScopeGroups = (policyScope = {}) => {\n  return policyScope?.includingGroups?.nodes || [];\n};\n\n/**\n * Extract ids from excluding projects\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Array}\n */\nexport const policyExcludingProjects = (policyScope = {}) => {\n  return policyScope?.excludingProjects?.nodes || [];\n};\n\n/**\n * Extract ids from compliance frameworks\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Array}\n */\nexport const policyScopeComplianceFrameworks = (policyScope = {}) => {\n  return policyScope?.complianceFrameworks?.nodes || [];\n};\n\n/**\n * Extract ids from projects\n * @param policyScope policyScope policy scope object on security policy\n * @returns {Object}\n */\nexport const policyScopeProjects = (policyScope = {}) => {\n  const { nodes = [], pageInfo = {} } =\n    policyScope?.[`${policyScopeProjectsKey(policyScope)}Projects`] || {};\n  return {\n    projects: nodes,\n    pageInfo,\n  };\n};\n\n/**\n * Check if namespace is a project type\n * @param namespaceType\n * @returns {boolean}\n */\nexport const isProject = (namespaceType) => namespaceType === NAMESPACE_TYPES.PROJECT;\n\n/**\n * Check if namespace is a group type\n * @param namespaceType\n * @returns {boolean}\n */\nexport const isGroup = (namespaceType) => namespaceType === NAMESPACE_TYPES.GROUP;\n\n/**\n * Returns if scanner has \"scanning\" in it\n * @param {string} scanner\n * @returns {boolean}\n */\nexport const isScanningReport = (scanner) =>\n  [REPORT_TYPE_CONTAINER_SCANNING, REPORT_TYPE_DEPENDENCY_SCANNING].includes(scanner);\n\n/**\n * Parses the policy from yaml to an object\n * @param {Object} manifest policy in yaml form\n * @returns\n */\nexport const fromYaml = ({ manifest }) => {\n  try {\n    return safeLoad(manifest, { json: true });\n  } catch {\n    /**\n     * Catch parsing error of safeLoad\n     */\n    return { error: true, key: 'yaml-parsing' };\n  }\n};\n\n/**\n * Check if the policy is a scan execution policy and has a scheduled rule\n * @param {Object} policy\n * @returns {Boolean}\n */\nexport const hasScheduledRule = (policy) => {\n  let policyObject = policy;\n\n  // Handle policy list policies\n  if (\n    policyObject.yaml &&\n    // eslint-disable-next-line no-underscore-dangle\n    policyObject.__typename === POLICY_TYPE_COMPONENT_OPTIONS.scanExecution.typeName\n  ) {\n    policyObject = fromYaml({ manifest: policyObject.yaml });\n  }\n\n  return policyObject?.rules?.some(({ type }) => type === SCAN_EXECUTION_RULES_SCHEDULE_KEY);\n};\n\nexport const checkForPerformanceRisk = ({ policy, namespaceType, projectsCount }) => {\n  const PROJECTS_COUNT_PERFORMANCE_LIMIT = 1000;\n\n  return (\n    hasScheduledRule(policy) &&\n    isGroup(namespaceType) &&\n    projectsCount > PROJECTS_COUNT_PERFORMANCE_LIMIT\n  );\n};\n\nconst isValidPolicyType = (type) => {\n  const validTypes = Object.values(POLICY_TYPE_COMPONENT_OPTIONS).map(\n    ({ urlParameter }) => urlParameter,\n  );\n  return validTypes.includes(type);\n};\n\n/**\n * Policy type, in this case, policy type is a wrapper\n * for a policy content. This method extracts policy content from\n * a wrapper\n * @param manifest policy in yaml format\n * @param type policy type\n * @param withType wheather include or not include type property in a policy body\n * @returns {*|{policy: {}}}\n */\nexport const extractPolicyContent = ({ manifest, type, withType = false }) => {\n  const defaultPayload = {\n    policy: {},\n    parsingError: { hasParsingError: true, actions: true, rules: true },\n  };\n\n  try {\n    if (!isValidPolicyType(type)) {\n      return defaultPayload;\n    }\n\n    const parsedYaml = safeLoad(manifest, { json: true });\n\n    /**\n     * Remove type property from yaml\n     * Type now is a parent property\n     */\n    const hasLegacyTypeRootProperty = 'type' in parsedYaml;\n    if (hasLegacyTypeRootProperty) {\n      delete parsedYaml.type;\n    }\n\n    const hasNewTypeRootProperty = type in parsedYaml;\n    const extractedPolicy = hasNewTypeRootProperty ? parsedYaml[type] : parsedYaml;\n\n    const isArray = Array.isArray(extractedPolicy);\n    const policy = isArray ? extractedPolicy[0] : extractedPolicy;\n\n    if (withType) {\n      policy.type = type;\n    }\n\n    return policy || {};\n  } catch {\n    return defaultPayload;\n  }\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"PageInfo\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasPreviousPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"startCursor\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":92}};\n    doc.loc.source = {\"body\":\"fragment PageInfo on PageInfo {\\n  hasNextPage\\n  hasPreviousPage\\n  startCursor\\n  endCursor\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"PageInfo\"] = oneQuery(doc, \"PageInfo\");\n        \n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n  var result = reUnicode.lastIndex = 0;\n  while (reUnicode.test(string)) {\n    ++result;\n  }\n  return result;\n}\n\nmodule.exports = unicodeSize;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n  if (number === number) {\n    if (upper !== undefined) {\n      number = number <= upper ? number : upper;\n    }\n    if (lower !== undefined) {\n      number = number >= lower ? number : lower;\n    }\n  }\n  return number;\n}\n\nmodule.exports = baseClamp;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"issueParents\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableState\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssuableSearchableField\"}}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iidStartsWith\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"IssueType\"}}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"attributes\"},\"name\":{\"kind\":\"Name\",\"value\":\"workItems\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iidStartsWith\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"in\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"types\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeAncestors\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeDescendants\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":false}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"workItemType\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":571}};\n    doc.loc.source = {\"body\":\"query issueParents(\\n  $fullPath: ID!\\n  $title: String\\n  $state: IssuableState\\n  $in: [IssuableSearchableField!]\\n  $iidStartsWith: String\\n  $types: [IssueType!]\\n) {\\n  workspace: group(fullPath: $fullPath) {\\n    id\\n    attributes: workItems(\\n      search: $title\\n      iid: $iidStartsWith\\n      in: $in\\n      state: $state\\n      types: $types\\n      includeAncestors: true\\n      includeDescendants: false\\n    ) {\\n      nodes {\\n        id\\n        iid\\n        title\\n        webUrl\\n        state\\n        workItemType {\\n          id\\n          name\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"issueParents\"] = oneQuery(doc, \"issueParents\");\n        \n","(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([\"jquery\"], function ($) {\n      return (root.returnExportsGlobal = factory($));\n    });\n  } else if (typeof exports === 'object') {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like enviroments that support module.exports,\n    // like Node.\n    module.exports = factory(require(\"jquery\"));\n  } else {\n    factory(jQuery);\n  }\n}(this, function ($) {\n\n/*\n  Implement Github like autocomplete mentions\n  http://ichord.github.com/At.js\n\n  Copyright (c) 2013 chord.luo@gmail.com\n  Licensed under the MIT license.\n*/\n\n/*\n本插件操作 textarea 或者 input 内的插入符\n只实现了获得插入符在文本框中的位置,我设置\n插入符的位置.\n*/\n\n\"use strict\";\nvar EditableCaret, InputCaret, Mirror, Utils, discoveryIframeOf, methods, oDocument, oFrame, oWindow, pluginName, setContextBy;\n\npluginName = 'caret';\n\nEditableCaret = (function() {\n  function EditableCaret($inputor) {\n    this.$inputor = $inputor;\n    this.domInputor = this.$inputor[0];\n  }\n\n  EditableCaret.prototype.setPos = function(pos) {\n    var fn, found, offset, sel;\n    if (sel = oWindow.getSelection()) {\n      offset = 0;\n      found = false;\n      (fn = function(pos, parent) {\n        var node, range, _i, _len, _ref, _results;\n        _ref = parent.childNodes;\n        _results = [];\n        for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n          node = _ref[_i];\n          if (found) {\n            break;\n          }\n          if (node.nodeType === 3) {\n            if (offset + node.length >= pos) {\n              found = true;\n              range = oDocument.createRange();\n              range.setStart(node, pos - offset);\n              sel.removeAllRanges();\n              sel.addRange(range);\n              break;\n            } else {\n              _results.push(offset += node.length);\n            }\n          } else {\n            _results.push(fn(pos, node));\n          }\n        }\n        return _results;\n      })(pos, this.domInputor);\n    }\n    return this.domInputor;\n  };\n\n  EditableCaret.prototype.getIEPosition = function() {\n    return this.getPosition();\n  };\n\n  EditableCaret.prototype.getPosition = function() {\n    var inputor_offset, offset;\n    offset = this.getOffset();\n    inputor_offset = this.$inputor.offset();\n    offset.left -= inputor_offset.left;\n    offset.top -= inputor_offset.top;\n    return offset;\n  };\n\n  EditableCaret.prototype.getOldIEPos = function() {\n    var preCaretTextRange, textRange;\n    textRange = oDocument.selection.createRange();\n    preCaretTextRange = oDocument.body.createTextRange();\n    preCaretTextRange.moveToElementText(this.domInputor);\n    preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n    return preCaretTextRange.text.length;\n  };\n\n  EditableCaret.prototype.getPos = function() {\n    var clonedRange, pos, range;\n    if (range = this.range()) {\n      clonedRange = range.cloneRange();\n      clonedRange.selectNodeContents(this.domInputor);\n      clonedRange.setEnd(range.endContainer, range.endOffset);\n      pos = clonedRange.toString().length;\n      clonedRange.detach();\n      return pos;\n    } else if (oDocument.selection) {\n      return this.getOldIEPos();\n    }\n  };\n\n  EditableCaret.prototype.getOldIEOffset = function() {\n    var range, rect;\n    range = oDocument.selection.createRange().duplicate();\n    range.moveStart(\"character\", -1);\n    rect = range.getBoundingClientRect();\n    return {\n      height: rect.bottom - rect.top,\n      left: rect.left,\n      top: rect.top\n    };\n  };\n\n  EditableCaret.prototype.getOffset = function(pos) {\n    var clonedRange, offset, range, rect, shadowCaret;\n    if (oWindow.getSelection && (range = this.range())) {\n      if (range.endOffset - 1 > 0 && range.endContainer !== this.domInputor) {\n        clonedRange = range.cloneRange();\n        clonedRange.setStart(range.endContainer, range.endOffset - 1);\n        clonedRange.setEnd(range.endContainer, range.endOffset);\n        rect = clonedRange.getBoundingClientRect();\n        offset = {\n          height: rect.height,\n          left: rect.left + rect.width,\n          top: rect.top\n        };\n        clonedRange.detach();\n      }\n      if (!offset || (offset != null ? offset.height : void 0) === 0) {\n        clonedRange = range.cloneRange();\n        shadowCaret = $(oDocument.createTextNode(\"|\"));\n        clonedRange.insertNode(shadowCaret[0]);\n        clonedRange.selectNode(shadowCaret[0]);\n        rect = clonedRange.getBoundingClientRect();\n        offset = {\n          height: rect.height,\n          left: rect.left,\n          top: rect.top\n        };\n        shadowCaret.remove();\n        clonedRange.detach();\n      }\n    } else if (oDocument.selection) {\n      offset = this.getOldIEOffset();\n    }\n    if (offset) {\n      offset.top += $(oWindow).scrollTop();\n      offset.left += $(oWindow).scrollLeft();\n    }\n    return offset;\n  };\n\n  EditableCaret.prototype.range = function() {\n    var sel;\n    if (!oWindow.getSelection) {\n      return;\n    }\n    sel = oWindow.getSelection();\n    if (sel.rangeCount > 0) {\n      return sel.getRangeAt(0);\n    } else {\n      return null;\n    }\n  };\n\n  return EditableCaret;\n\n})();\n\nInputCaret = (function() {\n  function InputCaret($inputor) {\n    this.$inputor = $inputor;\n    this.domInputor = this.$inputor[0];\n  }\n\n  InputCaret.prototype.getIEPos = function() {\n    var endRange, inputor, len, normalizedValue, pos, range, textInputRange;\n    inputor = this.domInputor;\n    range = oDocument.selection.createRange();\n    pos = 0;\n    if (range && range.parentElement() === inputor) {\n      normalizedValue = inputor.value.replace(/\\r\\n/g, \"\\n\");\n      len = normalizedValue.length;\n      textInputRange = inputor.createTextRange();\n      textInputRange.moveToBookmark(range.getBookmark());\n      endRange = inputor.createTextRange();\n      endRange.collapse(false);\n      if (textInputRange.compareEndPoints(\"StartToEnd\", endRange) > -1) {\n        pos = len;\n      } else {\n        pos = -textInputRange.moveStart(\"character\", -len);\n      }\n    }\n    return pos;\n  };\n\n  InputCaret.prototype.getPos = function() {\n    if (oDocument.selection) {\n      return this.getIEPos();\n    } else {\n      return this.domInputor.selectionStart;\n    }\n  };\n\n  InputCaret.prototype.setPos = function(pos) {\n    var inputor, range;\n    inputor = this.domInputor;\n    if (oDocument.selection) {\n      range = inputor.createTextRange();\n      range.move(\"character\", pos);\n      range.select();\n    } else if (inputor.setSelectionRange) {\n      inputor.setSelectionRange(pos, pos);\n    }\n    return inputor;\n  };\n\n  InputCaret.prototype.getIEOffset = function(pos) {\n    var h, textRange, x, y;\n    textRange = this.domInputor.createTextRange();\n    pos || (pos = this.getPos());\n    textRange.move('character', pos);\n    x = textRange.boundingLeft;\n    y = textRange.boundingTop;\n    h = textRange.boundingHeight;\n    return {\n      left: x,\n      top: y,\n      height: h\n    };\n  };\n\n  InputCaret.prototype.getOffset = function(pos) {\n    var $inputor, offset, position;\n    $inputor = this.$inputor;\n    if (oDocument.selection) {\n      offset = this.getIEOffset(pos);\n      offset.top += $(oWindow).scrollTop() + $inputor.scrollTop();\n      offset.left += $(oWindow).scrollLeft() + $inputor.scrollLeft();\n      return offset;\n    } else {\n      offset = $inputor.offset();\n      position = this.getPosition(pos);\n      return offset = {\n        left: offset.left + position.left - $inputor.scrollLeft(),\n        top: offset.top + position.top - $inputor.scrollTop(),\n        height: position.height\n      };\n    }\n  };\n\n  InputCaret.prototype.getPosition = function(pos) {\n    var $inputor, at_rect, end_range, format, html, mirror, start_range;\n    $inputor = this.$inputor;\n    format = function(value) {\n      value = value.replace(/<|>|`|\"|&/g, '?').replace(/\\r\\n|\\r|\\n/g, \"<br/>\");\n      if (/firefox/i.test(navigator.userAgent)) {\n        value = value.replace(/\\s/g, '&nbsp;');\n      }\n      return value;\n    };\n    if (pos === void 0) {\n      pos = this.getPos();\n    }\n    start_range = $inputor.val().slice(0, pos);\n    end_range = $inputor.val().slice(pos);\n    html = \"<span style='position: relative; display: inline;'>\" + format(start_range) + \"</span>\";\n    html += \"<span id='caret' style='position: relative; display: inline;'>|</span>\";\n    html += \"<span style='position: relative; display: inline;'>\" + format(end_range) + \"</span>\";\n    mirror = new Mirror($inputor);\n    return at_rect = mirror.create(html).rect();\n  };\n\n  InputCaret.prototype.getIEPosition = function(pos) {\n    var h, inputorOffset, offset, x, y;\n    offset = this.getIEOffset(pos);\n    inputorOffset = this.$inputor.offset();\n    x = offset.left - inputorOffset.left;\n    y = offset.top - inputorOffset.top;\n    h = offset.height;\n    return {\n      left: x,\n      top: y,\n      height: h\n    };\n  };\n\n  return InputCaret;\n\n})();\n\nMirror = (function() {\n  Mirror.prototype.css_attr = [\"borderBottomWidth\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderLeftStyle\", \"borderTopWidth\", \"boxSizing\", \"fontFamily\", \"fontSize\", \"fontWeight\", \"height\", \"letterSpacing\", \"lineHeight\", \"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"outlineWidth\", \"overflow\", \"overflowX\", \"overflowY\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"paddingTop\", \"textAlign\", \"textOverflow\", \"textTransform\", \"whiteSpace\", \"wordBreak\", \"wordWrap\"];\n\n  function Mirror($inputor) {\n    this.$inputor = $inputor;\n  }\n\n  Mirror.prototype.mirrorCss = function() {\n    var css,\n      _this = this;\n    css = {\n      position: 'absolute',\n      left: -9999,\n      top: 0,\n      zIndex: -20000\n    };\n    if (this.$inputor.prop('tagName') === 'TEXTAREA') {\n      this.css_attr.push('width');\n    }\n    $.each(this.css_attr, function(i, p) {\n      return css[p] = _this.$inputor.css(p);\n    });\n    return css;\n  };\n\n  Mirror.prototype.create = function(html) {\n    this.$mirror = $('<div></div>');\n    this.$mirror.css(this.mirrorCss());\n    this.$mirror.html(html);\n    this.$inputor.after(this.$mirror);\n    return this;\n  };\n\n  Mirror.prototype.rect = function() {\n    var $flag, pos, rect;\n    $flag = this.$mirror.find(\"#caret\");\n    pos = $flag.position();\n    rect = {\n      left: pos.left,\n      top: pos.top,\n      height: $flag.height()\n    };\n    this.$mirror.remove();\n    return rect;\n  };\n\n  return Mirror;\n\n})();\n\nUtils = {\n  contentEditable: function($inputor) {\n    return !!($inputor[0].contentEditable && $inputor[0].contentEditable === 'true');\n  }\n};\n\nmethods = {\n  pos: function(pos) {\n    if (pos || pos === 0) {\n      return this.setPos(pos);\n    } else {\n      return this.getPos();\n    }\n  },\n  position: function(pos) {\n    if (oDocument.selection) {\n      return this.getIEPosition(pos);\n    } else {\n      return this.getPosition(pos);\n    }\n  },\n  offset: function(pos) {\n    var offset;\n    offset = this.getOffset(pos);\n    return offset;\n  }\n};\n\noDocument = null;\n\noWindow = null;\n\noFrame = null;\n\nsetContextBy = function(settings) {\n  var iframe;\n  if (iframe = settings != null ? settings.iframe : void 0) {\n    oFrame = iframe;\n    oWindow = iframe.contentWindow;\n    return oDocument = iframe.contentDocument || oWindow.document;\n  } else {\n    oFrame = void 0;\n    oWindow = window;\n    return oDocument = document;\n  }\n};\n\ndiscoveryIframeOf = function($dom) {\n  var error;\n  oDocument = $dom[0].ownerDocument;\n  oWindow = oDocument.defaultView || oDocument.parentWindow;\n  try {\n    return oFrame = oWindow.frameElement;\n  } catch (_error) {\n    error = _error;\n  }\n};\n\n$.fn.caret = function(method, value, settings) {\n  var caret;\n  if (methods[method]) {\n    if ($.isPlainObject(value)) {\n      setContextBy(value);\n      value = void 0;\n    } else {\n      setContextBy(settings);\n    }\n    caret = Utils.contentEditable(this) ? new EditableCaret(this) : new InputCaret(this);\n    return methods[method].apply(caret, [value]);\n  } else {\n    return $.error(\"Method \" + method + \" does not exist on jQuery.caret\");\n  }\n};\n\n$.fn.caret.EditableCaret = EditableCaret;\n\n$.fn.caret.InputCaret = InputCaret;\n\n$.fn.caret.Utils = Utils;\n\n$.fn.caret.apis = methods;\n\n\n}));\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"data-testid\":\"dropdown-header\"}},[(!_vm.isStandalone)?_c('div',{staticClass:\"dropdown-title gl-mb-0 gl-flex gl-items-center gl-pb-4 gl-pt-2\",attrs:{\"data-testid\":\"dropdown-header-title\"}},[(_vm.showDropdownContentsCreateView)?_c('gl-button',{staticClass:\"js-btn-back dropdown-header-button !gl-p-0\",attrs:{\"aria-label\":_vm.__('Go back'),\"variant\":\"link\",\"size\":\"small\",\"icon\":\"arrow-left\",\"data-testid\":\"go-back-button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('toggleDropdownContentsCreateView')}}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"gl-grow\"},[_vm._v(_vm._s(_vm.dropdownTitle))]),_vm._v(\" \"),_c('gl-button',{staticClass:\"dropdown-header-button !gl-p-0\",attrs:{\"aria-label\":_vm.__('Close'),\"variant\":\"link\",\"size\":\"small\",\"icon\":\"close\",\"data-testid\":\"close-labels-dropdown-button\"},on:{\"click\":function($event){return _vm.$emit('closeDropdown')}}})],1):_vm._e(),_vm._v(\" \"),(!_vm.showDropdownContentsCreateView)?_c('gl-search-box-by-type',{ref:\"searchInput\",attrs:{\"value\":_vm.searchKey,\"placeholder\":_vm.__('Search labels'),\"disabled\":_vm.labelsFetchInProgress,\"data-testid\":\"dropdown-input-field\"},on:{\"input\":function($event){return _vm.$emit('input', $event)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.$emit('searchEnter', $event)}}}):_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!./dropdown_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!./dropdown_header.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlSearchBoxByType } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlButton,\n    GlSearchBoxByType,\n  },\n  props: {\n    labelsCreateTitle: {\n      type: String,\n      required: true,\n    },\n    labelsListTitle: {\n      type: String,\n      required: true,\n    },\n    showDropdownContentsCreateView: {\n      type: Boolean,\n      required: true,\n    },\n    labelsFetchInProgress: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    searchKey: {\n      type: String,\n      required: true,\n    },\n    isStandalone: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    dropdownTitle() {\n      return this.showDropdownContentsCreateView ? this.labelsCreateTitle : this.labelsListTitle;\n    },\n  },\n  methods: {\n    focusInput() {\n      this.$refs.searchInput?.focusInput();\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"dropdown-header\">\n    <div\n      v-if=\"!isStandalone\"\n      class=\"dropdown-title gl-mb-0 gl-flex gl-items-center gl-pb-4 gl-pt-2\"\n      data-testid=\"dropdown-header-title\"\n    >\n      <gl-button\n        v-if=\"showDropdownContentsCreateView\"\n        :aria-label=\"__('Go back')\"\n        variant=\"link\"\n        size=\"small\"\n        class=\"js-btn-back dropdown-header-button !gl-p-0\"\n        icon=\"arrow-left\"\n        data-testid=\"go-back-button\"\n        @click.stop=\"$emit('toggleDropdownContentsCreateView')\"\n      />\n      <span class=\"gl-grow\">{{ dropdownTitle }}</span>\n      <gl-button\n        :aria-label=\"__('Close')\"\n        variant=\"link\"\n        size=\"small\"\n        class=\"dropdown-header-button !gl-p-0\"\n        icon=\"close\"\n        data-testid=\"close-labels-dropdown-button\"\n        @click=\"$emit('closeDropdown')\"\n      />\n    </div>\n    <gl-search-box-by-type\n      v-if=\"!showDropdownContentsCreateView\"\n      ref=\"searchInput\"\n      :value=\"searchKey\"\n      :placeholder=\"__('Search labels')\"\n      :disabled=\"labelsFetchInProgress\"\n      data-testid=\"dropdown-input-field\"\n      @input=\"$emit('input', $event)\"\n      @keydown.enter=\"$emit('searchEnter', $event)\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./dropdown_header.vue?vue&type=template&id=97abd698\"\nimport script from \"./dropdown_header.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown_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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getState\"},\"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\":\"archived\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"onlyAllowMergeIfPipelineSucceeds\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowMergeOnSkippedPipeline\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainCarCount\"},\"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\":\"autoMergeEnabled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableAutoMergeStrategies\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commitCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"conflicts\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedMergeStatus\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"diffHeadSha\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeAfter\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeError\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeStatus\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeableDiscussionsState\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shouldBeRebased\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceBranchExists\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranchExists\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"draft\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainCarIndex\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":863}};\n    doc.loc.source = {\"body\":\"#import \\\"ee_else_ce/vue_merge_request_widget/queries/states/merge_train_car_index.fragment.graphql\\\"\\n#import \\\"ee_else_ce/vue_merge_request_widget/queries/states/merge_train_car_count.fragment.graphql\\\"\\n\\nquery getState($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    archived\\n    onlyAllowMergeIfPipelineSucceeds\\n    allowMergeOnSkippedPipeline\\n    ...MergeTrainCarCount\\n    mergeRequest(iid: $iid) {\\n      id\\n      autoMergeEnabled\\n      availableAutoMergeStrategies\\n      commitCount\\n      conflicts\\n      detailedMergeStatus\\n      diffHeadSha\\n      mergeAfter\\n      mergeError\\n      mergeStatus\\n      mergeable\\n      mergeableDiscussionsState\\n      shouldBeRebased\\n      sourceBranchExists\\n      state\\n      targetBranchExists\\n      userPermissions {\\n        canMerge\\n      }\\n      draft\\n      ...MergeTrainCarIndex\\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_else_ce/vue_merge_request_widget/queries/states/merge_train_car_index.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"ee_else_ce/vue_merge_request_widget/queries/states/merge_train_car_count.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[\"getState\"] = oneQuery(doc, \"getState\");\n        \n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common              = require('./common');\nvar YAMLException       = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString       = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB                  = 0x09; /* Tab */\nvar CHAR_LINE_FEED            = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN      = 0x0D; /* CR */\nvar CHAR_SPACE                = 0x20; /* Space */\nvar CHAR_EXCLAMATION          = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE         = 0x22; /* \" */\nvar CHAR_SHARP                = 0x23; /* # */\nvar CHAR_PERCENT              = 0x25; /* % */\nvar CHAR_AMPERSAND            = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE         = 0x27; /* ' */\nvar CHAR_ASTERISK             = 0x2A; /* * */\nvar CHAR_COMMA                = 0x2C; /* , */\nvar CHAR_MINUS                = 0x2D; /* - */\nvar CHAR_COLON                = 0x3A; /* : */\nvar CHAR_EQUALS               = 0x3D; /* = */\nvar CHAR_GREATER_THAN         = 0x3E; /* > */\nvar CHAR_QUESTION             = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT        = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET  = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT         = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET   = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE        = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET  = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00]   = '\\\\0';\nESCAPE_SEQUENCES[0x07]   = '\\\\a';\nESCAPE_SEQUENCES[0x08]   = '\\\\b';\nESCAPE_SEQUENCES[0x09]   = '\\\\t';\nESCAPE_SEQUENCES[0x0A]   = '\\\\n';\nESCAPE_SEQUENCES[0x0B]   = '\\\\v';\nESCAPE_SEQUENCES[0x0C]   = '\\\\f';\nESCAPE_SEQUENCES[0x0D]   = '\\\\r';\nESCAPE_SEQUENCES[0x1B]   = '\\\\e';\nESCAPE_SEQUENCES[0x22]   = '\\\\\"';\nESCAPE_SEQUENCES[0x5C]   = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85]   = '\\\\N';\nESCAPE_SEQUENCES[0xA0]   = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n  'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n  'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n  var result, keys, index, length, tag, style, type;\n\n  if (map === null) return {};\n\n  result = {};\n  keys = Object.keys(map);\n\n  for (index = 0, length = keys.length; index < length; index += 1) {\n    tag = keys[index];\n    style = String(map[tag]);\n\n    if (tag.slice(0, 2) === '!!') {\n      tag = 'tag:yaml.org,2002:' + tag.slice(2);\n    }\n    type = schema.compiledTypeMap['fallback'][tag];\n\n    if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n      style = type.styleAliases[style];\n    }\n\n    result[tag] = style;\n  }\n\n  return result;\n}\n\nfunction encodeHex(character) {\n  var string, handle, length;\n\n  string = character.toString(16).toUpperCase();\n\n  if (character <= 0xFF) {\n    handle = 'x';\n    length = 2;\n  } else if (character <= 0xFFFF) {\n    handle = 'u';\n    length = 4;\n  } else if (character <= 0xFFFFFFFF) {\n    handle = 'U';\n    length = 8;\n  } else {\n    throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n  }\n\n  return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n  this.schema        = options['schema'] || DEFAULT_FULL_SCHEMA;\n  this.indent        = Math.max(1, (options['indent'] || 2));\n  this.noArrayIndent = options['noArrayIndent'] || false;\n  this.skipInvalid   = options['skipInvalid'] || false;\n  this.flowLevel     = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n  this.styleMap      = compileStyleMap(this.schema, options['styles'] || null);\n  this.sortKeys      = options['sortKeys'] || false;\n  this.lineWidth     = options['lineWidth'] || 80;\n  this.noRefs        = options['noRefs'] || false;\n  this.noCompatMode  = options['noCompatMode'] || false;\n  this.condenseFlow  = options['condenseFlow'] || false;\n\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.explicitTypes = this.schema.compiledExplicit;\n\n  this.tag = null;\n  this.result = '';\n\n  this.duplicates = [];\n  this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n  var ind = common.repeat(' ', spaces),\n      position = 0,\n      next = -1,\n      result = '',\n      line,\n      length = string.length;\n\n  while (position < length) {\n    next = string.indexOf('\\n', position);\n    if (next === -1) {\n      line = string.slice(position);\n      position = length;\n    } else {\n      line = string.slice(position, next + 1);\n      position = next + 1;\n    }\n\n    if (line.length && line !== '\\n') result += ind;\n\n    result += line;\n  }\n\n  return result;\n}\n\nfunction generateNextLine(state, level) {\n  return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n  var index, length, type;\n\n  for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n    type = state.implicitTypes[index];\n\n    if (type.resolve(str)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n  return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n  return  (0x00020 <= c && c <= 0x00007E)\n      || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n      || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n      ||  (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char  ::= b-line-feed | b-carriage-return\n// [24] b-line-feed       ::=     #xA    /* LF */\n// [25] b-carriage-return ::=     #xD    /* CR */\n// [3]  c-byte-order-mark ::=     #xFEFF\nfunction isNsChar(c) {\n  return isPrintable(c) && !isWhitespace(c)\n    // byte-order-mark\n    && c !== 0xFEFF\n    // b-char\n    && c !== CHAR_CARRIAGE_RETURN\n    && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n  // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n  // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n  return isPrintable(c) && c !== 0xFEFF\n    // - c-flow-indicator\n    && c !== CHAR_COMMA\n    && c !== CHAR_LEFT_SQUARE_BRACKET\n    && c !== CHAR_RIGHT_SQUARE_BRACKET\n    && c !== CHAR_LEFT_CURLY_BRACKET\n    && c !== CHAR_RIGHT_CURLY_BRACKET\n    // - \":\" - \"#\"\n    // /* An ns-char preceding */ \"#\"\n    && c !== CHAR_COLON\n    && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n  // Uses a subset of ns-char - c-indicator\n  // where ns-char = nb-char - s-white.\n  return isPrintable(c) && c !== 0xFEFF\n    && !isWhitespace(c) // - s-white\n    // - (c-indicator ::=\n    // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n    && c !== CHAR_MINUS\n    && c !== CHAR_QUESTION\n    && c !== CHAR_COLON\n    && c !== CHAR_COMMA\n    && c !== CHAR_LEFT_SQUARE_BRACKET\n    && c !== CHAR_RIGHT_SQUARE_BRACKET\n    && c !== CHAR_LEFT_CURLY_BRACKET\n    && c !== CHAR_RIGHT_CURLY_BRACKET\n    // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n    && c !== CHAR_SHARP\n    && c !== CHAR_AMPERSAND\n    && c !== CHAR_ASTERISK\n    && c !== CHAR_EXCLAMATION\n    && c !== CHAR_VERTICAL_LINE\n    && c !== CHAR_EQUALS\n    && c !== CHAR_GREATER_THAN\n    && c !== CHAR_SINGLE_QUOTE\n    && c !== CHAR_DOUBLE_QUOTE\n    // | “%” | “@” | “`”)\n    && c !== CHAR_PERCENT\n    && c !== CHAR_COMMERCIAL_AT\n    && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n  var leadingSpaceRe = /^\\n* /;\n  return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN   = 1,\n    STYLE_SINGLE  = 2,\n    STYLE_LITERAL = 3,\n    STYLE_FOLDED  = 4,\n    STYLE_DOUBLE  = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n//    STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n//    STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n//    STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n  var i;\n  var char, prev_char;\n  var hasLineBreak = false;\n  var hasFoldableLine = false; // only checked if shouldTrackWidth\n  var shouldTrackWidth = lineWidth !== -1;\n  var previousLineBreak = -1; // count the first line correctly\n  var plain = isPlainSafeFirst(string.charCodeAt(0))\n          && !isWhitespace(string.charCodeAt(string.length - 1));\n\n  if (singleLineOnly) {\n    // Case: no block styles.\n    // Check for disallowed characters to rule out plain and single.\n    for (i = 0; i < string.length; i++) {\n      char = string.charCodeAt(i);\n      if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n      plain = plain && isPlainSafe(char, prev_char);\n    }\n  } else {\n    // Case: block styles permitted.\n    for (i = 0; i < string.length; i++) {\n      char = string.charCodeAt(i);\n      if (char === CHAR_LINE_FEED) {\n        hasLineBreak = true;\n        // Check if any line can be folded.\n        if (shouldTrackWidth) {\n          hasFoldableLine = hasFoldableLine ||\n            // Foldable line = too long, and not more-indented.\n            (i - previousLineBreak - 1 > lineWidth &&\n             string[previousLineBreak + 1] !== ' ');\n          previousLineBreak = i;\n        }\n      } else if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n      plain = plain && isPlainSafe(char, prev_char);\n    }\n    // in case the end is missing a \\n\n    hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n      (i - previousLineBreak - 1 > lineWidth &&\n       string[previousLineBreak + 1] !== ' '));\n  }\n  // Although every style can represent \\n without escaping, prefer block styles\n  // for multiline, since they're more readable and they don't add empty lines.\n  // Also prefer folding a super-long line.\n  if (!hasLineBreak && !hasFoldableLine) {\n    // Strings interpretable as another type have to be quoted;\n    // e.g. the string 'true' vs. the boolean true.\n    return plain && !testAmbiguousType(string)\n      ? STYLE_PLAIN : STYLE_SINGLE;\n  }\n  // Edge case: block indentation indicator can only have one digit.\n  if (indentPerLevel > 9 && needIndentIndicator(string)) {\n    return STYLE_DOUBLE;\n  }\n  // At this point we know block styles are valid.\n  // Prefer literal style unless we want to fold.\n  return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n//  since the dumper adds its own newline. This always works:\n//    • No ending newline => unaffected; already using strip \"-\" chomping.\n//    • Ending newline    => removed then restored.\n//  Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n  state.dump = (function () {\n    if (string.length === 0) {\n      return \"''\";\n    }\n    if (!state.noCompatMode &&\n        DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n      return \"'\" + string + \"'\";\n    }\n\n    var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n    // As indentation gets deeper, let the width decrease monotonically\n    // to the lower bound min(state.lineWidth, 40).\n    // Note that this implies\n    //  state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n    //  state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n    // This behaves better than a constant minimum width which disallows narrower options,\n    // or an indent threshold which causes the width to suddenly increase.\n    var lineWidth = state.lineWidth === -1\n      ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n    // Without knowing if keys are implicit/explicit, assume implicit for safety.\n    var singleLineOnly = iskey\n      // No block styles in flow mode.\n      || (state.flowLevel > -1 && level >= state.flowLevel);\n    function testAmbiguity(string) {\n      return testImplicitResolving(state, string);\n    }\n\n    switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n      case STYLE_PLAIN:\n        return string;\n      case STYLE_SINGLE:\n        return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n      case STYLE_LITERAL:\n        return '|' + blockHeader(string, state.indent)\n          + dropEndingNewline(indentString(string, indent));\n      case STYLE_FOLDED:\n        return '>' + blockHeader(string, state.indent)\n          + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n      case STYLE_DOUBLE:\n        return '\"' + escapeString(string, lineWidth) + '\"';\n      default:\n        throw new YAMLException('impossible error: invalid scalar style');\n    }\n  }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n  var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n  // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n  var clip =          string[string.length - 1] === '\\n';\n  var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n  var chomp = keep ? '+' : (clip ? '' : '-');\n\n  return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n  return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n  // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n  // unless they're before or after a more-indented line, or at the very\n  // beginning or end, in which case $k$ maps to $k$.\n  // Therefore, parse each chunk as newline(s) followed by a content line.\n  var lineRe = /(\\n+)([^\\n]*)/g;\n\n  // first line (possibly an empty line)\n  var result = (function () {\n    var nextLF = string.indexOf('\\n');\n    nextLF = nextLF !== -1 ? nextLF : string.length;\n    lineRe.lastIndex = nextLF;\n    return foldLine(string.slice(0, nextLF), width);\n  }());\n  // If we haven't reached the first content line yet, don't add an extra \\n.\n  var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n  var moreIndented;\n\n  // rest of the lines\n  var match;\n  while ((match = lineRe.exec(string))) {\n    var prefix = match[1], line = match[2];\n    moreIndented = (line[0] === ' ');\n    result += prefix\n      + (!prevMoreIndented && !moreIndented && line !== ''\n        ? '\\n' : '')\n      + foldLine(line, width);\n    prevMoreIndented = moreIndented;\n  }\n\n  return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n  if (line === '' || line[0] === ' ') return line;\n\n  // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n  var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n  var match;\n  // start is an inclusive index. end, curr, and next are exclusive.\n  var start = 0, end, curr = 0, next = 0;\n  var result = '';\n\n  // Invariants: 0 <= start <= length-1.\n  //   0 <= curr <= next <= max(0, length-2). curr - start <= width.\n  // Inside the loop:\n  //   A match implies length >= 2, so curr and next are <= length-2.\n  while ((match = breakRe.exec(line))) {\n    next = match.index;\n    // maintain invariant: curr - start <= width\n    if (next - start > width) {\n      end = (curr > start) ? curr : next; // derive end <= length-2\n      result += '\\n' + line.slice(start, end);\n      // skip the space that was output as \\n\n      start = end + 1;                    // derive start <= length-1\n    }\n    curr = next;\n  }\n\n  // By the invariants, start <= length-1, so there is something left over.\n  // It is either the whole string or a part starting from non-whitespace.\n  result += '\\n';\n  // Insert a break if the remainder is too long and there is a break available.\n  if (line.length - start > width && curr > start) {\n    result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n  } else {\n    result += line.slice(start);\n  }\n\n  return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n  var result = '';\n  var char, nextChar;\n  var escapeSeq;\n\n  for (var i = 0; i < string.length; i++) {\n    char = string.charCodeAt(i);\n    // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n    if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n      nextChar = string.charCodeAt(i + 1);\n      if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n        // Combine the surrogate pair and store it escaped.\n        result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n        // Advance index one extra since we already used that char here.\n        i++; continue;\n      }\n    }\n    escapeSeq = ESCAPE_SEQUENCES[char];\n    result += !escapeSeq && isPrintable(char)\n      ? string[i]\n      : escapeSeq || encodeHex(char);\n  }\n\n  return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n  var _result = '',\n      _tag    = state.tag,\n      index,\n      length;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    // Write only valid elements.\n    if (writeNode(state, level, object[index], false, false)) {\n      if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n      _result += state.dump;\n    }\n  }\n\n  state.tag = _tag;\n  state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n  var _result = '',\n      _tag    = state.tag,\n      index,\n      length;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    // Write only valid elements.\n    if (writeNode(state, level + 1, object[index], true, true)) {\n      if (!compact || index !== 0) {\n        _result += generateNextLine(state, level);\n      }\n\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        _result += '-';\n      } else {\n        _result += '- ';\n      }\n\n      _result += state.dump;\n    }\n  }\n\n  state.tag = _tag;\n  state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n  var _result       = '',\n      _tag          = state.tag,\n      objectKeyList = Object.keys(object),\n      index,\n      length,\n      objectKey,\n      objectValue,\n      pairBuffer;\n\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n    pairBuffer = '';\n    if (index !== 0) pairBuffer += ', ';\n\n    if (state.condenseFlow) pairBuffer += '\"';\n\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n\n    if (!writeNode(state, level, objectKey, false, false)) {\n      continue; // Skip this pair because of invalid key;\n    }\n\n    if (state.dump.length > 1024) pairBuffer += '? ';\n\n    pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n    if (!writeNode(state, level, objectValue, false, false)) {\n      continue; // Skip this pair because of invalid value.\n    }\n\n    pairBuffer += state.dump;\n\n    // Both key and value are valid.\n    _result += pairBuffer;\n  }\n\n  state.tag = _tag;\n  state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n  var _result       = '',\n      _tag          = state.tag,\n      objectKeyList = Object.keys(object),\n      index,\n      length,\n      objectKey,\n      objectValue,\n      explicitPair,\n      pairBuffer;\n\n  // Allow sorting keys so that the output file is deterministic\n  if (state.sortKeys === true) {\n    // Default sorting\n    objectKeyList.sort();\n  } else if (typeof state.sortKeys === 'function') {\n    // Custom sort function\n    objectKeyList.sort(state.sortKeys);\n  } else if (state.sortKeys) {\n    // Something is wrong\n    throw new YAMLException('sortKeys must be a boolean or a function');\n  }\n\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n    pairBuffer = '';\n\n    if (!compact || index !== 0) {\n      pairBuffer += generateNextLine(state, level);\n    }\n\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n\n    if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n      continue; // Skip this pair because of invalid key.\n    }\n\n    explicitPair = (state.tag !== null && state.tag !== '?') ||\n                   (state.dump && state.dump.length > 1024);\n\n    if (explicitPair) {\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        pairBuffer += '?';\n      } else {\n        pairBuffer += '? ';\n      }\n    }\n\n    pairBuffer += state.dump;\n\n    if (explicitPair) {\n      pairBuffer += generateNextLine(state, level);\n    }\n\n    if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n      continue; // Skip this pair because of invalid value.\n    }\n\n    if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n      pairBuffer += ':';\n    } else {\n      pairBuffer += ': ';\n    }\n\n    pairBuffer += state.dump;\n\n    // Both key and value are valid.\n    _result += pairBuffer;\n  }\n\n  state.tag = _tag;\n  state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n  var _result, typeList, index, length, type, style;\n\n  typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n  for (index = 0, length = typeList.length; index < length; index += 1) {\n    type = typeList[index];\n\n    if ((type.instanceOf  || type.predicate) &&\n        (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n        (!type.predicate  || type.predicate(object))) {\n\n      state.tag = explicit ? type.tag : '?';\n\n      if (type.represent) {\n        style = state.styleMap[type.tag] || type.defaultStyle;\n\n        if (_toString.call(type.represent) === '[object Function]') {\n          _result = type.represent(object, style);\n        } else if (_hasOwnProperty.call(type.represent, style)) {\n          _result = type.represent[style](object, style);\n        } else {\n          throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n        }\n\n        state.dump = _result;\n      }\n\n      return true;\n    }\n  }\n\n  return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n  state.tag = null;\n  state.dump = object;\n\n  if (!detectType(state, object, false)) {\n    detectType(state, object, true);\n  }\n\n  var type = _toString.call(state.dump);\n\n  if (block) {\n    block = (state.flowLevel < 0 || state.flowLevel > level);\n  }\n\n  var objectOrArray = type === '[object Object]' || type === '[object Array]',\n      duplicateIndex,\n      duplicate;\n\n  if (objectOrArray) {\n    duplicateIndex = state.duplicates.indexOf(object);\n    duplicate = duplicateIndex !== -1;\n  }\n\n  if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n    compact = false;\n  }\n\n  if (duplicate && state.usedDuplicates[duplicateIndex]) {\n    state.dump = '*ref_' + duplicateIndex;\n  } else {\n    if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n      state.usedDuplicates[duplicateIndex] = true;\n    }\n    if (type === '[object Object]') {\n      if (block && (Object.keys(state.dump).length !== 0)) {\n        writeBlockMapping(state, level, state.dump, compact);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowMapping(state, level, state.dump);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n        }\n      }\n    } else if (type === '[object Array]') {\n      var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n      if (block && (state.dump.length !== 0)) {\n        writeBlockSequence(state, arrayLevel, state.dump, compact);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowSequence(state, arrayLevel, state.dump);\n        if (duplicate) {\n          state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n        }\n      }\n    } else if (type === '[object String]') {\n      if (state.tag !== '?') {\n        writeScalar(state, state.dump, level, iskey);\n      }\n    } else {\n      if (state.skipInvalid) return false;\n      throw new YAMLException('unacceptable kind of an object to dump ' + type);\n    }\n\n    if (state.tag !== null && state.tag !== '?') {\n      state.dump = '!<' + state.tag + '> ' + state.dump;\n    }\n  }\n\n  return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n  var objects = [],\n      duplicatesIndexes = [],\n      index,\n      length;\n\n  inspectNode(object, objects, duplicatesIndexes);\n\n  for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n    state.duplicates.push(objects[duplicatesIndexes[index]]);\n  }\n  state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n  var objectKeyList,\n      index,\n      length;\n\n  if (object !== null && typeof object === 'object') {\n    index = objects.indexOf(object);\n    if (index !== -1) {\n      if (duplicatesIndexes.indexOf(index) === -1) {\n        duplicatesIndexes.push(index);\n      }\n    } else {\n      objects.push(object);\n\n      if (Array.isArray(object)) {\n        for (index = 0, length = object.length; index < length; index += 1) {\n          inspectNode(object[index], objects, duplicatesIndexes);\n        }\n      } else {\n        objectKeyList = Object.keys(object);\n\n        for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n          inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n        }\n      }\n    }\n  }\n}\n\nfunction dump(input, options) {\n  options = options || {};\n\n  var state = new State(options);\n\n  if (!state.noRefs) getDuplicateReferences(input, state);\n\n  if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n  return '';\n}\n\nfunction safeDump(input, options) {\n  return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump     = dump;\nmodule.exports.safeDump = safeDump;\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","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  return min;\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (value = +valueof(values[i], i, values)) sum += value;\n    }\n  }\n\n  return sum;\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","export {default as path} from \"./path.js\";\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","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","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\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","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.items.length)?_c('div',[_vm._v(_vm._s(_vm.emptyText))]):_c('div',[_vm._l((_vm.visibleItems),function(item){return _c('user-avatar-link',{key:item.id,attrs:{\"link-href\":item.web_url || item.webUrl,\"img-src\":item.avatar_url || item.avatarUrl,\"img-alt\":item.name,\"tooltip-text\":item.name,\"img-size\":_vm.imgSize,\"popover-user-id\":item.id,\"popover-username\":item.username,\"img-css-classes\":\"gl-mr-3\"}})}),_vm._v(\" \"),(_vm.hasBreakpoint)?[(_vm.hasHiddenItems)?_c('gl-button',{attrs:{\"variant\":\"link\"},on:{\"click\":_vm.expand}},[_vm._v(\"\\n      \"+_vm._s(_vm.expandText)+\"\\n    \")]):_c('gl-button',{attrs:{\"variant\":\"link\"},on:{\"click\":_vm.collapse}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('show less'))+\"\\n    \")])]:_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!./user_avatar_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!./user_avatar_list.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { sprintf, __ } from '~/locale';\nimport UserAvatarLink from './user_avatar_link.vue';\n\nexport default {\n  components: {\n    UserAvatarLink,\n    GlButton,\n  },\n  props: {\n    items: {\n      type: Array,\n      required: true,\n    },\n    breakpoint: {\n      type: Number,\n      required: false,\n      default: 10,\n    },\n    imgSize: {\n      type: [Number, Object],\n      required: true,\n    },\n    emptyText: {\n      type: String,\n      required: false,\n      default: __('None'),\n    },\n  },\n  data() {\n    return {\n      isExpanded: false,\n    };\n  },\n  computed: {\n    visibleItems() {\n      if (!this.hasHiddenItems) {\n        return this.items;\n      }\n\n      return this.items.slice(0, this.breakpoint);\n    },\n    hasHiddenItems() {\n      return this.hasBreakpoint && !this.isExpanded && this.items.length > this.breakpoint;\n    },\n    hasBreakpoint() {\n      return this.breakpoint > 0 && this.items.length > this.breakpoint;\n    },\n    expandText() {\n      if (!this.hasHiddenItems) {\n        return '';\n      }\n\n      const count = this.items.length - this.breakpoint;\n\n      return sprintf(__('%{count} more'), { count });\n    },\n  },\n  methods: {\n    expand() {\n      this.isExpanded = true;\n      this.$emit('expanded');\n    },\n    collapse() {\n      this.isExpanded = false;\n      this.$emit('collapsed');\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"!items.length\">{{ emptyText }}</div>\n  <div v-else>\n    <user-avatar-link\n      v-for=\"item in visibleItems\"\n      :key=\"item.id\"\n      :link-href=\"item.web_url || item.webUrl\"\n      :img-src=\"item.avatar_url || item.avatarUrl\"\n      :img-alt=\"item.name\"\n      :tooltip-text=\"item.name\"\n      :img-size=\"imgSize\"\n      :popover-user-id=\"item.id\"\n      :popover-username=\"item.username\"\n      img-css-classes=\"gl-mr-3\"\n    />\n    <template v-if=\"hasBreakpoint\">\n      <gl-button v-if=\"hasHiddenItems\" variant=\"link\" @click=\"expand\">\n        {{ expandText }}\n      </gl-button>\n      <gl-button v-else variant=\"link\" @click=\"collapse\">\n        {{ __('show less') }}\n      </gl-button>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./user_avatar_list.vue?vue&type=template&id=87fa9260\"\nimport script from \"./user_avatar_list.vue?vue&type=script&lang=js\"\nexport * from \"./user_avatar_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","<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","import { s__ } from '~/locale';\n\nexport const CLOSED = 'closed';\n\nexport const OPEN = 'open';\n\nexport const UNBLOCK_RULES_KEY = 'unblock_rules_using_execution_policies';\n\nexport const UNBLOCK_RULES_TEXT = s__(\n  'ScanResultPolicy|Make approval rules optional using scan execution policies',\n);\n","(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","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n  'kind',\n  'resolve',\n  'construct',\n  'instanceOf',\n  'predicate',\n  'represent',\n  'defaultStyle',\n  'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n  'scalar',\n  'sequence',\n  'mapping'\n];\n\nfunction compileStyleAliases(map) {\n  var result = {};\n\n  if (map !== null) {\n    Object.keys(map).forEach(function (style) {\n      map[style].forEach(function (alias) {\n        result[String(alias)] = style;\n      });\n    });\n  }\n\n  return result;\n}\n\nfunction Type(tag, options) {\n  options = options || {};\n\n  Object.keys(options).forEach(function (name) {\n    if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n      throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n    }\n  });\n\n  // TODO: Add tag format check.\n  this.tag          = tag;\n  this.kind         = options['kind']         || null;\n  this.resolve      = options['resolve']      || function () { return true; };\n  this.construct    = options['construct']    || function (data) { return data; };\n  this.instanceOf   = options['instanceOf']   || null;\n  this.predicate    = options['predicate']    || null;\n  this.represent    = options['represent']    || null;\n  this.defaultStyle = options['defaultStyle'] || null;\n  this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n  if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n    throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n  }\n}\n\nmodule.exports = Type;\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"playPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobPlay\"},\"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\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":182}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation playPipelineMiniGraphJob($id: CiProcessableID!) {\\n  jobPlay(input: { id: $id }) {\\n    job {\\n      ...Job\\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  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.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[\"playPipelineMiniGraphJob\"] = oneQuery(doc, \"playPipelineMiniGraphJob\");\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","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n  this.name     = name;\n  this.buffer   = buffer;\n  this.position = position;\n  this.line     = line;\n  this.column   = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n  var head, start, tail, end, snippet;\n\n  if (!this.buffer) return null;\n\n  indent = indent || 4;\n  maxLength = maxLength || 75;\n\n  head = '';\n  start = this.position;\n\n  while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n    start -= 1;\n    if (this.position - start > (maxLength / 2 - 1)) {\n      head = ' ... ';\n      start += 5;\n      break;\n    }\n  }\n\n  tail = '';\n  end = this.position;\n\n  while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n    end += 1;\n    if (end - this.position > (maxLength / 2 - 1)) {\n      tail = ' ... ';\n      end -= 5;\n      break;\n    }\n  }\n\n  snippet = this.buffer.slice(start, end);\n\n  return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n         common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n  var snippet, where = '';\n\n  if (this.name) {\n    where += 'in \"' + this.name + '\" ';\n  }\n\n  where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n  if (!compact) {\n    snippet = this.getSnippet();\n\n    if (snippet) {\n      where += ':\\n' + snippet;\n    }\n  }\n\n  return where;\n};\n\n\nmodule.exports = Mark;\n","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getReadyToMergeStatus\"},\"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\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":207}};\n    doc.loc.source = {\"body\":\"query getReadyToMergeStatus($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      userPermissions {\\n        canMerge\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \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[\"getReadyToMergeStatus\"] = oneQuery(doc, \"getReadyToMergeStatus\");\n        \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","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"unschedulePipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobUnschedule\"},\"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\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":188}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation unschedulePipelineMiniGraphJob($id: CiBuildID!) {\\n  jobUnschedule(input: { id: $id }) {\\n    job {\\n      ...Job\\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  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.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[\"unschedulePipelineMiniGraphJob\"] = oneQuery(doc, \"unschedulePipelineMiniGraphJob\");\n        \n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","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","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.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 { NAMESPACE_TYPES } from 'ee/security_orchestration/constants';\nimport { s__, __ } from '~/locale';\nimport {\n  SAST_SHORT_NAME,\n  DAST_SHORT_NAME,\n  DEPENDENCY_SCANNING_NAME,\n  SECRET_DETECTION_NAME,\n  CONTAINER_SCANNING_NAME,\n  SAST_IAC_SHORT_NAME,\n} from '~/security_configuration/constants';\nimport {\n  REPORT_TYPE_SAST,\n  REPORT_TYPE_SAST_IAC,\n  REPORT_TYPE_DAST,\n  REPORT_TYPE_SECRET_DETECTION,\n  REPORT_TYPE_DEPENDENCY_SCANNING,\n  REPORT_TYPE_CONTAINER_SCANNING,\n} from '~/vue_shared/security_reports/constants';\nimport { isGroup } from 'ee/security_orchestration/components/utils';\nimport { mapToListboxItems } from 'ee/security_orchestration/utils';\n\nexport const EDITOR_MODE_RULE = 'rule';\nexport const EDITOR_MODE_YAML = 'yaml';\n\nexport const PARSING_ERROR_MESSAGE = s__(\n  'SecurityOrchestration|Rule mode is unavailable for this policy. In some cases, we cannot parse the YAML file back into the rules editor.',\n);\n\nexport const ACTION_SECTION_DISABLE_ERROR = s__(\n  'SecurityOrchestration|The current YAML syntax is invalid so you cannot edit the actions in rule mode. To resolve the issue, switch to YAML mode and fix the syntax.',\n);\n\nexport const CONDITION_SECTION_DISABLE_ERROR = s__(\n  'SecurityOrchestration|The current YAML syntax is invalid so you cannot edit the conditions in rule mode. To resolve the issue, switch to YAML mode and fix the syntax.',\n);\n\nexport const EDITOR_MODES = [\n  { value: EDITOR_MODE_RULE, text: s__('SecurityOrchestration|Rule mode') },\n  { value: EDITOR_MODE_YAML, text: s__('SecurityOrchestration|.yaml mode') },\n];\n\nexport const DELETE_MODAL_CONFIG = {\n  id: 'delete-modal',\n  secondary: {\n    text: s__('SecurityOrchestration|Delete policy'),\n    attributes: { variant: 'danger' },\n  },\n  cancel: {\n    text: __('Cancel'),\n  },\n};\n\nexport const MATCH_ON_INCLUSION_LICENSE = 'match_on_inclusion_license';\n\nexport const DEFAULT_MR_TITLE = s__('SecurityOrchestration|Update scan policies');\n\nexport const POLICY_RUN_TIME_MESSAGE = s__(\n  'SecurityOrchestration|Policy changes may take some time to be applied.',\n);\n\nexport const POLICY_RUN_TIME_TOOLTIP = s__(\n  'SecurityOrchestration|For large groups, there may be a significant delay in applying policy changes to pre-existing merge requests. Policy changes typically apply almost immediately for newly created merge requests.',\n);\n\nexport const SECURITY_POLICY_ACTIONS = Object.freeze({\n  APPEND: 'APPEND',\n  REMOVE: 'REMOVE',\n  REPLACE: 'REPLACE',\n});\n\nexport const GRAPHQL_ERROR_MESSAGE = s__(\n  'SecurityOrchestration|There was a problem creating the new security policy',\n);\n\nexport const NO_RULE_MESSAGE = s__('SecurityOrchestration|No rules defined - policy will not run.');\n\nexport const ACTIONS = {\n  tags: 'TAGS',\n  variables: 'VARIABLES',\n};\n\nexport const INVALID_RULE_MESSAGE = s__(\n  'SecurityOrchestration|Invalid branch type detected - rule will not be applied.',\n);\n\nexport const INVALID_PROTECTED_BRANCHES = s__(\n  'SecurityOrchestration|The following branches do not exist on this development project: %{branches}. Please review all protected branches to ensure the values are accurate before updating this policy.',\n);\nexport const ADD_RULE_LABEL = s__('SecurityOrchestration|Add new rule');\nexport const RULES_LABEL = s__('SecurityOrchestration|Rules');\n\nexport const ADD_ACTION_LABEL = s__('SecurityOrchestration|Add new action');\nexport const ACTIONS_LABEL = s__('SecurityOrchestration|Actions');\n\nexport const RULE_IF_LABEL = __('if');\nexport const RULE_OR_LABEL = __('or');\nexport const SCOPE_LABEL = s__('SecurityOrchestration|Policy scope');\nexport const ACTION_AND_LABEL = __('and');\n\nexport const RULE_MODE_SCANNERS = {\n  [REPORT_TYPE_SAST]: SAST_SHORT_NAME,\n  [REPORT_TYPE_SAST_IAC]: SAST_IAC_SHORT_NAME,\n  [REPORT_TYPE_DAST]: DAST_SHORT_NAME,\n  [REPORT_TYPE_SECRET_DETECTION]: SECRET_DETECTION_NAME,\n  [REPORT_TYPE_CONTAINER_SCANNING]: CONTAINER_SCANNING_NAME,\n  [REPORT_TYPE_DEPENDENCY_SCANNING]: DEPENDENCY_SCANNING_NAME,\n};\n\nexport const MAX_ALLOWED_RULES_LENGTH = 5;\nexport const MAX_ALLOWED_APPROVER_ACTION_LENGTH = 5;\n\nexport const PRIMARY_POLICY_KEYS = [\n  'type',\n  'name',\n  'description',\n  'enabled',\n  'policy_scope',\n  'metadata',\n];\n\nexport const SPECIFIC_BRANCHES = {\n  id: 'SPECIFIC_BRANCHES',\n  text: __('specific protected branches'),\n  value: 'SPECIFIC_BRANCHES',\n};\n\nexport const ALL_BRANCHES = {\n  text: __('all branches'),\n  value: 'all',\n};\n\nexport const GROUP_DEFAULT_BRANCHES = {\n  text: __('all default branches'),\n  value: 'default',\n};\n\nexport const PROJECT_DEFAULT_BRANCH = {\n  text: __('default branch'),\n  value: 'default',\n};\n\nexport const ALL_PROTECTED_BRANCHES = {\n  text: __('all protected branches'),\n  value: 'protected',\n};\n\nexport const ANY_COMMIT = 'any';\nexport const ANY_UNSIGNED_COMMIT = 'unsigned';\n\nexport const ANY_OPERATOR = 'ANY';\n\nexport const GREATER_THAN_OPERATOR = 'greater_than';\n\nexport const LESS_THAN_OPERATOR = 'less_than';\n\nexport const VULNERABILITIES_ALLOWED_OPERATORS = [\n  { value: ANY_OPERATOR, text: s__('ApprovalRule|Any') },\n  { value: GREATER_THAN_OPERATOR, text: s__('ApprovalRule|More than') },\n];\n\nexport const VULNERABILITY_AGE_OPERATORS = [\n  { value: ANY_OPERATOR, text: s__('ApprovalRule|Any') },\n  { value: GREATER_THAN_OPERATOR, text: s__('ApprovalRule|Greater than') },\n  { value: LESS_THAN_OPERATOR, text: s__('ApprovalRule|Less than') },\n];\n\nexport const SCAN_RESULT_BRANCH_TYPE_OPTIONS = (nameSpaceType = NAMESPACE_TYPES.GROUP) => [\n  isGroup(nameSpaceType) ? GROUP_DEFAULT_BRANCHES : PROJECT_DEFAULT_BRANCH,\n  ALL_PROTECTED_BRANCHES,\n  SPECIFIC_BRANCHES,\n];\n\nexport const SCAN_EXECUTION_BRANCH_TYPE_OPTIONS = (nameSpaceType = NAMESPACE_TYPES.GROUP) => [\n  ALL_BRANCHES,\n  isGroup(nameSpaceType) ? GROUP_DEFAULT_BRANCHES : PROJECT_DEFAULT_BRANCH,\n  ALL_PROTECTED_BRANCHES,\n  SPECIFIC_BRANCHES,\n];\nexport const VALID_SCAN_EXECUTION_BRANCH_TYPE_OPTIONS = [\n  ALL_BRANCHES.value,\n  ALL_PROTECTED_BRANCHES.value,\n  GROUP_DEFAULT_BRANCHES.value,\n];\nexport const VALID_SCAN_RESULT_BRANCH_TYPE_OPTIONS = [\n  ALL_PROTECTED_BRANCHES.value,\n  GROUP_DEFAULT_BRANCHES.value,\n];\n\nexport const BRANCHES_KEY = 'branches';\nexport const BRANCH_TYPE_KEY = 'branch_type';\nexport const BRANCH_EXCEPTIONS_KEY = 'branch_exceptions';\n\nexport const HUMANIZED_BRANCH_TYPE_TEXT_DICT = {\n  [ALL_BRANCHES.value]: s__('SecurityOrchestration|any branch'),\n  [ALL_PROTECTED_BRANCHES.value]: s__('SecurityOrchestration|any protected branch'),\n  [GROUP_DEFAULT_BRANCHES.value]: s__('SecurityOrchestration|any default branch'),\n  [PROJECT_DEFAULT_BRANCH.value]: s__('SecurityOrchestration|the default branch'),\n};\n\nexport const MORE_LABEL = s__('SecurityOrchestration|+%{numberOfAdditionalLabels} more');\n\nexport const MULTIPLE_SELECTED_LABEL = s__(\n  'PolicyRuleMultiSelect|%{firstLabel}, %{secondLabel} %{moreLabel}',\n);\nexport const MULTIPLE_SELECTED_LABEL_SINGLE_OPTION = s__(\n  'PolicyRuleMultiSelect|%{firstLabel} %{moreLabel}',\n);\n\nexport const SELECTED_ITEMS_LABEL = s__('PolicyRuleMultiSelect|Select %{itemTypeName}');\nexport const ALL_SELECTED_LABEL = s__('PolicyRuleMultiSelect|All %{itemTypeName}');\n\nexport const REGULAR_BRANCH = 'regular';\nexport const PROTECTED_BRANCH = 'protected';\n\nexport const BRANCH_TYPES = {\n  [PROTECTED_BRANCH]: s__('SecurityOrchestration|Add protected branches'),\n  [REGULAR_BRANCH]: s__('SecurityOrchestration|Add regular branches'),\n};\n\nexport const BRANCH_TYPES_ITEMS = mapToListboxItems(BRANCH_TYPES);\n\nexport const EXCEPTION_KEY = 'exception';\nexport const NO_EXCEPTION_KEY = 'no_exception';\nexport const EXCEPTION_TYPE_ITEMS = [\n  {\n    value: EXCEPTION_KEY,\n    text: s__('SecurityOrchestration|Exceptions'),\n  },\n  {\n    value: NO_EXCEPTION_KEY,\n    text: s__('SecurityOrchestration|No exceptions'),\n  },\n];\n\nexport const SPLIT_VIEW_MAX_WIDTH = 1248;\nexport const SPLIT_VIEW_MIN_WIDTH = 340;\nexport const YAML_SECTION_INITIAL_WIDTH = 350;\nexport const RULE_SECTION_INITIAL_WIDTH = SPLIT_VIEW_MAX_WIDTH - YAML_SECTION_INITIAL_WIDTH;\nexport const RULE_SECTION_COLLAPSED_WIDTH = 76;\nexport const SPLIT_VIEW_HALF_WIDTH = SPLIT_VIEW_MAX_WIDTH / 2;\nexport const RULE_SECTION_MAX_WIDTH = SPLIT_VIEW_MAX_WIDTH - 64;\n","import createEventHub from '~/helpers/event_hub_factory';\n\nexport default createEventHub();\n","/**\n * Returns parsed notes filter data from a given element's dataset\n *\n * @param {Element} el containing info in the dataset\n */\nexport const getNotesFilterData = (el) => {\n  const { notesFilterValue: valueData, notesFilters: filtersData } = el.dataset;\n\n  const filtersParsed = filtersData ? JSON.parse(filtersData) : {};\n  const filters = Object.keys(filtersParsed).map((key) => ({\n    title: key,\n    value: filtersParsed[key],\n  }));\n\n  const value = valueData ? Number(valueData) : undefined;\n\n  return {\n    notesFilters: filters,\n    notesFilterValue: value,\n  };\n};\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","export default \"<svg enable-background=\\\"new 0 0 50 50\\\" viewBox=\\\"0 0 50 50\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><linearGradient id=\\\"a\\\" gradientUnits=\\\"userSpaceOnUse\\\" x1=\\\"10.2941\\\" x2=\\\"50\\\" y1=\\\"17.8247\\\" y2=\\\"17.8247\\\"><stop offset=\\\"0\\\" stop-color=\\\"#f39c63\\\"/><stop offset=\\\"1\\\" stop-color=\\\"#ef5d4f\\\"/></linearGradient><linearGradient id=\\\"b\\\"><stop offset=\\\"0\\\" stop-color=\\\"#231c4f\\\"/><stop offset=\\\"1\\\" stop-color=\\\"#0a0430\\\"/></linearGradient><linearGradient id=\\\"c\\\" gradientUnits=\\\"userSpaceOnUse\\\" x1=\\\"16.9118\\\" x2=\\\"25\\\" xlink:href=\\\"#b\\\" y1=\\\"27.2046\\\" y2=\\\"27.2046\\\"/><linearGradient id=\\\"d\\\" gradientUnits=\\\"userSpaceOnUse\\\" x1=\\\"27.9412\\\" x2=\\\"33.0882\\\" xlink:href=\\\"#b\\\" y1=\\\"22.0575\\\" y2=\\\"22.0575\\\"/><g clip-rule=\\\"evenodd\\\" fill-rule=\\\"evenodd\\\"><path d=\\\"m31.94 41.71-31.94 8.41v-21.23c0-4.73 3.19-8.87 7.77-10.07l19.29-5.08c6.4-1.68 12.65 3.14 12.65 9.75v8.14c0 4.74-3.19 8.88-7.77 10.08z\\\" fill=\\\"#2b6af9\\\"/><path d=\\\"m50 0v21.23c0 4.73-3.19 8.87-7.77 10.07l-14.79 3.89c-8.67 2.28-17.15-4.26-17.15-13.22v-3.49c0-4.73 3.19-8.87 7.77-10.07z\\\" fill=\\\"url(#a)\\\"/><path d=\\\"m23.36 36.33 16.35-4.3v-8.16c0-6.83-6.46-11.81-13.06-10.07l-16.35 4.3v8.16c-.01 6.82 6.45 11.8 13.06 10.07z\\\" fill=\\\"#fff\\\"/><circle cx=\\\"20.96\\\" cy=\\\"27.2\\\" fill=\\\"url(#c)\\\" r=\\\"4.04\\\"/><circle cx=\\\"30.51\\\" cy=\\\"22.06\\\" fill=\\\"url(#d)\\\" r=\\\"2.57\\\"/></g></svg>\";","import kontraLogo from 'images/vulnerability/kontra-logo.svg?raw';\nimport scwLogo from 'images/vulnerability/scw-logo.svg?raw';\nimport secureflagLogo from 'images/vulnerability/secureflag-logo.svg?raw';\nimport { __, s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nimport {\n  REPORT_TYPE_SAST,\n  REPORT_TYPE_SAST_IAC,\n  REPORT_TYPE_SECRET_DETECTION,\n} from '~/vue_shared/security_reports/constants';\n\nimport configureSastMutation from './graphql/configure_sast.mutation.graphql';\nimport configureSastIacMutation from './graphql/configure_iac.mutation.graphql';\nimport configureSecretDetectionMutation from './graphql/configure_secret_detection.mutation.graphql';\n\n/**\n * Translations for Security Configuration Page\n * Make sure to add new scanner translations to the SCANNER_NAMES_MAP below.\n */\nexport const SAST_NAME = __('Static Application Security Testing (SAST)');\nexport const SAST_SHORT_NAME = s__('ciReport|SAST');\n\nexport const ADVANCED_SAST_NAME = s__('ciReport|Advanced SAST Scanning');\n\nexport const SAST_IAC_NAME = __('Infrastructure as Code (IaC) Scanning');\nexport const SAST_IAC_SHORT_NAME = s__('ciReport|SAST IaC');\n\nexport const DAST_NAME = __('Dynamic Application Security Testing (DAST)');\nexport const DAST_SHORT_NAME = s__('ciReport|DAST');\n\nexport const DAST_PROFILES_NAME = __('DAST profiles');\nexport const DAST_HELP_PATH = helpPagePath('user/application_security/dast/index');\n\nexport const SECRET_DETECTION_NAME = __('Secret Detection');\n\nexport const DEPENDENCY_SCANNING_NAME = __('Dependency Scanning');\n\nexport const CONTAINER_SCANNING_NAME = __('Container Scanning');\n\nexport const CONTAINER_SCANNING_FOR_REGISTRY_NAME = __('Container Scanning For Registry');\n\nexport const COVERAGE_FUZZING_NAME = __('Coverage Fuzzing');\n\nexport const CORPUS_MANAGEMENT_NAME = __('Corpus Management');\n\nexport const API_FUZZING_NAME = __('API Fuzzing');\n\nexport const CLUSTER_IMAGE_SCANNING_NAME = s__('ciReport|Cluster Image Scanning');\n\nexport const PRE_RECEIVE_SECRET_DETECTION = 'pre_receive_secret_detection';\n\nexport const PRE_RECEIVE_SECRET_DETECTION_NAME = __('Secret push protection');\n\nexport const SCANNER_NAMES_MAP = {\n  SAST: SAST_SHORT_NAME,\n  SAST_ADVANCED: ADVANCED_SAST_NAME,\n  SAST_IAC: SAST_IAC_NAME,\n  DAST: DAST_SHORT_NAME,\n  API_FUZZING: API_FUZZING_NAME,\n  CONTAINER_SCANNING: CONTAINER_SCANNING_NAME,\n  CONTAINER_SCANNING_FOR_REGISTRY: CONTAINER_SCANNING_FOR_REGISTRY_NAME,\n  COVERAGE_FUZZING: COVERAGE_FUZZING_NAME,\n  SECRET_DETECTION: SECRET_DETECTION_NAME,\n  DEPENDENCY_SCANNING: DEPENDENCY_SCANNING_NAME,\n  CLUSTER_IMAGE_SCANNING: CLUSTER_IMAGE_SCANNING_NAME,\n  PRE_RECEIVE_SECRET_DETECTION: PRE_RECEIVE_SECRET_DETECTION_NAME,\n  GENERIC: s__('ciReport|Manually added'),\n};\n\nexport const featureToMutationMap = {\n  [REPORT_TYPE_SAST]: {\n    mutationId: 'configureSast',\n    getMutationPayload: (projectPath) => ({\n      mutation: configureSastMutation,\n      variables: {\n        input: {\n          projectPath,\n          configuration: { global: [], pipeline: [], analyzers: [] },\n        },\n      },\n    }),\n  },\n  [REPORT_TYPE_SAST_IAC]: {\n    mutationId: 'configureSastIac',\n    getMutationPayload: (projectPath) => ({\n      mutation: configureSastIacMutation,\n      variables: {\n        input: {\n          projectPath,\n        },\n      },\n    }),\n  },\n  [REPORT_TYPE_SECRET_DETECTION]: {\n    mutationId: 'configureSecretDetection',\n    getMutationPayload: (projectPath) => ({\n      mutation: configureSecretDetectionMutation,\n      variables: {\n        input: {\n          projectPath,\n        },\n      },\n    }),\n  },\n};\n\nexport const AUTO_DEVOPS_ENABLED_ALERT_DISMISSED_STORAGE_KEY =\n  'security_configuration_auto_devops_enabled_dismissed_projects';\n\n// Fetch the svg path from the GraphQL query once this issue is resolved\n// https://gitlab.com/gitlab-org/gitlab/-/issues/346899\nexport const TEMP_PROVIDER_LOGOS = {\n  Kontra: {\n    svg: kontraLogo,\n  },\n  [__('Secure Code Warrior')]: {\n    svg: scwLogo,\n  },\n  SecureFlag: {\n    svg: secureflagLogo,\n  },\n};\n\n// Use the `url` field from the GraphQL query once this issue is resolved\n// https://gitlab.com/gitlab-org/gitlab/-/issues/356129\nexport const TEMP_PROVIDER_URLS = {\n  Kontra: 'https://application.security/',\n  [__('Secure Code Warrior')]: 'https://www.securecodewarrior.com/',\n  SecureFlag: 'https://www.secureflag.com/',\n};\n\nexport const TAB_VULNERABILITY_MANAGEMENT_INDEX = 1;\n\nexport const TRACK_TOGGLE_TRAINING_PROVIDER_ACTION = 'toggle_security_training_provider';\nexport const TRACK_TOGGLE_TRAINING_PROVIDER_LABEL = 'update_security_training_provider';\nexport const TRACK_CLICK_TRAINING_LINK_ACTION = 'click_security_training_link';\nexport const TRACK_PROVIDER_LEARN_MORE_CLICK_ACTION = 'click_link';\nexport const TRACK_PROVIDER_LEARN_MORE_CLICK_LABEL = 'security_training_provider';\nexport const TRACK_TRAINING_LOADED_ACTION = 'security_training_link_loaded';\nexport const TRACK_PROMOTION_BANNER_CTA_CLICK_ACTION = 'click_button';\nexport const TRACK_PROMOTION_BANNER_CTA_CLICK_LABEL = 'security_training_promotion_cta';\n\nexport const i18n = {\n  configurationHistory: s__('SecurityConfiguration|Configuration history'),\n  securityTesting: s__('SecurityConfiguration|Security testing'),\n  latestPipelineDescription: s__(\n    `SecurityConfiguration|The status of the tools only applies to the\n       default branch and is based on the %{linkStart}latest pipeline%{linkEnd}.`,\n  ),\n  description: s__(\n    `SecurityConfiguration|Once you've enabled a scan for the default branch,\n       any subsequent feature branch you create will include the scan. An enabled\n       scanner will not be reflected as such until the pipeline has been\n       successfully executed and it has generated valid artifacts.`,\n  ),\n  securityConfiguration: __('Security configuration'),\n  vulnerabilityManagement: s__('SecurityConfiguration|Vulnerability Management'),\n  securityTraining: s__('SecurityConfiguration|Security training'),\n  securityTrainingDescription: s__(\n    'SecurityConfiguration|Enable security training to help your developers learn how to fix vulnerabilities. Developers can view security training from selected educational providers, relevant to the detected vulnerability. Please note that security training is not accessible in an environment that is offline.',\n  ),\n  securityTrainingDoc: s__('SecurityConfiguration|Learn more about vulnerability training'),\n};\n","export default \"<svg enable-background=\\\"new 0 0 0 0\\\" viewBox=\\\"0 0 800 780\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m594.4 737.87c-.75-1.93-1.86-3.7-3.34-5.29-1.48-1.6-3.29-2.86-5.44-3.8-2.15-.93-4.62-1.4-7.41-1.4s-5.26.47-7.41 1.4c-2.14.94-3.96 2.21-5.43 3.8-1.48 1.59-2.59 3.36-3.34 5.29s-1.13 3.91-1.13 5.95v.96c0 1.96.36 3.91 1.1 5.86.73 1.96 1.82 3.74 3.28 5.35s3.27 2.91 5.43 3.89c2.17.98 4.67 1.46 7.5 1.46s5.33-.49 7.5-1.46c2.16-.98 3.98-2.28 5.43-3.89 1.46-1.61 2.55-3.4 3.28-5.35s1.1-3.91 1.1-5.86v-.96c.01-2.04-.37-4.02-1.12-5.95zm-4.01 13.45c-1.15 2.1-2.78 3.77-4.86 5.02-2.09 1.25-4.52 1.89-7.32 1.89-2.79 0-5.24-.63-7.32-1.89-2.09-1.25-3.71-2.93-4.86-5.02s-1.73-4.42-1.73-6.97c0-2.63.58-4.99 1.73-7.09 1.15-2.09 2.77-3.74 4.86-4.96 2.08-1.21 4.52-1.82 7.32-1.82 2.79 0 5.23.61 7.32 1.82 2.08 1.22 3.71 2.87 4.86 4.96 1.15 2.1 1.73 4.46 1.73 7.09 0 2.56-.58 4.88-1.73 6.97z\\\" fill=\\\"#f79200\\\"/><path d=\\\"m584.11 746.03c1.42-1.12 2.12-2.73 2.12-4.84s-.71-3.73-2.12-4.85c-1.42-1.11-3.4-1.67-5.95-1.67h-2.55-2.37-2.12v18.66h4.49v-5.62h2.55c.09 0 .17-.01.25-.01l3.81 5.64h5.1l-4.69-6.45c.54-.25 1.04-.52 1.48-.86zm-8.5-7.6h2.85c1.1 0 1.9.23 2.43.69s.79 1.15.79 2.07-.26 1.6-.79 2.06-1.33.68-2.43.68h-2.85z\\\" fill=\\\"#f79200\\\"/><path d=\\\"m333.8 753.41-17.62 7.9v-88.45s76.18-50.47 93.76-64.21c46.25-36.15 101.39-92.54 101.39-155.86v-22.33l40.76-32.62h-235.91v-83.73h280.18v138.69c0 180.72-251.84 295.81-262.56 300.61zm-17.53-638.54c21.22 2.88 121.7 20.25 195.07 97.32v62.85h85.03v-94.02l-10-11.68c-104.42-122.2-259.7-137.72-266.27-138.32l-3.92-.36v84.23c.03-.01.06-.01.09-.02z\\\" fill=\\\"#ffbe12\\\"/><path d=\\\"m316.18 397.85h-280.18v-216.82l9.99-11.68c104.42-122.21 259.7-137.73 266.25-138.33l3.94-.36v84.23c-21.06 2.97-122.24 20.87-195.17 97.32v74.53l-36.5 27.39h231.66v83.72zm-93.77 210.81c-46.27-36.15-101.4-87.26-101.4-143.31l20.24-28.41h-105.25v28.41c0 171.17 251.84 283.27 262.56 288.07l17.63 7.9v-88.45c-.01 0-76.2-50.47-93.78-64.21z\\\" fill=\\\"#f79200\\\"/></svg>\";","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\n<svg viewBox=\\\"0 0 500 500\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:bx=\\\"https://boxy-svg.com\\\">\\n  <defs>\\n    <linearGradient id=\\\"paint1_linear_117_388\\\" x1=\\\"8.32922\\\" y1=\\\"0.701083\\\" x2=\\\"25.6103\\\" y2=\\\"8.8381\\\"\\n      gradientUnits=\\\"userSpaceOnUse\\\"\\n      gradientTransform=\\\"matrix(5.965987, 0, 0, 5.965987, -1.949537, -0.014549)\\\">\\n      <stop stop-color=\\\"#005AEC\\\" />\\n      <stop offset=\\\"1\\\" stop-color=\\\"#12DFE7\\\" />\\n    </linearGradient>\\n    <linearGradient id=\\\"paint2_linear_117_388\\\" x1=\\\"3.30485\\\" y1=\\\"11.2131\\\" x2=\\\"20.4972\\\" y2=\\\"19.4227\\\"\\n      gradientUnits=\\\"userSpaceOnUse\\\"\\n      gradientTransform=\\\"matrix(5.965987, 0, 0, 5.965987, -1.949537, -0.014549)\\\">\\n      <stop stop-color=\\\"#005AEC\\\" />\\n      <stop offset=\\\"1\\\" stop-color=\\\"#12DFE7\\\" />\\n    </linearGradient>\\n  </defs>\\n  <g style=\\\"\\\" transform=\\\"matrix(3.098345, 0, 0, 3.098345, 46.765705, 8.335629)\\\"\\n    bx:origin=\\\"0.503455 0.502894\\\">\\n    <path d=\\\"M 65.436 0.003 L 65.436 26.662 L 87.144 12.772 L 65.436 0.003 Z\\\"\\n      fill=\\\"url(#paint1_linear_117_388)\\\" style=\\\"\\\" />\\n    <path\\n      d=\\\"M 108.686 77.337 L 87.143 65.001 L 87.143 38.543 L 65.434 51.815 L 43.562 38.543 L 43.809 64.746 L 22.512 77.592 L 0.393 64.321 L 0.393 116.301 L 65.352 155.095 L 129.901 116.301 L 129.901 64.406 L 108.686 77.337 Z M 65.434 103.2 L 43.562 90.609 L 43.562 114.344 L 22.923 102.945 L 43.562 90.609 L 65.434 77.848 C 65.434 77.848 85.663 90.694 86.156 90.609 C 86.65 90.523 65.434 103.2 65.434 103.2 Z M 86.156 114.344 L 86.156 90.609 L 106.795 102.945 L 86.156 114.344 Z\\\"\\n      fill=\\\"url(#paint2_linear_117_388)\\\" style=\\\"\\\" />\\n  </g>\\n</svg>\";","import { intersection, isNumber, uniqBy, uniqueId, isEmpty } from 'lodash';\nimport { isValidCron } from 'cron-validator';\nimport { safeDump } from 'js-yaml';\nimport { sprintf, s__ } from '~/locale';\nimport { joinPaths, visitUrl } from '~/lib/utils/url_utility';\nimport createPolicyProjectAsync from 'ee/security_orchestration/graphql/mutations/create_policy_project_async.mutation.graphql';\nimport createPolicy from 'ee/security_orchestration/graphql/mutations/create_policy.mutation.graphql';\nimport getFile from 'ee/security_orchestration/graphql/queries/get_file.query.graphql';\nimport { gqClient } from 'ee/security_orchestration/utils';\nimport createMergeRequestMutation from '~/graphql_shared/mutations/create_merge_request.mutation.graphql';\n\nimport {\n  ALLOWED,\n  DENIED,\n} from 'ee/security_orchestration/components/policy_editor/scan_result/rule/scan_filters/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport {\n  BRANCHES_KEY,\n  BRANCH_TYPE_KEY,\n  DEFAULT_MR_TITLE,\n  PRIMARY_POLICY_KEYS,\n  RULE_MODE_SCANNERS,\n  SECURITY_POLICY_ACTIONS,\n  ALL_SELECTED_LABEL,\n  SELECTED_ITEMS_LABEL,\n  MULTIPLE_SELECTED_LABEL,\n  MULTIPLE_SELECTED_LABEL_SINGLE_OPTION,\n  MORE_LABEL,\n} from './constants';\n\n/**\n * Checks if an error exists and throws it if it does\n * @param {Object} payload contains the errors if they exist\n */\nconst checkForErrors = ({ errors, validationErrors }) => {\n  if (errors?.length) {\n    throw new Error(errors.join('\\n'), { cause: validationErrors });\n  }\n};\n\n/**\n * Creates a merge request for the changes to the policy file\n * @param {Object} payload contains the path to the parent project, the branch to merge on the project, and the branch to merge into\n * @returns {Object} contains the id of the merge request and any errors\n */\nconst createMergeRequest = async ({\n  projectPath,\n  sourceBranch,\n  targetBranch,\n  title = DEFAULT_MR_TITLE,\n  description = '',\n}) => {\n  const input = {\n    projectPath,\n    sourceBranch,\n    targetBranch,\n    title,\n    description,\n  };\n\n  const {\n    data: {\n      mergeRequestCreate: {\n        mergeRequest: { iid: id },\n        errors,\n      },\n    },\n  } = await gqClient.mutate({\n    mutation: createMergeRequestMutation,\n    variables: { input },\n  });\n\n  return { id, errors };\n};\n\n/**\n * Creates a new security policy on the security policy project's policy file\n * @param {Object} payload contains the path to the project and the policy yaml value\n * @returns {Object} contains the branch containing the updated policy file and any errors\n */\nconst updatePolicy = async ({\n  action = SECURITY_POLICY_ACTIONS.APPEND,\n  name,\n  namespacePath,\n  yamlEditorValue,\n}) => {\n  const {\n    data: {\n      scanExecutionPolicyCommit: { branch, errors, validationErrors },\n    },\n  } = await gqClient.mutate({\n    mutation: createPolicy,\n    variables: {\n      mode: action,\n      name,\n      fullPath: namespacePath,\n      policyYaml: yamlEditorValue,\n    },\n  });\n\n  return { branch, errors, validationErrors };\n};\n\n/**\n * Updates the assigned security policy project's policy file with the new policy yaml or creates one file if one does not exist\n * @param {Object} payload contains the currently assigned security policy project (if one exists), the path to the project, and the policy yaml value\n * @returns {Object} contains the currently assigned security policy project and the created merge request\n */\nexport const modifyPolicy = async ({\n  action,\n  assignedPolicyProject,\n  name,\n  namespacePath,\n  yamlEditorValue,\n  extraMergeRequestInput,\n}) => {\n  const newPolicyCommitBranch = await updatePolicy({\n    action,\n    name,\n    namespacePath,\n    yamlEditorValue,\n  });\n  const { title, description } = extraMergeRequestInput ?? {};\n\n  checkForErrors(newPolicyCommitBranch);\n\n  const mergeRequest = await createMergeRequest({\n    projectPath: assignedPolicyProject.fullPath,\n    sourceBranch: newPolicyCommitBranch.branch,\n    targetBranch: assignedPolicyProject.branch,\n    title,\n    description,\n  });\n\n  checkForErrors(mergeRequest);\n\n  return mergeRequest;\n};\n\nexport const redirectToMergeRequest = ({ mergeRequestId, assignedPolicyProjectFullPath }) => {\n  visitUrl(\n    joinPaths(\n      gon.relative_url_root || '/',\n      assignedPolicyProjectFullPath,\n      '/-/merge_requests',\n      mergeRequestId,\n    ),\n  );\n};\n\nexport const goToPolicyMR = async ({\n  action,\n  assignedPolicyProject,\n  name,\n  namespacePath,\n  yamlEditorValue,\n  extraMergeRequestInput,\n}) => {\n  const mergeRequest = await modifyPolicy({\n    action,\n    assignedPolicyProject,\n    name,\n    namespacePath,\n    yamlEditorValue,\n    extraMergeRequestInput,\n  });\n\n  redirectToMergeRequest({\n    mergeRequestId: mergeRequest.id,\n    assignedPolicyProjectFullPath: assignedPolicyProject.fullPath,\n  });\n};\n\n/**\n * Creates a new security policy project via background worker\n * @param {String} fullPath\n */\nexport const assignSecurityPolicyProjectAsync = async (fullPath) => {\n  const {\n    data: {\n      securityPolicyProjectCreateAsync: { errors },\n    },\n  } = await gqClient.mutate({\n    mutation: createPolicyProjectAsync,\n    variables: {\n      fullPath,\n    },\n  });\n\n  checkForErrors({ errors });\n};\n\n/**\n * Converts scanner strings to title case\n * @param {Array} scanners (e.g. 'container_scanning', `dast`, etcetera)\n * @returns {Array} (e.g. 'Container Scanning', `Dast`, etcetera)\n */\nexport const createHumanizedScanners = (scanners = []) =>\n  scanners.map((scanner) => {\n    return RULE_MODE_SCANNERS[scanner] || scanner;\n  });\n\n/**\n * Rule can not have both keys simultaneously\n * @param rule\n */\nexport const ruleHasConflictingKeys = (rule) => {\n  return BRANCH_TYPE_KEY in rule && BRANCHES_KEY in rule;\n};\n\n/**\n * Rule can not have both keys simultaneously\n * @param rules\n */\nexport const hasConflictingKeys = (rules = []) => {\n  return rules.some((rule) => BRANCH_TYPE_KEY in rule && BRANCHES_KEY in rule);\n};\n\n/**\n * Check if object has invalid keys in structure\n * @param object\n * @param allowedValues list of allowed values\n * @returns {boolean} true if object is invalid\n */\nexport const hasInvalidKey = (object, allowedValues) => {\n  return !Object.keys(object).every((item) => allowedValues.includes(item));\n};\n\n/**\n * Checks for parameters unsupported by the policy \"Rule Mode\"\n * @param {Object} policy policy converted from YAML\n * @param {Array} primaryKeys list of primary policy keys\n * @param {Array} rulesKeys list of allowed keys for policy rule\n * @param {Array} actionsKeys list of allowed keys for policy rule\n * @returns {Boolean} whether the YAML is valid to be parsed into \"Rule Mode\"\n */\nexport const isValidPolicy = ({\n  policy = {},\n  primaryKeys = PRIMARY_POLICY_KEYS,\n  rulesKeys = [],\n  actionsKeys = [],\n}) => {\n  return !(\n    hasInvalidKey(policy, primaryKeys) ||\n    policy.rules?.some((rule) => hasInvalidKey(rule, [...rulesKeys, 'id'])) ||\n    policy.rules?.some(ruleHasConflictingKeys) ||\n    policy.actions?.some((action) => hasInvalidKey(action, [...actionsKeys, 'id']))\n  );\n};\n\n/**\n * Replaces whitespace and non-sluggish characters with a given separator\n * @param {String} str - The string to slugify\n * @param {String=} separator - The separator used to separate words (defaults to \"-\")\n * @returns {String}\n */\nexport const slugify = (str, separator = '-') => {\n  const slug = str\n    .trim()\n    .replace(/[^a-zA-Z0-9_.*-/]+/g, separator)\n    // Remove any duplicate separators or separator prefixes/suffixes\n    .split(separator)\n    .filter(Boolean)\n    .join(separator);\n\n  return slug === separator ? '' : slug;\n};\n\n/**\n * Replaces whitespace and non-sluggish characters with a given separator and returns array of values\n * @param {String} branches - comma-separated branches\n * @param {String=} separator - The separator used to separate words (defaults to \"-\")\n * @returns {String[]}\n */\nexport const slugifyToArray = (branches, separator = '-') =>\n  branches\n    .split(',')\n    .map((branch) => slugify(branch, separator))\n    .filter(Boolean);\n\n/**\n * Validate cadence cron string if it exists in rule\n * @param rules policy rules\n * @returns {Boolean}\n */\nexport const hasInvalidCron = (rules = []) => {\n  const hasInvalidCronString = (cronString) => (cronString ? !isValidCron(cronString) : false);\n\n  return rules.some((rule) => hasInvalidCronString(rule?.cadence));\n};\n\nexport const enforceIntValue = (value) => parseInt(value || '0', 10);\n\nconst NO_ITEM_SELECTED = 0;\nconst ONE_ITEM_SELECTED = 1;\n\n/**\n * Renders either itemA + n items or ItemA, itemB + n pattern\n * @param useSingleOption flag difference what pattern to choose\n * @param commonItems common items between total items and selected items\n * @param items total items from selection\n * @returns {*}\n */\nexport const renderMultiselectLabel = ({\n  useSingleOption = false,\n  commonItems = [],\n  items = {},\n} = {}) => {\n  if (commonItems.length === 0) return '';\n\n  const TEXT_TEMPLATE = useSingleOption\n    ? MULTIPLE_SELECTED_LABEL_SINGLE_OPTION\n    : MULTIPLE_SELECTED_LABEL;\n  const NUMBER_TO_EXTRACT = useSingleOption ? 1 : 2;\n\n  const moreLabel =\n    commonItems.length > NUMBER_TO_EXTRACT\n      ? sprintf(MORE_LABEL, { numberOfAdditionalLabels: commonItems.length - NUMBER_TO_EXTRACT })\n      : undefined;\n\n  return sprintf(TEXT_TEMPLATE, {\n    firstLabel: items[commonItems[0]],\n    ...(useSingleOption ? {} : { secondLabel: items[commonItems[1]] }),\n    moreLabel,\n  }).trim();\n};\n\n/**\n * This method returns text based on selected items\n * For single selected option it is (itemA +n selected items)\n * For multiple selected options it is (itemA, itemB +n selected items)\n * When all options selected, text would indicate that all items are selected\n * @param selected items\n * @param items items used to render list\n * @param itemTypeName\n * @param useAllSelected all selected option can be disabled\n * @param useSingleOption use format `itemA +n` (Default is `itemA, itemB +n`)\n * @returns {*}\n */\nexport const renderMultiSelectText = ({\n  selected,\n  items,\n  itemTypeName,\n  useAllSelected = true,\n  useSingleOption = false,\n}) => {\n  const itemsKeys = Object.keys(items);\n  const itemsKeysLength = itemsKeys.length;\n\n  const defaultPlaceholder = sprintf(\n    SELECTED_ITEMS_LABEL,\n    {\n      itemTypeName,\n    },\n    false,\n  );\n\n  /**\n   * Another edge case\n   * number of selected items and items are equal\n   * but none of them match\n   * without this check it would fall through to\n   * ALL_SELECTED_LABEL\n   * @type {string[]}\n   */\n  const commonItems = intersection(itemsKeys, selected);\n  const commonItemsLength = commonItems.length;\n  /**\n   * Edge case for loading states when initial items are empty\n   */\n  if (itemsKeysLength === 0 || commonItemsLength === 0) {\n    return defaultPlaceholder;\n  }\n\n  const oneItemLabel = items[commonItems[0]] || defaultPlaceholder;\n  const multiSelectLabel = renderMultiselectLabel({ useSingleOption, items, commonItems });\n\n  if (commonItemsLength === itemsKeysLength && !useAllSelected) {\n    return itemsKeysLength === 1 ? oneItemLabel : multiSelectLabel;\n  }\n\n  switch (commonItemsLength) {\n    case itemsKeysLength:\n      return sprintf(ALL_SELECTED_LABEL, { itemTypeName }, false);\n    case NO_ITEM_SELECTED:\n      return defaultPlaceholder;\n    case ONE_ITEM_SELECTED:\n      return oneItemLabel;\n    default:\n      return multiSelectLabel;\n  }\n};\n\n/**\n * Create project object based on provided properties\n * @param fullPath\n * @returns {{}}\n */\nexport const createProjectWithMinimumValues = ({ fullPath }) => ({\n  ...(fullPath && { fullPath }),\n});\n\n/**\n * Parse configuration file path and create state of UI component\n * @param configuration\n * @returns {{project: {}, showLinkedFile: boolean}}\n */\nexport const parseCustomFileConfiguration = (configuration = {}) => {\n  const projectPath = configuration?.project;\n  const hasFilePath = Boolean(configuration?.file);\n  const hasRef = Boolean(configuration?.ref);\n  const hasProjectPath = Boolean(projectPath);\n  const project = hasProjectPath ? createProjectWithMinimumValues({ fullPath: projectPath }) : null;\n\n  return {\n    showLinkedFile: hasFilePath || hasRef || hasProjectPath,\n    project,\n  };\n};\n\n/**\n * Convert branch exceptions from yaml editor\n * to list box format\n * @param item\n * @param index\n * @returns {{fullPath: undefined, name: string, value: string}|{fullPath: *, name, value: string}}\n */\nexport const mapExceptionsListBoxItem = (item, index) => {\n  if (!item) return undefined;\n\n  if (typeof item === 'string') {\n    return {\n      value: `${item}_${index}`,\n      name: item,\n      fullPath: '',\n    };\n  }\n\n  const fullPath = item.fullPath || item.full_path || '';\n\n  return {\n    value: `${item.name}@${fullPath}`,\n    name: item.name,\n    fullPath,\n  };\n};\n\n/**\n * convert branch and full_path to branch\n * full format branch-name@fullPath\n * @param items\n * @param itemKey select property of an objects that is applied before @\n * @returns {*}\n */\nexport const mapObjectsToString = (items = [], itemKey = 'name') => {\n  return items\n    .filter(Boolean)\n    .map((item) => {\n      const { fullPath = '', full_path = '' } = item;\n      const prependValue = item[itemKey] || '';\n\n      // eslint-disable-next-line camelcase\n      const path = fullPath || full_path;\n\n      return `${prependValue}${path ? '@' : ''}${path}`;\n    })\n    .filter(Boolean)\n    .join(', ');\n};\n\n/**\n * Validate branch full format branch-name@fullPath\n * @param value string input\n * @returns {boolean}\n */\nexport const validateBranchProjectFormat = (value) => {\n  const branchProjectRegexp = /\\S+@\\S/;\n  return branchProjectRegexp.test(value);\n};\n\n/**\n * Check if branches have duplicates by value\n * @param branches\n * @returns {boolean}\n */\nexport const hasDuplicates = (branches = []) => {\n  if (!branches) return false;\n\n  return uniqBy(branches, 'value').length !== branches?.length;\n};\n\n/**\n * Extract branches with wrong format\n * @param items\n * @param key\n * @param mapKey\n * @returns {*[]}\n */\nexport const findItemsWithErrors = (items = [], key = 'value', mapKey = 'name') => {\n  if (!items) return [];\n\n  return items\n    ?.filter((item) => !validateBranchProjectFormat(item[key]))\n    ?.map((item) => item[mapKey]);\n};\n\n/**\n * Map selected branches to exception\n * @param branches\n * @returns {*[]}\n */\nexport const mapBranchesToExceptions = (branches = []) => {\n  if (!branches) return [];\n\n  return branches.map(mapExceptionsListBoxItem).filter(({ name }) => Boolean(name));\n};\n\nexport const addIdsToPolicy = (policy) => {\n  const updatedPolicy = { ...policy };\n\n  if (updatedPolicy.actions) {\n    updatedPolicy.actions = policy.actions?.map((action) => ({\n      ...action,\n      id: uniqueId('action_'),\n    }));\n  }\n\n  if (updatedPolicy.rules) {\n    updatedPolicy.rules = policy.rules?.map((action) => ({ ...action, id: uniqueId('rule_') }));\n  }\n\n  return updatedPolicy;\n};\n\nexport const removeIdsFromPolicy = (policy) => {\n  const updatedPolicy = { ...policy };\n\n  if (updatedPolicy.actions) {\n    updatedPolicy.actions = policy.actions?.map(({ id, ...action }) => ({ ...action }));\n  }\n\n  if (updatedPolicy.rules) {\n    updatedPolicy.rules = policy.rules?.map(({ id, ...rule }) => ({ ...rule }));\n  }\n\n  return updatedPolicy;\n};\n\nconst enabledRadioButtonTooltipText = s__(\n  \"SecurityOrchestration|You've reached the maximum limit of %{max} %{type} policies allowed. Policies are disabled when added.\",\n);\n\nexport const getPolicyLimitDetails = ({\n  type,\n  policyLimitReached = false,\n  policyLimit = 5,\n  initialValue,\n}) => {\n  const shouldBeDisabled = policyLimitReached && !initialValue;\n  const sprintfParameters = { type, max: policyLimit };\n\n  return {\n    radioButton: {\n      disabled: shouldBeDisabled,\n      text: sprintf(enabledRadioButtonTooltipText, sprintfParameters),\n    },\n  };\n};\n\nconst isEqualOrUndefined = (value1, value2) => !value1 || value1 === value2;\n\n/**\n * Determine if one of the errors is from the given source\n * @param {Array} errorSources array of [primaryKey, index, location]\n * @param {String} primaryKey a primary key in the policy\n * @param {Number} index the index of the action/rule/condition\n * @param {String} location the sub-location inside the primary key\n * @returns {Boolean}\n */\nexport const isCauseOfError = ({ errorSources, primaryKey, index = 0, location }) => {\n  return errorSources.some(([sourcePrimaryKey, sourceIndex, sourceLocation]) => {\n    return (\n      isEqualOrUndefined(primaryKey, sourcePrimaryKey) &&\n      isEqualOrUndefined(index, Number(sourceIndex)) &&\n      isEqualOrUndefined(location, sourceLocation)\n    );\n  });\n};\n\n/**\n * Parses error from the backend and returns an array of [primaryKey, index, location]\n * @param {Object} error https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error with\n * message of form `\"property '/approval_policy/5/rules/0/type' is not one of: [\\\"scan_finding\\\", \\\"license_finding\\\", \\\"any_merge_request\\\"]\"`\n * @returns {Array} e.g. [['rules', 0, 'type']]\n */\nexport const parseError = (error) => {\n  if (!error) return [];\n\n  try {\n    const [, ...messages] = error.message.split('\\n');\n    return messages.map((e) => e.split(`'`)[1].split(`/`).splice(3, 3));\n  } catch {\n    return [];\n  }\n};\n\n/**\n * Check if file exist on particular branch in particular project\n * @param fullPath full path to a project\n * @param ref branch name\n * @param filePath full file name\n * @returns {Promise<boolean>}\n */\nexport const doesFileExist = async ({ fullPath = {}, ref = null, filePath = '' } = {}) => {\n  try {\n    const { data } = await gqClient.query({\n      query: getFile,\n      variables: {\n        fullPath,\n        filePath,\n        ref,\n      },\n    });\n\n    return data?.project?.repository?.blobs?.nodes?.length > 0;\n  } catch {\n    return false;\n  }\n};\n\n/**\n * Generates custom merge request title and description if compliance framework params present\n * @param params URL params\n * @param context context of generation request, including top level group path\n *\n * @returns {Object | null}\n */\nexport const getMergeRequestConfig = (params = {}, context = {}) => {\n  const {\n    compliance_framework_name: frameworkName,\n    compliance_framework_id: frameworkIdString,\n    path,\n  } = params;\n  const { namespacePath } = context;\n\n  if (!frameworkName || !frameworkIdString || !path || !namespacePath) {\n    return null;\n  }\n  const frameworkLink = joinPaths(\n    gon.gitlab_url,\n    'groups',\n    namespacePath,\n    '/-/security/compliance_dashboard/frameworks',\n    frameworkIdString,\n  );\n\n  const title = s__(\n    'SecurityOrchestration|Compliance pipeline migration to pipeline execution policy',\n  );\n\n  const migrationInfo = sprintf(\n    s__(\n      'SecurityOrchestration|This merge request migrates compliance pipeline `%{path}` to a pipeline execution policy scoped to framework [%{framework}](%{link}).',\n    ),\n    {\n      path,\n      framework: frameworkName,\n      link: frameworkLink,\n    },\n  );\n\n  const continueToOverwriteWarning = s__(\n    'SecurityOrchestration|The compliance pipeline will continue to override the new pipeline execution policy until it is removed from the compliance framework configuration.',\n  );\n\n  const backLinkMessage = sprintf(\n    s__(\n      'SecurityOrchestration|After this merge request is merged, go to [%{framework}](%{link}) and remove the compliance pipeline so that the new pipeline execution policy can take precedence.',\n    ),\n    {\n      framework: frameworkName,\n      link: frameworkLink,\n    },\n  );\n\n  return {\n    title,\n    description: [migrationInfo, continueToOverwriteWarning, backLinkMessage].join('\\n\\n'),\n  };\n};\n\nexport const policyBodyToYaml = (policy) => {\n  return safeDump(removeIdsFromPolicy(policy));\n};\n\n/**\n * Return yaml representation of a policy.\n * @param policy\n * @param type\n * @returns {string}\n */\nexport const policyToYaml = (policy, type) => {\n  const { securityPoliciesNewYamlFormat } = window.gon?.features || {};\n\n  if (securityPoliciesNewYamlFormat) {\n    const policyWithoutIds = removeIdsFromPolicy(policy);\n    const hasLegacyTypeRootProperty = 'type' in policyWithoutIds;\n\n    if (hasLegacyTypeRootProperty) {\n      delete policyWithoutIds.type;\n    }\n\n    const payload = { [type]: [policyWithoutIds] };\n    return safeDump(payload);\n  }\n\n  return policyBodyToYaml(policy);\n};\n\n/**\n * Parse licenses from rule\n * @param rule\n * @returns {{licenses: (*|*[]), isDenied: boolean}}\n */\nexport const parseAllowDenyLicenseList = (rule = {}) => {\n  const { licenses = {} } = rule || {};\n  const isDenied = DENIED in licenses;\n  const KEY = isDenied ? DENIED : ALLOWED;\n\n  const resultingLicenses = (licenses?.[KEY] || []).map((license) => ({\n    license: { value: license.name, text: license.name },\n    exceptions: license?.packages?.excluding?.purls || [],\n  }));\n\n  return {\n    licenses: resultingLicenses,\n    isDenied,\n  };\n};\n\n/**\n * map licenses format from component to yaml\n * @param licenses\n * @returns {{name: *, packages: {excluding: {purls: []}}}[]}\n */\nexport const mapComponentLicenseFormatToYaml = (licenses = []) =>\n  (licenses || []).map(({ license = {}, exceptions = [] }) => ({\n    name: license.value,\n    packages: { excluding: { purls: exceptions } },\n  }));\n\n/**\n * find intersection in two collections or return original item\n * @param collectionOne\n * @param collectionTwo\n * @param mapperFn\n * @param type\n * @returns {(*)[]|*[]}\n */\nexport const findItemsIntersection = ({\n  collectionOne = [],\n  collectionTwo = [],\n  mapperFn,\n  type,\n}) => {\n  if (!mapperFn) {\n    return [];\n  }\n\n  return collectionOne\n    .map((approver) => {\n      if (isNumber(approver)) {\n        const mappedId = type ? convertToGraphQLId(type, approver) : approver;\n\n        const item = collectionTwo.find(({ id }) => id === mappedId) || {};\n        return mapperFn(item);\n      }\n\n      return mapperFn(approver);\n    })\n    .filter((item) => !isEmpty(item));\n};\n\n/**\n * Map yaml format for actions into\n * user group role component format\n * @param actions\n * @returns {{}[]|*[]}\n */\nexport const mapYamlApproversActionsFormatToEditorFormat = (actions = []) => {\n  if (!actions) return [];\n\n  return actions\n    .map(\n      ({\n        group_approvers_ids: groupApproversIds,\n        user_approvers_ids: userApproversIds,\n        role_approvers: roleApprovers,\n        user_approvers: userApprovers,\n        group_approvers: groupApprovers,\n      }) => {\n        const result = {};\n\n        if (groupApproversIds || groupApprovers) {\n          result.group = groupApproversIds || groupApprovers;\n        }\n\n        if (userApproversIds || userApprovers) {\n          result.user = userApproversIds || userApprovers;\n        }\n\n        if (roleApprovers) {\n          result.role = roleApprovers;\n        }\n\n        return result;\n      },\n    )\n    .filter((item) => !isEmpty(item));\n};\n\n/**\n * split string by comma and white space\n * @param source\n * @returns {*|*[]}\n */\nexport const splitItemsByCommaOrSpace = (source) => source?.split(/[\\n ,]+/).filter(Boolean) || [];\n\n/**\n * parse string based on @ and find parsed items with failed validation\n * @param items array of strings in name@path format\n * @returns {{parsedExceptions: {file: string, fullPath: string, value: *}[], parsedWithErrorsExceptions: *[]}}\n */\nexport const parseExceptionsStringToItems = (items = []) => {\n  const parsedExceptions = (items || []).map((item) => {\n    const [file = '', fullPath = ''] = item.split('@');\n\n    return {\n      file,\n      fullPath,\n      value: item,\n    };\n  });\n\n  const parsedWithErrorsExceptions = findItemsWithErrors(parsedExceptions, 'value', 'file');\n\n  return {\n    parsedExceptions,\n    parsedWithErrorsExceptions,\n  };\n};\n","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","'use strict';\n\nvar common = require('../common');\nvar Type   = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n  // 2.5e4, 2.5 and integers\n  '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n  // .2e4, .2\n  // special case, seems not from spec\n  '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n  // 20:59\n  '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n  // .inf\n  '|[-+]?\\\\.(?:inf|Inf|INF)' +\n  // .nan\n  '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n  if (data === null) return false;\n\n  if (!YAML_FLOAT_PATTERN.test(data) ||\n      // Quick hack to not allow integers end with `_`\n      // Probably should update regexp & check speed\n      data[data.length - 1] === '_') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction constructYamlFloat(data) {\n  var value, sign, base, digits;\n\n  value  = data.replace(/_/g, '').toLowerCase();\n  sign   = value[0] === '-' ? -1 : 1;\n  digits = [];\n\n  if ('+-'.indexOf(value[0]) >= 0) {\n    value = value.slice(1);\n  }\n\n  if (value === '.inf') {\n    return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n  } else if (value === '.nan') {\n    return NaN;\n\n  } else if (value.indexOf(':') >= 0) {\n    value.split(':').forEach(function (v) {\n      digits.unshift(parseFloat(v, 10));\n    });\n\n    value = 0.0;\n    base = 1;\n\n    digits.forEach(function (d) {\n      value += d * base;\n      base *= 60;\n    });\n\n    return sign * value;\n\n  }\n  return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n  var res;\n\n  if (isNaN(object)) {\n    switch (style) {\n      case 'lowercase': return '.nan';\n      case 'uppercase': return '.NAN';\n      case 'camelcase': return '.NaN';\n    }\n  } else if (Number.POSITIVE_INFINITY === object) {\n    switch (style) {\n      case 'lowercase': return '.inf';\n      case 'uppercase': return '.INF';\n      case 'camelcase': return '.Inf';\n    }\n  } else if (Number.NEGATIVE_INFINITY === object) {\n    switch (style) {\n      case 'lowercase': return '-.inf';\n      case 'uppercase': return '-.INF';\n      case 'camelcase': return '-.Inf';\n    }\n  } else if (common.isNegativeZero(object)) {\n    return '-0.0';\n  }\n\n  res = object.toString(10);\n\n  // JS stringifier can build scientific format without dots: 5e-100,\n  // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n  return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n  return (Object.prototype.toString.call(object) === '[object Number]') &&\n         (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n  kind: 'scalar',\n  resolve: resolveYamlFloat,\n  construct: constructYamlFloat,\n  predicate: isFloat,\n  represent: representYamlFloat,\n  defaultStyle: 'lowercase'\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","export const stateToComponentMap = {\n  merged: 'mr-widget-merged',\n  closed: 'mr-widget-closed',\n  merging: 'mr-widget-merging',\n  missingBranch: 'mr-widget-missing-branch',\n  readyToMerge: 'mr-widget-ready-to-merge',\n  nothingToMerge: 'mr-widget-nothing-to-merge',\n  archived: 'mr-widget-archived',\n  checking: 'mr-widget-checking',\n  preparing: 'mr-widget-preparing',\n  pipelineFailed: 'mr-widget-pipeline-failed',\n  failedToMerge: 'mr-widget-failed-to-merge',\n  shaMismatch: 'sha-mismatch',\n  mergeChecksFailed: 'mergeChecksFailed',\n};\n\nexport const stateKey = {\n  archived: 'archived',\n  missingBranch: 'missingBranch',\n  nothingToMerge: 'nothingToMerge',\n  preparing: 'preparing',\n  checking: 'checking',\n  pipelineFailed: 'pipelineFailed',\n  shaMismatch: 'shaMismatch',\n  readyToMerge: 'readyToMerge',\n  merging: 'merging',\n  merged: 'merged',\n  mergeChecksFailed: 'mergeChecksFailed',\n};\n","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineStageJobs\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiStageID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"ciPipelineStage\"},\"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\":\"jobs\"},\"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\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasDetails\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltip\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scheduledAt\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":459}};\n    doc.loc.source = {\"body\":\"query getPipelineStageJobs($id: CiStageID!) {\\n  ciPipelineStage(id: $id) {\\n    id\\n    jobs {\\n      nodes {\\n        id\\n        detailedStatus {\\n          id\\n          action {\\n            id\\n            confirmationMessage\\n            icon\\n            path\\n            title\\n          }\\n          detailsPath\\n          group\\n          hasDetails\\n          icon\\n          tooltip\\n        }\\n        name\\n        scheduled\\n        scheduledAt\\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[\"getPipelineStageJobs\"] = oneQuery(doc, \"getPipelineStageJobs\");\n        \n","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","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","import { groupBy } from 'lodash';\nimport {\n  RULE_TYPE_REGULAR,\n  RULE_TYPE_FALLBACK,\n  RULE_TYPE_CODE_OWNER,\n  RULE_TYPE_REPORT_APPROVER,\n  RULE_TYPE_ANY_APPROVER,\n} from 'ee/approvals/constants';\nimport { __ } from '~/locale';\n\nfunction mapApprovalRule(rule, settings) {\n  if (rule.rule_type === RULE_TYPE_FALLBACK) {\n    // Show a friendly name for the fallback rule\n    return {\n      ...rule,\n      name: __('All Members'),\n      fallback: true,\n    };\n  }\n  if (rule.rule_type === RULE_TYPE_REGULAR && !settings.multiple_approval_rules_available) {\n    // Give a friendly name to the single rule\n    return {\n      ...rule,\n      name: __('Merge Request'),\n    };\n  }\n\n  return rule;\n}\n\nexport function getApprovalRuleNamesLeft(multipleApprovalRulesAvailable, rules) {\n  if (!multipleApprovalRulesAvailable) {\n    return [];\n  }\n\n  const rulesLeft = groupBy(rules, (x) => x.rule_type || x.type?.toLowerCase());\n\n  const anyApprover = rulesLeft[RULE_TYPE_ANY_APPROVER] ? [__('eligible users')] : [];\n\n  // Filter out empty names (fallback rule has no name) because the empties would look weird.\n  const regularRules = (rulesLeft[RULE_TYPE_REGULAR] || []).map((x) => x.name).filter((x) => x);\n\n  // Report Approvals\n  const reportApprovalRules = (rulesLeft[RULE_TYPE_REPORT_APPROVER] || []).map((x) => x.name);\n\n  // If there are code owners that need to approve, only mention that once.\n  // As the names of code owner rules are patterns that don't mean much out of context.\n  const codeOwnerRules = rulesLeft[RULE_TYPE_CODE_OWNER] ? [__('Code Owners')] : [];\n\n  return [...anyApprover, ...regularRules, ...reportApprovalRules, ...codeOwnerRules];\n}\n\n/**\n * Map the approval rules response for use by the MR widget\n */\nexport function mapApprovalRulesResponse(rules, settings) {\n  return rules.map((x) => mapApprovalRule(x, settings));\n}\n\n/**\n * Map the overall approvals response for use by the MR widget\n */\nexport function mapApprovalsResponse(data) {\n  return {\n    ...data,\n    approvalRuleNamesLeft: getApprovalRuleNamesLeft(\n      data.multiple_approval_rules_available,\n      data.approval_rules_left,\n    ),\n  };\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-relative gl-mr-3 gl-rounded-full\",class:{\n    [_vm.backgroundClass]: !_vm.isLoading && _vm.level === 1,\n    'gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center': _vm.level === 1,\n  }},[(_vm.isLoading)?_c('gl-loading-icon',{attrs:{\"size\":\"sm\",\"inline\":\"\"}}):[(_vm.level === 1)?[_c('svg',{staticClass:\"gl-absolute\",class:_vm.iconClass,attrs:{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\"}},[_c('circle',{attrs:{\"cx\":\"8\",\"cy\":\"8\",\"r\":\"8\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"gl-absolute gl-h-3 gl-w-3 gl-rounded-full gl-bg-section\"})]:_vm._e(),_vm._v(\" \"),_c('gl-icon',{staticClass:\"gl-relative gl-z-1\",class:_vm.iconClass,attrs:{\"name\":_vm.$options.EXTENSION_ICON_NAMES[_vm.iconName],\"size\":12,\"aria-label\":_vm.iconAriaLabel,\"data-testid\":`status-${_vm.iconName}-icon`}})]],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!./status_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!./status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlLoadingIcon, GlIcon } from '@gitlab/ui';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport { EXTENSION_ICON_CLASS, EXTENSION_ICON_NAMES } from '../../constants';\n\nexport default {\n  components: {\n    GlLoadingIcon,\n    GlIcon,\n  },\n  props: {\n    level: {\n      type: Number,\n      required: false,\n      default: 1,\n    },\n    name: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    iconName: {\n      type: String,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    iconAriaLabel() {\n      return `${capitalizeFirstCharacter(this.iconName)} ${this.name}`;\n    },\n    backgroundClass() {\n      return this.$options.EXTENSION_ICON_CLASS[this.iconName]?.backgroundClass;\n    },\n    iconClass() {\n      return this.$options.EXTENSION_ICON_CLASS[this.iconName]?.iconClass;\n    },\n  },\n  EXTENSION_ICON_NAMES,\n  EXTENSION_ICON_CLASS,\n};\n</script>\n\n<template>\n  <div\n    :class=\"{\n      [backgroundClass]: !isLoading && level === 1,\n      'gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center': level === 1,\n    }\"\n    class=\"gl-relative gl-mr-3 gl-rounded-full\"\n  >\n    <gl-loading-icon v-if=\"isLoading\" size=\"sm\" inline />\n    <template v-else>\n      <template v-if=\"level === 1\">\n        <svg class=\"gl-absolute\" :class=\"iconClass\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\n          <circle cx=\"8\" cy=\"8\" r=\"8\" />\n        </svg>\n        <div class=\"gl-absolute gl-h-3 gl-w-3 gl-rounded-full gl-bg-section\"></div>\n      </template>\n      <gl-icon\n        :name=\"$options.EXTENSION_ICON_NAMES[iconName]\"\n        :size=\"12\"\n        :aria-label=\"iconAriaLabel\"\n        :data-testid=\"`status-${iconName}-icon`\"\n        class=\"gl-relative gl-z-1\"\n        :class=\"iconClass\"\n      />\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./status_icon.vue?vue&type=template&id=3883cc8c\"\nimport script from \"./status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./status_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","var baseOrderBy = require('./_baseOrderBy'),\n    isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 34 },\n *   { 'user': 'fred',   'age': 40 },\n *   { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n  if (collection == null) {\n    return [];\n  }\n  if (!isArray(iteratees)) {\n    iteratees = iteratees == null ? [] : [iteratees];\n  }\n  orders = guard ? undefined : orders;\n  if (!isArray(orders)) {\n    orders = orders == null ? [] : [orders];\n  }\n  return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\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 { 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","export const DEFAULT_ASSIGNED_POLICY_PROJECT = { fullPath: '', branch: '' };\n\nexport const PAGE_SIZE = 20;\n\nexport const NAMESPACE_TYPES = {\n  PROJECT: 'project',\n  GROUP: 'group',\n};\n\nexport const GROUP_TYPE = 'group';\n\nexport const ROLE_TYPE = 'role';\n\nexport const USER_TYPE = 'user';\n\nexport const MAX_SCAN_EXECUTION_ACTION_COUNT = 10;\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 render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"data-testid\":\"pipeline-mini-graph\"}},[(_vm.hasUpstreamPipeline)?_c('ci-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"gl-align-middle\",attrs:{\"title\":_vm.upstreamTooltipText,\"aria-label\":_vm.upstreamTooltipText,\"status\":_vm.upstreamPipelineStatus,\"show-tooltip\":false,\"data-testid\":\"pipeline-mini-graph-upstream\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasUpstreamPipeline)?_c('gl-icon',{class:_vm.$options.arrowStyles,attrs:{\"name\":\"arrow-right\",\"data-testid\":\"upstream-arrow-icon\",\"variant\":\"subtle\"}}):_vm._e(),_vm._v(\" \"),_c('pipeline-stages',{attrs:{\"is-merge-train\":_vm.isMergeTrain,\"stages\":_vm.formattedStages},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')},\"miniGraphStageClick\":function($event){return _vm.$emit('miniGraphStageClick')}}}),_vm._v(\" \"),(_vm.hasDownstreamPipelines)?_c('gl-icon',{class:_vm.$options.arrowStyles,attrs:{\"name\":\"arrow-right\",\"data-testid\":\"downstream-arrow-icon\",\"variant\":\"subtle\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasDownstreamPipelines)?_c('downstream-pipelines',{attrs:{\"pipelines\":_vm.latestDownstreamPipelines,\"pipeline-path\":_vm.pipelinePath,\"data-testid\":\"pipeline-mini-graph-downstream\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_CI_PIPELINE, TYPENAME_CI_STAGE } from '~/graphql_shared/constants';\n\nconst hasDetailedStatus = (item) => {\n  return Boolean(item.detailedStatus);\n};\n\n/**\n * Converts REST shaped downstreams to GraphQL shape\n *\n * @param {Array} pipelines - The downstream pipelines passed into legacy pipeline mini graph\n * @returns {Array} - GraphQL shaped downstream pipelines\n */\nexport const normalizeDownstreamPipelines = (pipelines) => {\n  return pipelines.map((p) => {\n    if (hasDetailedStatus(p)) {\n      return p;\n    }\n\n    const { id, details, path, project } = p;\n    return {\n      id: convertToGraphQLId(TYPENAME_CI_PIPELINE, id),\n      detailedStatus: details?.status,\n      path,\n      project: {\n        name: project.name,\n      },\n    };\n  });\n};\n\n/**\n * Converts REST shaped pipeline stages to GraphQL shape\n *\n * @param {Array} stages - The pipeline stages passed into legacy pipeline mini graph\n * @returns {Array} - GraphQL shaped pipeline stages\n */\nexport const normalizeStages = (stages) => {\n  return stages.map((s) => {\n    if (hasDetailedStatus(s)) {\n      return s;\n    }\n\n    const { id, name, status } = s;\n    return {\n      id: convertToGraphQLId(TYPENAME_CI_STAGE, id),\n      detailedStatus: {\n        icon: status.icon,\n        label: status.label,\n        tooltip: status.tooltip,\n      },\n      name,\n    };\n  });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.pipelines)?_c('span',{staticClass:\"gl-inline-flex gl-gap-2 gl-align-middle\"},[_vm._l((_vm.pipelinesTrimmed),function(pipeline){return _c('ci-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],key:pipeline.id,attrs:{\"title\":_vm.pipelineTooltipText(pipeline),\"status\":pipeline.detailedStatus,\"show-tooltip\":false,\"data-testid\":\"downstream-pipelines\"}})}),_vm._v(\" \"),(_vm.shouldRenderCounter)?_c('a',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\",value:({ title: _vm.counterTooltipText }),expression:\"{ title: counterTooltipText }\"}],staticClass:\"gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-gray-50 gl-text-sm gl-text-subtle gl-no-underline\",attrs:{\"title\":_vm.counterTooltipText,\"href\":_vm.pipelinePath,\"data-testid\":\"downstream-pipeline-counter\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.counterLabel)+\"\\n  \")]):_vm._e()],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!./downstream_pipelines.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./downstream_pipelines.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { sprintf, s__ } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n/**\n * Renders the downstream portion of the pipeline mini graph.\n */\nexport default {\n  name: 'DownstreamPipelines',\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    CiIcon,\n  },\n  props: {\n    pipelines: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    pipelinePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      maxRenderedPipelines: 3,\n    };\n  },\n  computed: {\n    totalPipelineCount() {\n      return this.pipelines.length;\n    },\n    pipelinesTrimmed() {\n      return this.totalPipelineCount > this.maxRenderedPipelines\n        ? this.pipelines.slice(0, this.maxRenderedPipelines)\n        : this.pipelines;\n    },\n    shouldRenderCounter() {\n      return this.pipelines.length > this.maxRenderedPipelines;\n    },\n    counterLabel() {\n      return `+${this.pipelines.length - this.maxRenderedPipelines}`;\n    },\n    counterTooltipText() {\n      return sprintf(s__('Pipelines|%{counterLabel} more downstream pipelines'), {\n        counterLabel: this.counterLabel,\n      });\n    },\n  },\n  methods: {\n    pipelineTooltipText(pipeline) {\n      return `${pipeline?.project?.name} - ${pipeline?.detailedStatus?.label}`;\n    },\n  },\n};\n</script>\n\n<template>\n  <span v-if=\"pipelines\" class=\"gl-inline-flex gl-gap-2 gl-align-middle\">\n    <ci-icon\n      v-for=\"pipeline in pipelinesTrimmed\"\n      :key=\"pipeline.id\"\n      v-gl-tooltip.hover\n      :title=\"pipelineTooltipText(pipeline)\"\n      :status=\"pipeline.detailedStatus\"\n      :show-tooltip=\"false\"\n      data-testid=\"downstream-pipelines\"\n    />\n\n    <a\n      v-if=\"shouldRenderCounter\"\n      v-gl-tooltip=\"{ title: counterTooltipText }\"\n      :title=\"counterTooltipText\"\n      :href=\"pipelinePath\"\n      class=\"gl-inline-flex gl-h-6 gl-w-7 gl-items-center gl-justify-center gl-rounded-pill gl-bg-gray-50 gl-text-sm gl-text-subtle gl-no-underline\"\n      data-testid=\"downstream-pipeline-counter\"\n    >\n      {{ counterLabel }}\n    </a>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./downstream_pipelines.vue?vue&type=template&id=f55fafbe\"\nimport script from \"./downstream_pipelines.vue?vue&type=script&lang=js\"\nexport * from \"./downstream_pipelines.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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!./pipeline_stage_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!./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlDisclosureDropdown, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { s__, __, sprintf } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { getQueryHeaders, toggleQueryPollingByVisibility } from '~/ci/pipeline_details/graph/utils';\nimport { graphqlEtagStagePath } from '~/ci/pipeline_details/utils';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { PIPELINE_POLL_INTERVAL_DEFAULT } from '~/ci/constants';\nimport JobDropdownItem from '~/ci/common/private/job_dropdown_item.vue';\nimport getPipelineStageJobsQuery from './graphql/queries/get_pipeline_stage_jobs.query.graphql';\n\nexport default {\n  name: 'PipelineStageDropdown',\n  i18n: {\n    loadingText: __('Loading...'),\n    mergeTrainMessage: s__('Pipeline|Merge train pipeline jobs can not be retried'),\n    stage: __('Stage'),\n    stageJobsFetchError: __('There was a problem fetching the pipeline stage jobs.'),\n    viewStageLabel: __('View Stage: %{title}'),\n  },\n  components: {\n    CiIcon,\n    GlButton,\n    GlDisclosureDropdown,\n    GlLoadingIcon,\n    JobDropdownItem,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    isMergeTrain: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    stage: {\n      type: Object,\n      required: true,\n    },\n  },\n  emits: ['jobActionExecuted', 'miniGraphStageClick'],\n  data() {\n    return {\n      isDropdownOpen: false,\n      stageJobs: [],\n    };\n  },\n  apollo: {\n    stageJobs: {\n      context() {\n        return getQueryHeaders(this.graphqlEtag);\n      },\n      query: getPipelineStageJobsQuery,\n      variables() {\n        return {\n          id: this.stage.id,\n        };\n      },\n      skip() {\n        return !this.isDropdownOpen;\n      },\n      pollInterval: PIPELINE_POLL_INTERVAL_DEFAULT,\n      update(data) {\n        return data?.ciPipelineStage?.jobs?.nodes || [];\n      },\n      error(error) {\n        createAlert({ message: this.$options.i18n.stageJobsFetchError });\n        reportToSentry(this.$options.name, error);\n      },\n    },\n  },\n  computed: {\n    dropdownHeaderText() {\n      return `${this.$options.i18n.stage}: ${this.stage.name}`;\n    },\n    dropdownTooltipTitle() {\n      return this.isDropdownOpen ? '' : `${this.stage.name}: ${this.stage.detailedStatus.tooltip}`;\n    },\n    graphqlEtag() {\n      return graphqlEtagStagePath('/api/graphql', getIdFromGraphQLId(this.stage.id));\n    },\n    isLoading() {\n      return this.$apollo.queries.stageJobs.loading;\n    },\n  },\n  mounted() {\n    toggleQueryPollingByVisibility(this.$apollo.queries.stageJobs);\n  },\n  methods: {\n    onHideDropdown() {\n      this.isDropdownOpen = false;\n      this.$apollo.queries.stageJobs.stopPolling();\n    },\n    onShowDropdown() {\n      this.isDropdownOpen = true;\n      this.$apollo.queries.stageJobs.startPolling(PIPELINE_POLL_INTERVAL_DEFAULT);\n\n      // used for tracking in the pipeline table\n      this.$emit('miniGraphStageClick');\n    },\n    stageAriaLabel(title) {\n      return sprintf(this.$options.i18n.viewStageLabel, { title });\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-disclosure-dropdown\n    data-testid=\"pipeline-mini-graph-dropdown\"\n    :aria-label=\"stageAriaLabel(stage.name)\"\n    fluid-width\n    @hidden=\"onHideDropdown\"\n    @shown=\"onShowDropdown\"\n  >\n    <template #toggle>\n      <gl-button\n        v-gl-tooltip.hover=\"dropdownTooltipTitle\"\n        data-testid=\"pipeline-mini-graph-dropdown-toggle\"\n        :title=\"dropdownTooltipTitle\"\n        class=\"!gl-rounded-full\"\n        variant=\"link\"\n      >\n        <ci-icon :status=\"stage.detailedStatus\" :show-tooltip=\"false\" :use-link=\"false\" />\n      </gl-button>\n    </template>\n\n    <template #header>\n      <div\n        data-testid=\"pipeline-stage-dropdown-menu-title\"\n        class=\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-leading-1 gl-border-b-solid\"\n      >\n        <span>{{ dropdownHeaderText }}</span>\n      </div>\n    </template>\n\n    <div v-if=\"isLoading\" class=\"gl-flex gl-gap-3 gl-px-4 gl-py-3\">\n      <gl-loading-icon size=\"sm\" />\n      <span class=\"gl-leading-normal\">{{ $options.i18n.loadingText }}</span>\n    </div>\n    <ul\n      v-else\n      class=\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\"\n      data-testid=\"pipeline-mini-graph-dropdown-menu-list\"\n      @click.stop\n    >\n      <job-dropdown-item\n        v-for=\"job in stageJobs\"\n        :key=\"job.id\"\n        :dropdown-length=\"stageJobs.length\"\n        :job=\"job\"\n        @jobActionExecuted=\"$emit('jobActionExecuted')\"\n      />\n    </ul>\n\n    <template #footer>\n      <div\n        v-if=\"!isLoading && isMergeTrain\"\n        class=\"gl-border-t gl-px-4 gl-py-3 gl-text-sm gl-text-subtle\"\n        data-testid=\"merge-train-message\"\n      >\n        {{ $options.i18n.mergeTrainMessage }}\n      </div>\n    </template>\n  </gl-disclosure-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!./pipeline_stages.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_stages.vue?vue&type=script&lang=js\"","<script>\nimport PipelineStageDropdown from './pipeline_stage_dropdown.vue';\n/**\n * Renders the pipeline stages portion of the pipeline mini graph.\n */\nexport default {\n  name: 'PipelineStages',\n  components: {\n    PipelineStageDropdown,\n  },\n  props: {\n    isMergeTrain: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    stages: {\n      type: Array,\n      required: true,\n    },\n  },\n  emits: ['jobActionExecuted', 'miniGraphStageClick'],\n};\n</script>\n<template>\n  <div class=\"gl-inline gl-align-middle\">\n    <div\n      v-for=\"stage in stages\"\n      :key=\"stage.id\"\n      class=\"pipeline-mini-graph-stage-container dropdown gl-my-1 gl-mr-2 gl-inline-flex gl-align-middle\"\n    >\n      <pipeline-stage-dropdown\n        :stage=\"stage\"\n        :is-merge-train=\"isMergeTrain\"\n        @jobActionExecuted=\"$emit('jobActionExecuted')\"\n        @miniGraphStageClick=\"$emit('miniGraphStageClick')\"\n      />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_stage_dropdown.vue?vue&type=template&id=438e18a5\"\nimport script from \"./pipeline_stage_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stage_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-disclosure-dropdown',{attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown\",\"aria-label\":_vm.stageAriaLabel(_vm.stage.name),\"fluid-width\":\"\"},on:{\"hidden\":_vm.onHideDropdown,\"shown\":_vm.onShowDropdown},scopedSlots:_vm._u([{key:\"toggle\",fn:function(){return [_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:(_vm.dropdownTooltipTitle),expression:\"dropdownTooltipTitle\",modifiers:{\"hover\":true}}],staticClass:\"!gl-rounded-full\",attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown-toggle\",\"title\":_vm.dropdownTooltipTitle,\"variant\":\"link\"}},[_c('ci-icon',{attrs:{\"status\":_vm.stage.detailedStatus,\"show-tooltip\":false,\"use-link\":false}})],1)]},proxy:true},{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-leading-1 gl-border-b-solid\",attrs:{\"data-testid\":\"pipeline-stage-dropdown-menu-title\"}},[_c('span',[_vm._v(_vm._s(_vm.dropdownHeaderText))])])]},proxy:true},{key:\"footer\",fn:function(){return [(!_vm.isLoading && _vm.isMergeTrain)?_c('div',{staticClass:\"gl-border-t gl-px-4 gl-py-3 gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"merge-train-message\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.mergeTrainMessage)+\"\\n    \")]):_vm._e()]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"gl-flex gl-gap-3 gl-px-4 gl-py-3\"},[_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-leading-normal\"},[_vm._v(_vm._s(_vm.$options.i18n.loadingText))])],1):_c('ul',{staticClass:\"gl-m-0 gl-w-34 gl-overflow-y-auto gl-p-0\",attrs:{\"data-testid\":\"pipeline-mini-graph-dropdown-menu-list\"},on:{\"click\":function($event){$event.stopPropagation();}}},_vm._l((_vm.stageJobs),function(job){return _c('job-dropdown-item',{key:job.id,attrs:{\"dropdown-length\":_vm.stageJobs.length,\"job\":job},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')}}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./pipeline_stages.vue?vue&type=template&id=6672dfcb\"\nimport script from \"./pipeline_stages.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_stages.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-inline gl-align-middle\"},_vm._l((_vm.stages),function(stage){return _c('div',{key:stage.id,staticClass:\"pipeline-mini-graph-stage-container dropdown gl-my-1 gl-mr-2 gl-inline-flex gl-align-middle\"},[_c('pipeline-stage-dropdown',{attrs:{\"stage\":stage,\"is-merge-train\":_vm.isMergeTrain},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')},\"miniGraphStageClick\":function($event){return _vm.$emit('miniGraphStageClick')}}})],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!./pipeline_mini_graph.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_mini_graph.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { keepLatestDownstreamPipelines } from '~/ci/pipeline_details/utils/parsing_utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { normalizeDownstreamPipelines, normalizeStages } from './utils/data_utils';\nimport DownstreamPipelines from './downstream_pipelines.vue';\nimport PipelineStages from './pipeline_stages.vue';\n/**\n * Renders the pipeline mini graph.\n * All REST data passed in is formatted to GraphQL.\n */\nexport default {\n  name: 'PipelineMiniGraph',\n  arrowStyles: ['arrow-icon gl-inline-block gl-mx-1 gl-text-subtle !gl-align-middle'],\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    CiIcon,\n    DownstreamPipelines,\n    GlIcon,\n    PipelineStages,\n  },\n  props: {\n    downstreamPipelines: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    isMergeTrain: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    pipelinePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    pipelineStages: {\n      type: Array,\n      required: true,\n    },\n    upstreamPipeline: {\n      type: Object,\n      required: false,\n      default: () => {},\n    },\n  },\n  emits: ['jobActionExecuted', 'miniGraphStageClick'],\n  computed: {\n    formattedDownstreamPipelines() {\n      return normalizeDownstreamPipelines(this.downstreamPipelines);\n    },\n    formattedStages() {\n      return normalizeStages(this.pipelineStages);\n    },\n    hasDownstreamPipelines() {\n      return Boolean(this.latestDownstreamPipelines.length);\n    },\n    hasUpstreamPipeline() {\n      return this.upstreamPipeline?.id;\n    },\n    latestDownstreamPipelines() {\n      return keepLatestDownstreamPipelines(this.formattedDownstreamPipelines);\n    },\n    upstreamPipelineStatus() {\n      return this.upstreamPipeline?.detailedStatus || this.upstreamPipeline?.details?.status;\n    },\n    upstreamTooltipText() {\n      return `${this.upstreamPipeline?.project?.name} - ${this.upstreamPipelineStatus?.label}`;\n    },\n  },\n};\n</script>\n\n<template>\n  <div data-testid=\"pipeline-mini-graph\">\n    <ci-icon\n      v-if=\"hasUpstreamPipeline\"\n      v-gl-tooltip.hover\n      :title=\"upstreamTooltipText\"\n      :aria-label=\"upstreamTooltipText\"\n      :status=\"upstreamPipelineStatus\"\n      :show-tooltip=\"false\"\n      class=\"gl-align-middle\"\n      data-testid=\"pipeline-mini-graph-upstream\"\n    />\n    <gl-icon\n      v-if=\"hasUpstreamPipeline\"\n      :class=\"$options.arrowStyles\"\n      name=\"arrow-right\"\n      data-testid=\"upstream-arrow-icon\"\n      variant=\"subtle\"\n    />\n    <pipeline-stages\n      :is-merge-train=\"isMergeTrain\"\n      :stages=\"formattedStages\"\n      @jobActionExecuted=\"$emit('jobActionExecuted')\"\n      @miniGraphStageClick=\"$emit('miniGraphStageClick')\"\n    />\n    <gl-icon\n      v-if=\"hasDownstreamPipelines\"\n      :class=\"$options.arrowStyles\"\n      name=\"arrow-right\"\n      data-testid=\"downstream-arrow-icon\"\n      variant=\"subtle\"\n    />\n    <downstream-pipelines\n      v-if=\"hasDownstreamPipelines\"\n      :pipelines=\"latestDownstreamPipelines\"\n      :pipeline-path=\"pipelinePath\"\n      data-testid=\"pipeline-mini-graph-downstream\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./pipeline_mini_graph.vue?vue&type=template&id=e9abb0ce\"\nimport script from \"./pipeline_mini_graph.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_mini_graph.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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\":\"issuableLabelsUpdatedEE\"},\"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\":\"issuableLabelsUpdated\"},\"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\":\"labels\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Label\"},\"directives\":[]}]}}]}}]}},{\"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\":\"labels\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Label\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"InlineFragment\",\"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\":\"labels\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Label\"},\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":495}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/label.fragment.graphql\\\"\\n\\nsubscription issuableLabelsUpdatedEE($issuableId: IssuableID!) {\\n  issuableLabelsUpdated(issuableId: $issuableId) {\\n    ... on Issue {\\n      id\\n      labels {\\n        nodes {\\n          ...Label\\n        }\\n      }\\n    }\\n    ... on MergeRequest {\\n      id\\n      labels {\\n        nodes {\\n          ...Label\\n        }\\n      }\\n    }\\n    ... on Epic {\\n      id\\n      labels {\\n        nodes {\\n          ...Label\\n        }\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/label.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[\"issuableLabelsUpdatedEE\"] = oneQuery(doc, \"issuableLabelsUpdatedEE\");\n        \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 { s__ } from '~/locale';\nimport { mapToListboxItems } from 'ee/security_orchestration/utils';\n\nexport const SEVERITY = 'severity';\nexport const STATUS = 'status';\nexport const TYPE = 'type';\nexport const ATTRIBUTE = 'attribute';\nexport const AGE = 'age';\nexport const ALLOW_DENY = 'allow_deny';\nexport const DENIED = 'denied';\nexport const ALLOWED = 'allowed';\n\nexport const UNKNOWN_LICENSE = {\n  value: 'unknown',\n  text: s__('ScanResultPolicy|Unknown'),\n};\n\nexport const AGE_TOOLTIP_MAXIMUM_REACHED = 'maximumReached';\nexport const AGE_TOOLTIP_NO_PREVIOUSLY_EXISTING_VULNERABILITY = 'noPreviouslyExistingVulnerability';\n\nconst AGE_TOOLTIPS = {\n  [AGE_TOOLTIP_MAXIMUM_REACHED]: s__('ScanResultPolicy|Only 1 age criteria is allowed'),\n  [AGE_TOOLTIP_NO_PREVIOUSLY_EXISTING_VULNERABILITY]: s__(\n    'ScanResultPolicy|Age criteria can only be added for pre-existing vulnerabilities',\n  ),\n};\n\nexport const FILTERS = [\n  {\n    text: s__('ScanResultPolicy|New status'),\n    value: STATUS,\n    tooltip: s__('ScanResultPolicy|Maximum of two status criteria allowed'),\n  },\n  {\n    text: s__('ScanResultPolicy|New age'),\n    value: AGE,\n    tooltip: AGE_TOOLTIPS,\n  },\n  {\n    text: s__('ScanResultPolicy|New attribute'),\n    value: ATTRIBUTE,\n    tooltip: s__('ScanResultPolicy|Maximum of two attribute criteria allowed'),\n  },\n];\n\nexport const LICENCE_FILTERS = [\n  {\n    text: s__('ScanResultPolicy|License status'),\n    value: STATUS,\n    tooltip: s__('ScanResultPolicy|Maximum of one license status criteria allowed'),\n  },\n  {\n    text: s__('ScanResultPolicy|License type'),\n    value: TYPE,\n    tooltip: s__('ScanResultPolicy|Maximum of one license type criteria allowed'),\n  },\n  {\n    text: s__('ScanResultPolicy|Allowlist or Denylist'),\n    value: ALLOW_DENY,\n    tooltip: s__('ScanResultPolicy|You can specify either a denylist or an allowlist, not both.'),\n  },\n];\n\nexport const ALLOWED_DENIED_OPTIONS = {\n  [ALLOWED]: s__('ScanResultPolicy|Allowed'),\n  [DENIED]: s__('ScanResultPolicy|Denied'),\n};\n\nexport const ALLOWED_DENIED_LISTBOX_ITEMS = mapToListboxItems(ALLOWED_DENIED_OPTIONS);\n\nexport const AGE_DAY = 'day';\nexport const AGE_WEEK = 'week';\nexport const AGE_MONTH = 'month';\nexport const AGE_YEAR = 'year';\n\nexport const AGE_INTERVALS = [\n  { value: AGE_DAY, text: s__('ApprovalRule|day(s)') },\n  { value: 'week', text: s__('ApprovalRule|week(s)') },\n  { value: 'month', text: s__('ApprovalRule|month(s)') },\n  { value: 'year', text: s__('ApprovalRule||year(s)') },\n];\n\nexport const VULNERABILITY_AGE_ALLOWED_KEYS = ['value', 'interval', 'operator'];\n\nexport const FILTERS_STATUS_INDEX = LICENCE_FILTERS.findIndex(({ value }) => value === STATUS);\n\nexport const FIX_AVAILABLE = 'fix_available';\nexport const FALSE_POSITIVE = 'false_positive';\n\nexport const VULNERABILITY_ATTRIBUTES = [\n  { value: FIX_AVAILABLE, text: s__('ScanResultPolicy|Fix available') },\n  { value: FALSE_POSITIVE, text: s__('ScanResultPolicy|False positive') },\n];\nexport const VULNERABILITY_ATTRIBUTE_OPERATORS = [\n  { text: s__('ScanResultPolicy|Is'), value: 'true' },\n  { text: s__('ScanResultPolicy|Is not'), value: 'false' },\n];\n\nexport const NEWLY_DETECTED = 'newly_detected';\nexport const PREVIOUSLY_EXISTING = 'previously_existing';\n\nexport const NEEDS_TRIAGE_PLURAL = s__('ApprovalRule|Need triage');\nexport const NEEDS_TRIAGE_SINGULAR = s__('ApprovalRule|Needs triage');\n\nexport const APPROVAL_VULNERABILITY_STATE_GROUPS = {\n  [NEWLY_DETECTED]: s__('ApprovalRule|New'),\n  [PREVIOUSLY_EXISTING]: s__('ApprovalRule|Previously existing'),\n};\n\nexport const APPROVAL_VULNERABILITY_STATES = {\n  [NEWLY_DETECTED]: {\n    new_needs_triage: NEEDS_TRIAGE_SINGULAR,\n    new_dismissed: s__('ApprovalRule|Dismissed'),\n  },\n  [PREVIOUSLY_EXISTING]: {\n    detected: s__('ApprovalRule|Needs triage'),\n    confirmed: s__('ApprovalRule|Confirmed'),\n    dismissed: s__('ApprovalRule|Dismissed'),\n    resolved: s__('ApprovalRule|Resolved'),\n  },\n};\n\nexport const DEFAULT_VULNERABILITY_STATES = Object.keys(\n  APPROVAL_VULNERABILITY_STATES[NEWLY_DETECTED],\n);\n\nexport const APPROVAL_VULNERABILITY_STATES_FLAT = Object.values(\n  APPROVAL_VULNERABILITY_STATES,\n).reduce((acc, states) => ({ ...acc, ...states }), {});\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_c('gl-button',{ref:\"popoverTrigger\",class:_vm.triggerClass,attrs:{\"variant\":\"link\",\"icon\":_vm.icon,\"aria-label\":_vm.ariaLabel}}),_vm._v(\" \"),_c('gl-popover',_vm._b({attrs:{\"target\":_vm.targetFn},scopedSlots:_vm._u([(_vm.options.title)?{key:\"title\",fn:function(){return [_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.options.title),expression:\"options.title\"}]})]},proxy:true}:null,{key:\"default\",fn:function(){return [_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.options.content),expression:\"options.content\"}]})]},proxy:true},_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'gl-popover',_vm.options,false))],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!./help_popover.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help_popover.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlPopover } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\n\n/**\n * Render a button with a question mark icon\n * On hover shows a popover. The popover will be dismissed on mouseleave\n */\nexport default {\n  name: 'HelpPopover',\n  components: {\n    GlButton,\n    GlPopover,\n  },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    options: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: 'question-o',\n    },\n    triggerClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: '',\n    },\n    ariaLabel: {\n      type: String,\n      required: false,\n      default: __('Help'),\n    },\n  },\n  methods: {\n    targetFn() {\n      return this.$refs.popoverTrigger?.$el;\n    },\n  },\n};\n</script>\n<template>\n  <span>\n    <gl-button\n      ref=\"popoverTrigger\"\n      :class=\"triggerClass\"\n      variant=\"link\"\n      :icon=\"icon\"\n      :aria-label=\"ariaLabel\"\n    />\n    <gl-popover :target=\"targetFn\" v-bind=\"options\">\n      <template v-if=\"options.title\" #title>\n        <span v-safe-html=\"options.title\"></span>\n      </template>\n      <template #default>\n        <div v-safe-html=\"options.content\"></div>\n      </template>\n      <!-- eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots -->\n      <template v-for=\"slot in Object.keys($slots)\" #[slot]>\n        <slot :name=\"slot\"></slot>\n      </template>\n    </gl-popover>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./help_popover.vue?vue&type=template&id=7a170f82\"\nimport script from \"./help_popover.vue?vue&type=script&lang=js\"\nexport * from \"./help_popover.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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 { 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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"autoMergeEnabledEE\"},\"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\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"autoMergeEnabled\"},\"directives\":[]}]}},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainCarCount\"},\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":338}};\n    doc.loc.source = {\"body\":\"#import \\\"~/vue_merge_request_widget/queries/states/auto_merge_enabled.fragment.graphql\\\"\\n#import \\\"./merge_train_car_count.fragment.graphql\\\"\\n\\nquery autoMergeEnabledEE($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      ...autoMergeEnabled\\n    }\\n    ...MergeTrainCarCount\\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(\"~/vue_merge_request_widget/queries/states/auto_merge_enabled.fragment.graphql\").definitions));\ndoc.definitions = doc.definitions.concat(unique(require(\"./merge_train_car_count.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[\"autoMergeEnabledEE\"] = oneQuery(doc, \"autoMergeEnabledEE\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestEventTypeQuery\"},\"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\":\"pipelines\"},\"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\":\"mergeRequestEventType\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":270}};\n    doc.loc.source = {\"body\":\"query mergeRequestEventTypeQuery($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      pipelines(first: 1) {\\n        nodes {\\n          id\\n          mergeRequestEventType\\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[\"mergeRequestEventTypeQuery\"] = oneQuery(doc, \"mergeRequestEventTypeQuery\");\n        \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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSecretDetection\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigureSecretDetectionInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSecretDetection\"},\"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\":\"successPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":153}};\n    doc.loc.source = {\"body\":\"mutation configureSecretDetection($input: ConfigureSecretDetectionInput!) {\\n  configureSecretDetection(input: $input) {\\n    successPath\\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[\"configureSecretDetection\"] = oneQuery(doc, \"configureSecretDetection\");\n        \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","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n  if (data === null) return true;\n\n  var index, length, pair, keys, result,\n      object = data;\n\n  result = new Array(object.length);\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n\n    if (_toString.call(pair) !== '[object Object]') return false;\n\n    keys = Object.keys(pair);\n\n    if (keys.length !== 1) return false;\n\n    result[index] = [ keys[0], pair[keys[0]] ];\n  }\n\n  return true;\n}\n\nfunction constructYamlPairs(data) {\n  if (data === null) return [];\n\n  var index, length, pair, keys, result,\n      object = data;\n\n  result = new Array(object.length);\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n\n    keys = Object.keys(pair);\n\n    result[index] = [ keys[0], pair[keys[0]] ];\n  }\n\n  return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n  kind: 'sequence',\n  resolve: resolveYamlPairs,\n  construct: constructYamlPairs\n});\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","// 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","/** 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","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","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-c3da8bce] .gl-new-dropdown-inner {\\n  max-height: 310px !important;\\n}\\n\", \"\"]);\n\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","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidCron = void 0;\n// This comes from the fact that parseInt trims characters coming\n// after digits and consider it a valid int, so `1*` becomes `1`.\nvar safeParseInt = function (value) {\n    if (/^\\d+$/.test(value)) {\n        return Number(value);\n    }\n    else {\n        return NaN;\n    }\n};\nvar isWildcard = function (value) {\n    return value === '*';\n};\nvar isQuestionMark = function (value) {\n    return value === '?';\n};\nvar isInRange = function (value, start, stop) {\n    return value >= start && value <= stop;\n};\nvar isValidRange = function (value, start, stop) {\n    var sides = value.split('-');\n    switch (sides.length) {\n        case 1:\n            return isWildcard(value) || isInRange(safeParseInt(value), start, stop);\n        case 2:\n            var _a = sides.map(function (side) { return safeParseInt(side); }), small = _a[0], big = _a[1];\n            return small <= big && isInRange(small, start, stop) && isInRange(big, start, stop);\n        default:\n            return false;\n    }\n};\nvar isValidStep = function (value) {\n    return value === undefined || (value.search(/[^\\d]/) === -1 && safeParseInt(value) > 0);\n};\nvar validateForRange = function (value, start, stop) {\n    if (value.search(/[^\\d-,\\/*]/) !== -1) {\n        return false;\n    }\n    var list = value.split(',');\n    return list.every(function (condition) {\n        var splits = condition.split('/');\n        // Prevents `*/ * * * *` from being accepted.\n        if (condition.trim().endsWith('/')) {\n            return false;\n        }\n        // Prevents `*/*/* * * * *` from being accepted\n        if (splits.length > 2) {\n            return false;\n        }\n        // If we don't have a `/`, right will be undefined which is considered a valid step if we don't a `/`.\n        var left = splits[0], right = splits[1];\n        return isValidRange(left, start, stop) && isValidStep(right);\n    });\n};\nvar hasValidSeconds = function (seconds) {\n    return validateForRange(seconds, 0, 59);\n};\nvar hasValidMinutes = function (minutes) {\n    return validateForRange(minutes, 0, 59);\n};\nvar hasValidHours = function (hours) {\n    return validateForRange(hours, 0, 23);\n};\nvar hasValidDays = function (days, allowBlankDay) {\n    return (allowBlankDay && isQuestionMark(days)) || validateForRange(days, 1, 31);\n};\nvar monthAlias = {\n    jan: '1',\n    feb: '2',\n    mar: '3',\n    apr: '4',\n    may: '5',\n    jun: '6',\n    jul: '7',\n    aug: '8',\n    sep: '9',\n    oct: '10',\n    nov: '11',\n    dec: '12'\n};\nvar hasValidMonths = function (months, alias) {\n    // Prevents alias to be used as steps\n    if (months.search(/\\/[a-zA-Z]/) !== -1) {\n        return false;\n    }\n    if (alias) {\n        var remappedMonths = months.toLowerCase().replace(/[a-z]{3}/g, function (match) {\n            return monthAlias[match] === undefined ? match : monthAlias[match];\n        });\n        // If any invalid alias was used, it won't pass the other checks as there will be non-numeric values in the months\n        return validateForRange(remappedMonths, 1, 12);\n    }\n    return validateForRange(months, 1, 12);\n};\nvar weekdaysAlias = {\n    sun: '0',\n    mon: '1',\n    tue: '2',\n    wed: '3',\n    thu: '4',\n    fri: '5',\n    sat: '6'\n};\nvar hasValidWeekdays = function (weekdays, alias, allowBlankDay, allowSevenAsSunday) {\n    // If there is a question mark, checks if the allowBlankDay flag is set\n    if (allowBlankDay && isQuestionMark(weekdays)) {\n        return true;\n    }\n    else if (!allowBlankDay && isQuestionMark(weekdays)) {\n        return false;\n    }\n    // Prevents alias to be used as steps\n    if (weekdays.search(/\\/[a-zA-Z]/) !== -1) {\n        return false;\n    }\n    if (alias) {\n        var remappedWeekdays = weekdays.toLowerCase().replace(/[a-z]{3}/g, function (match) {\n            return weekdaysAlias[match] === undefined ? match : weekdaysAlias[match];\n        });\n        // If any invalid alias was used, it won't pass the other checks as there will be non-numeric values in the weekdays\n        return validateForRange(remappedWeekdays, 0, allowSevenAsSunday ? 7 : 6);\n    }\n    return validateForRange(weekdays, 0, allowSevenAsSunday ? 7 : 6);\n};\nvar hasCompatibleDayFormat = function (days, weekdays, allowBlankDay) {\n    return !(allowBlankDay && isQuestionMark(days) && isQuestionMark(weekdays));\n};\nvar split = function (cron) {\n    return cron.trim().split(/\\s+/);\n};\nvar defaultOptions = {\n    alias: false,\n    seconds: false,\n    allowBlankDay: false,\n    allowSevenAsSunday: false\n};\nexports.isValidCron = function (cron, options) {\n    options = __assign(__assign({}, defaultOptions), options);\n    var splits = split(cron);\n    if (splits.length > (options.seconds ? 6 : 5) || splits.length < 5) {\n        return false;\n    }\n    var checks = [];\n    if (splits.length === 6) {\n        var seconds = splits.shift();\n        if (seconds) {\n            checks.push(hasValidSeconds(seconds));\n        }\n    }\n    // We could only check the steps gradually and return false on the first invalid block,\n    // However, this won't have any performance impact so why bother for now.\n    var minutes = splits[0], hours = splits[1], days = splits[2], months = splits[3], weekdays = splits[4];\n    checks.push(hasValidMinutes(minutes));\n    checks.push(hasValidHours(hours));\n    checks.push(hasValidDays(days, options.allowBlankDay));\n    checks.push(hasValidMonths(months, options.alias));\n    checks.push(hasValidWeekdays(weekdays, options.alias, options.allowBlankDay, options.allowSevenAsSunday));\n    checks.push(hasCompatibleDayFormat(days, weekdays, options.allowBlankDay));\n    return checks.every(Boolean);\n};\n//# sourceMappingURL=index.js.map","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","export var slice = Array.prototype.slice;\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(function(elapsed) {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n    cssRoot,\n    cssView,\n    svgNode;\n\nexport function parseCss(value) {\n  if (value === \"none\") return identity;\n  if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n  cssNode.style.transform = value;\n  value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n  cssRoot.removeChild(cssNode);\n  value = value.slice(7, -1).split(\",\");\n  return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      return defaultTiming.time = now(), defaultTiming;\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n  return function(target) {\n    return touch(target, event.touches, identifier);\n  };\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection) {\n    if (group.selection) {\n      group\n          .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n          .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start().brush().end();\n          });\n    }\n  };\n\n  brush.clear = function(group) {\n    brush.move(group, null);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function() {\n      if (this.starting) this.starting = false, this.emit(\"start\");\n      else this.emit(\"brush\");\n      return this;\n    },\n    brush: function() {\n      this.emit(\"brush\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function started() {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n        point0 = pointer(that),\n        point = point0,\n        emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      state.selection = selection = [\n        [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n        [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n      ];\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    nopropagation();\n    interrupt(that);\n    redraw.call(that);\n    emit.start();\n\n    function moved() {\n      var point1 = pointer(that);\n      if (shifting && !lockX && !lockY) {\n        if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n        else lockX = true;\n      }\n      point = point1;\n      moving = true;\n      noevent();\n      move();\n    }\n\n    function move() {\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n          else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n          if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n          else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n          if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush();\n      }\n    }\n\n    function ended() {\n      nopropagation();\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end();\n    }\n\n    function keydowned() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n\n    function keyupped() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move();\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n  }\n\n  function touchmoved() {\n    emitter(this, arguments).moved();\n  }\n\n  function touchended() {\n    emitter(this, arguments).ended();\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n  constructor: Map,\n  has: function(key) {\n    return (prefix + key) in this;\n  },\n  get: function(key) {\n    return this[prefix + key];\n  },\n  set: function(key, value) {\n    this[prefix + key] = value;\n    return this;\n  },\n  remove: function(key) {\n    var property = prefix + key;\n    return property in this && delete this[property];\n  },\n  clear: function() {\n    for (var property in this) if (property[0] === prefix) delete this[property];\n  },\n  keys: function() {\n    var keys = [];\n    for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n    return keys;\n  },\n  values: function() {\n    var values = [];\n    for (var property in this) if (property[0] === prefix) values.push(this[property]);\n    return values;\n  },\n  entries: function() {\n    var entries = [];\n    for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n    return entries;\n  },\n  size: function() {\n    var size = 0;\n    for (var property in this) if (property[0] === prefix) ++size;\n    return size;\n  },\n  empty: function() {\n    for (var property in this) if (property[0] === prefix) return false;\n    return true;\n  },\n  each: function(f) {\n    for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n  }\n};\n\nfunction map(object, f) {\n  var map = new Map;\n\n  // Copy constructor.\n  if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n  // Index array by numeric index or specified key function.\n  else if (Array.isArray(object)) {\n    var i = -1,\n        n = object.length,\n        o;\n\n    if (f == null) while (++i < n) map.set(i, object[i]);\n    else while (++i < n) map.set(f(o = object[i], i, object), o);\n  }\n\n  // Convert object to map.\n  else if (object) for (var key in object) map.set(key, object[key]);\n\n  return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n  constructor: Set,\n  has: proto.has,\n  add: function(value) {\n    value += \"\";\n    this[prefix + value] = value;\n    return this;\n  },\n  remove: proto.remove,\n  clear: proto.clear,\n  values: proto.keys,\n  size: proto.size,\n  empty: proto.empty,\n  each: proto.each\n};\n\nfunction set(object, f) {\n  var set = new Set;\n\n  // Copy constructor.\n  if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n  // Otherwise, assume it’s an array.\n  else if (object) {\n    var i = -1, n = object.length;\n    if (f == null) while (++i < n) set.add(object[i]);\n    else while (++i < n) set.add(f(object[i], i, object));\n  }\n\n  return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(d) {\n  var x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\");\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.each(function (force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n","export default function() {\n  return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    return function() {\n      for (var sum = 0, i = 0; i < n; ++i) sum += source();\n      return sum;\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n  function randomLogNormal() {\n    var randomNormal = normal.source(source).apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n  function randomBates(n) {\n    var randomIrwinHall = irwinHall.source(source)(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log(1 - source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": formatDecimal,\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return interval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n    durationMinute = durationSecond * 60,\n    durationHour = durationMinute * 60,\n    durationDay = durationHour * 24,\n    durationWeek = durationDay * 7,\n    durationMonth = durationDay * 30,\n    durationYear = durationDay * 365;\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n  var scale = continuous(identity, identity),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  var tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  function tickInterval(interval, start, stop, step) {\n    if (interval == null) interval = 10;\n\n    // If a desired tick count is specified, pick a reasonable tick interval\n    // based on the extent of the domain and a rough estimate of tick size.\n    // Otherwise, assume interval is already a time interval and use it.\n    if (typeof interval === \"number\") {\n      var target = Math.abs(stop - start) / interval,\n          i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n      if (i === tickIntervals.length) {\n        step = tickStep(start / durationYear, stop / durationYear, interval);\n        interval = year;\n      } else if (i) {\n        i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n        step = i[1];\n        interval = i[0];\n      } else {\n        step = Math.max(tickStep(start, stop, interval), 1);\n        interval = millisecond;\n      }\n    }\n\n    return step == null ? interval : interval.every(step);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval, step) {\n    var d = domain(),\n        t0 = d[0],\n        t1 = d[d.length - 1],\n        r = t1 < t0,\n        t;\n    if (r) t = t0, t0 = t1, t1 = t;\n    t = tickInterval(interval, t0, t1, step);\n    t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n    return r ? t.reverse() : t;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval, step) {\n    var d = domain();\n    return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n        ? domain(nice(d, interval))\n        : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n  };\n\n  return scale;\n}\n\nexport default function() {\n  return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","function RedBlackTree() {\n  this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n  node.U = // parent node\n  node.C = // color - true for red, false for black\n  node.L = // left node\n  node.R = // right node\n  node.P = // previous node\n  node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n  constructor: RedBlackTree,\n\n  insert: function(after, node) {\n    var parent, grandpa, uncle;\n\n    if (after) {\n      node.P = after;\n      node.N = after.N;\n      if (after.N) after.N.P = node;\n      after.N = node;\n      if (after.R) {\n        after = after.R;\n        while (after.L) after = after.L;\n        after.L = node;\n      } else {\n        after.R = node;\n      }\n      parent = after;\n    } else if (this._) {\n      after = RedBlackFirst(this._);\n      node.P = null;\n      node.N = after;\n      after.P = after.L = node;\n      parent = after;\n    } else {\n      node.P = node.N = null;\n      this._ = node;\n      parent = null;\n    }\n    node.L = node.R = null;\n    node.U = parent;\n    node.C = true;\n\n    after = node;\n    while (parent && parent.C) {\n      grandpa = parent.U;\n      if (parent === grandpa.L) {\n        uncle = grandpa.R;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.R) {\n            RedBlackRotateLeft(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateRight(this, grandpa);\n        }\n      } else {\n        uncle = grandpa.L;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.L) {\n            RedBlackRotateRight(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateLeft(this, grandpa);\n        }\n      }\n      parent = after.U;\n    }\n    this._.C = false;\n  },\n\n  remove: function(node) {\n    if (node.N) node.N.P = node.P;\n    if (node.P) node.P.N = node.N;\n    node.N = node.P = null;\n\n    var parent = node.U,\n        sibling,\n        left = node.L,\n        right = node.R,\n        next,\n        red;\n\n    if (!left) next = right;\n    else if (!right) next = left;\n    else next = RedBlackFirst(right);\n\n    if (parent) {\n      if (parent.L === node) parent.L = next;\n      else parent.R = next;\n    } else {\n      this._ = next;\n    }\n\n    if (left && right) {\n      red = next.C;\n      next.C = node.C;\n      next.L = left;\n      left.U = next;\n      if (next !== right) {\n        parent = next.U;\n        next.U = node.U;\n        node = next.R;\n        parent.L = node;\n        next.R = right;\n        right.U = next;\n      } else {\n        next.U = parent;\n        parent = next;\n        node = next.R;\n      }\n    } else {\n      red = node.C;\n      node = next;\n    }\n\n    if (node) node.U = parent;\n    if (red) return;\n    if (node && node.C) { node.C = false; return; }\n\n    do {\n      if (node === this._) break;\n      if (node === parent.L) {\n        sibling = parent.R;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateLeft(this, parent);\n          sibling = parent.R;\n        }\n        if ((sibling.L && sibling.L.C)\n            || (sibling.R && sibling.R.C)) {\n          if (!sibling.R || !sibling.R.C) {\n            sibling.L.C = false;\n            sibling.C = true;\n            RedBlackRotateRight(this, sibling);\n            sibling = parent.R;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.R.C = false;\n          RedBlackRotateLeft(this, parent);\n          node = this._;\n          break;\n        }\n      } else {\n        sibling = parent.L;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateRight(this, parent);\n          sibling = parent.L;\n        }\n        if ((sibling.L && sibling.L.C)\n          || (sibling.R && sibling.R.C)) {\n          if (!sibling.L || !sibling.L.C) {\n            sibling.R.C = false;\n            sibling.C = true;\n            RedBlackRotateLeft(this, sibling);\n            sibling = parent.L;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.L.C = false;\n          RedBlackRotateRight(this, parent);\n          node = this._;\n          break;\n        }\n      }\n      sibling.C = true;\n      node = parent;\n      parent = parent.U;\n    } while (!node.C);\n\n    if (node) node.C = false;\n  }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n  var p = node,\n      q = node.R,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.R = q.L;\n  if (p.R) p.R.U = p;\n  q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n  var p = node,\n      q = node.L,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.L = q.R;\n  if (p.L) p.L.U = p;\n  q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n  while (node.L) node = node.L;\n  return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n  var edge = [null, null],\n      index = edges.push(edge) - 1;\n  edge.left = left;\n  edge.right = right;\n  if (v0) setEdgeEnd(edge, left, right, v0);\n  if (v1) setEdgeEnd(edge, right, left, v1);\n  cells[left.index].halfedges.push(index);\n  cells[right.index].halfedges.push(index);\n  return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n  var edge = [v0, v1];\n  edge.left = left;\n  return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n  if (!edge[0] && !edge[1]) {\n    edge[0] = vertex;\n    edge.left = left;\n    edge.right = right;\n  } else if (edge.left === right) {\n    edge[1] = vertex;\n  } else {\n    edge[0] = vertex;\n  }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n  var a = edge[0],\n      b = edge[1],\n      ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n  return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n  var v1 = edge[1];\n  if (v1) return true;\n\n  var v0 = edge[0],\n      left = edge.left,\n      right = edge.right,\n      lx = left[0],\n      ly = left[1],\n      rx = right[0],\n      ry = right[1],\n      fx = (lx + rx) / 2,\n      fy = (ly + ry) / 2,\n      fm,\n      fb;\n\n  if (ry === ly) {\n    if (fx < x0 || fx >= x1) return;\n    if (lx > rx) {\n      if (!v0) v0 = [fx, y0];\n      else if (v0[1] >= y1) return;\n      v1 = [fx, y1];\n    } else {\n      if (!v0) v0 = [fx, y1];\n      else if (v0[1] < y0) return;\n      v1 = [fx, y0];\n    }\n  } else {\n    fm = (lx - rx) / (ry - ly);\n    fb = fy - fm * fx;\n    if (fm < -1 || fm > 1) {\n      if (lx > rx) {\n        if (!v0) v0 = [(y0 - fb) / fm, y0];\n        else if (v0[1] >= y1) return;\n        v1 = [(y1 - fb) / fm, y1];\n      } else {\n        if (!v0) v0 = [(y1 - fb) / fm, y1];\n        else if (v0[1] < y0) return;\n        v1 = [(y0 - fb) / fm, y0];\n      }\n    } else {\n      if (ly < ry) {\n        if (!v0) v0 = [x0, fm * x0 + fb];\n        else if (v0[0] >= x1) return;\n        v1 = [x1, fm * x1 + fb];\n      } else {\n        if (!v0) v0 = [x1, fm * x1 + fb];\n        else if (v0[0] < x0) return;\n        v1 = [x0, fm * x0 + fb];\n      }\n    }\n  }\n\n  edge[0] = v0;\n  edge[1] = v1;\n  return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n  var i = edges.length,\n      edge;\n\n  while (i--) {\n    if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n        || !clipEdge(edge, x0, y0, x1, y1)\n        || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n            || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n      delete edges[i];\n    }\n  }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n  return cells[site.index] = {\n    site: site,\n    halfedges: []\n  };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n  var site = cell.site,\n      va = edge.left,\n      vb = edge.right;\n  if (site === vb) vb = va, va = site;\n  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n  if (site === va) va = edge[1], vb = edge[0];\n  else va = edge[0], vb = edge[1];\n  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n  return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n  return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n  for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n    if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n      var index = new Array(m),\n          array = new Array(m);\n      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n      index.sort(function(i, j) { return array[j] - array[i]; });\n      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n      for (j = 0; j < m; ++j) halfedges[j] = array[j];\n    }\n  }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n  var nCells = cells.length,\n      iCell,\n      cell,\n      site,\n      iHalfedge,\n      halfedges,\n      nHalfedges,\n      start,\n      startX,\n      startY,\n      end,\n      endX,\n      endY,\n      cover = true;\n\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      site = cell.site;\n      halfedges = cell.halfedges;\n      iHalfedge = halfedges.length;\n\n      // Remove any dangling clipped edges.\n      while (iHalfedge--) {\n        if (!edges[halfedges[iHalfedge]]) {\n          halfedges.splice(iHalfedge, 1);\n        }\n      }\n\n      // Insert any border edges as necessary.\n      iHalfedge = 0, nHalfedges = halfedges.length;\n      while (iHalfedge < nHalfedges) {\n        end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n        start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n        if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n          halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n              Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n              : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n              : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n              : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n              : null)) - 1);\n          ++nHalfedges;\n        }\n      }\n\n      if (nHalfedges) cover = false;\n    }\n  }\n\n  // If there weren’t any edges, have the closest site cover the extent.\n  // It doesn’t matter which corner of the extent we measure!\n  if (cover) {\n    var dx, dy, d2, dc = Infinity;\n\n    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n      if (cell = cells[iCell]) {\n        site = cell.site;\n        dx = site[0] - x0;\n        dy = site[1] - y0;\n        d2 = dx * dx + dy * dy;\n        if (d2 < dc) dc = d2, cover = cell;\n      }\n    }\n\n    if (cover) {\n      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n      cover.halfedges.push(\n        edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n        edges.push(createBorderEdge(site, v01, v11)) - 1,\n        edges.push(createBorderEdge(site, v11, v10)) - 1,\n        edges.push(createBorderEdge(site, v10, v00)) - 1\n      );\n    }\n  }\n\n  // Lastly delete any cells with no edges; these were entirely clipped.\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      if (!cell.halfedges.length) {\n        delete cells[iCell];\n      }\n    }\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n  RedBlackNode(this);\n  this.x =\n  this.y =\n  this.arc =\n  this.site =\n  this.cy = null;\n}\n\nexport function attachCircle(arc) {\n  var lArc = arc.P,\n      rArc = arc.N;\n\n  if (!lArc || !rArc) return;\n\n  var lSite = lArc.site,\n      cSite = arc.site,\n      rSite = rArc.site;\n\n  if (lSite === rSite) return;\n\n  var bx = cSite[0],\n      by = cSite[1],\n      ax = lSite[0] - bx,\n      ay = lSite[1] - by,\n      cx = rSite[0] - bx,\n      cy = rSite[1] - by;\n\n  var d = 2 * (ax * cy - ay * cx);\n  if (d >= -epsilon2) return;\n\n  var ha = ax * ax + ay * ay,\n      hc = cx * cx + cy * cy,\n      x = (cy * ha - ay * hc) / d,\n      y = (ax * hc - cx * ha) / d;\n\n  var circle = circlePool.pop() || new Circle;\n  circle.arc = arc;\n  circle.site = cSite;\n  circle.x = x + bx;\n  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n  arc.circle = circle;\n\n  var before = null,\n      node = circles._;\n\n  while (node) {\n    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n      if (node.L) node = node.L;\n      else { before = node.P; break; }\n    } else {\n      if (node.R) node = node.R;\n      else { before = node; break; }\n    }\n  }\n\n  circles.insert(before, circle);\n  if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n  var circle = arc.circle;\n  if (circle) {\n    if (!circle.P) firstCircle = circle.N;\n    circles.remove(circle);\n    circlePool.push(circle);\n    RedBlackNode(circle);\n    arc.circle = null;\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n  RedBlackNode(this);\n  this.edge =\n  this.site =\n  this.circle = null;\n}\n\nfunction createBeach(site) {\n  var beach = beachPool.pop() || new Beach;\n  beach.site = site;\n  return beach;\n}\n\nfunction detachBeach(beach) {\n  detachCircle(beach);\n  beaches.remove(beach);\n  beachPool.push(beach);\n  RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n  var circle = beach.circle,\n      x = circle.x,\n      y = circle.cy,\n      vertex = [x, y],\n      previous = beach.P,\n      next = beach.N,\n      disappearing = [beach];\n\n  detachBeach(beach);\n\n  var lArc = previous;\n  while (lArc.circle\n      && Math.abs(x - lArc.circle.x) < epsilon\n      && Math.abs(y - lArc.circle.cy) < epsilon) {\n    previous = lArc.P;\n    disappearing.unshift(lArc);\n    detachBeach(lArc);\n    lArc = previous;\n  }\n\n  disappearing.unshift(lArc);\n  detachCircle(lArc);\n\n  var rArc = next;\n  while (rArc.circle\n      && Math.abs(x - rArc.circle.x) < epsilon\n      && Math.abs(y - rArc.circle.cy) < epsilon) {\n    next = rArc.N;\n    disappearing.push(rArc);\n    detachBeach(rArc);\n    rArc = next;\n  }\n\n  disappearing.push(rArc);\n  detachCircle(rArc);\n\n  var nArcs = disappearing.length,\n      iArc;\n  for (iArc = 1; iArc < nArcs; ++iArc) {\n    rArc = disappearing[iArc];\n    lArc = disappearing[iArc - 1];\n    setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n  }\n\n  lArc = disappearing[0];\n  rArc = disappearing[nArcs - 1];\n  rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n  var x = site[0],\n      directrix = site[1],\n      lArc,\n      rArc,\n      dxl,\n      dxr,\n      node = beaches._;\n\n  while (node) {\n    dxl = leftBreakPoint(node, directrix) - x;\n    if (dxl > epsilon) node = node.L; else {\n      dxr = x - rightBreakPoint(node, directrix);\n      if (dxr > epsilon) {\n        if (!node.R) {\n          lArc = node;\n          break;\n        }\n        node = node.R;\n      } else {\n        if (dxl > -epsilon) {\n          lArc = node.P;\n          rArc = node;\n        } else if (dxr > -epsilon) {\n          lArc = node;\n          rArc = node.N;\n        } else {\n          lArc = rArc = node;\n        }\n        break;\n      }\n    }\n  }\n\n  createCell(site);\n  var newArc = createBeach(site);\n  beaches.insert(lArc, newArc);\n\n  if (!lArc && !rArc) return;\n\n  if (lArc === rArc) {\n    detachCircle(lArc);\n    rArc = createBeach(lArc.site);\n    beaches.insert(newArc, rArc);\n    newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n    attachCircle(lArc);\n    attachCircle(rArc);\n    return;\n  }\n\n  if (!rArc) { // && lArc\n    newArc.edge = createEdge(lArc.site, newArc.site);\n    return;\n  }\n\n  // else lArc !== rArc\n  detachCircle(lArc);\n  detachCircle(rArc);\n\n  var lSite = lArc.site,\n      ax = lSite[0],\n      ay = lSite[1],\n      bx = site[0] - ax,\n      by = site[1] - ay,\n      rSite = rArc.site,\n      cx = rSite[0] - ax,\n      cy = rSite[1] - ay,\n      d = 2 * (bx * cy - by * cx),\n      hb = bx * bx + by * by,\n      hc = cx * cx + cy * cy,\n      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n  setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n  newArc.edge = createEdge(lSite, site, null, vertex);\n  rArc.edge = createEdge(site, rSite, null, vertex);\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n  var site = arc.site,\n      rfocx = site[0],\n      rfocy = site[1],\n      pby2 = rfocy - directrix;\n\n  if (!pby2) return rfocx;\n\n  var lArc = arc.P;\n  if (!lArc) return -Infinity;\n\n  site = lArc.site;\n  var lfocx = site[0],\n      lfocy = site[1],\n      plby2 = lfocy - directrix;\n\n  if (!plby2) return lfocx;\n\n  var hl = lfocx - rfocx,\n      aby2 = 1 / pby2 - 1 / plby2,\n      b = hl / plby2;\n\n  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n  return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n  var rArc = arc.N;\n  if (rArc) return leftBreakPoint(rArc, directrix);\n  var site = arc.site;\n  return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n  return b[1] - a[1]\n      || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n  var site = sites.sort(lexicographic).pop(),\n      x,\n      y,\n      circle;\n\n  edges = [];\n  cells = new Array(sites.length);\n  beaches = new RedBlackTree;\n  circles = new RedBlackTree;\n\n  while (true) {\n    circle = firstCircle;\n    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n      if (site[0] !== x || site[1] !== y) {\n        addBeach(site);\n        x = site[0], y = site[1];\n      }\n      site = sites.pop();\n    } else if (circle) {\n      removeBeach(circle.arc);\n    } else {\n      break;\n    }\n  }\n\n  sortCellHalfedges();\n\n  if (extent) {\n    var x0 = +extent[0][0],\n        y0 = +extent[0][1],\n        x1 = +extent[1][0],\n        y1 = +extent[1][1];\n    clipEdges(x0, y0, x1, y1);\n    clipCells(x0, y0, x1, y1);\n  }\n\n  this.edges = edges;\n  this.cells = cells;\n\n  beaches =\n  circles =\n  edges =\n  cells = null;\n}\n\nDiagram.prototype = {\n  constructor: Diagram,\n\n  polygons: function() {\n    var edges = this.edges;\n\n    return this.cells.map(function(cell) {\n      var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n      polygon.data = cell.site.data;\n      return polygon;\n    });\n  },\n\n  triangles: function() {\n    var triangles = [],\n        edges = this.edges;\n\n    this.cells.forEach(function(cell, i) {\n      if (!(m = (halfedges = cell.halfedges).length)) return;\n      var site = cell.site,\n          halfedges,\n          j = -1,\n          m,\n          s0,\n          e1 = edges[halfedges[m - 1]],\n          s1 = e1.left === site ? e1.right : e1.left;\n\n      while (++j < m) {\n        s0 = s1;\n        e1 = edges[halfedges[j]];\n        s1 = e1.left === site ? e1.right : e1.left;\n        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n          triangles.push([site.data, s0.data, s1.data]);\n        }\n      }\n    });\n\n    return triangles;\n  },\n\n  links: function() {\n    return this.edges.filter(function(edge) {\n      return edge.right;\n    }).map(function(edge) {\n      return {\n        source: edge.left.data,\n        target: edge.right.data\n      };\n    });\n  },\n\n  find: function(x, y, radius) {\n    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n    // Use the previously-found cell, or start with an arbitrary one.\n    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n    // Traverse the half-edges to find a closer cell, if any.\n    do {\n      cell = that.cells[i0 = i1], i1 = null;\n      cell.halfedges.forEach(function(e) {\n        var edge = that.edges[e], v = edge.left;\n        if ((v === cell.site || !v) && !(v = edge.right)) return;\n        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n        if (v2 < d2) d2 = v2, i1 = v.index;\n      });\n    } while (i1 !== null);\n\n    that._found = i0;\n\n    return radius == null || d2 <= radius * radius ? cell.site : null;\n  }\n}\n","var rho = Math.SQRT2,\n    rho2 = 2,\n    rho4 = 4,\n    epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n  var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n      ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n      dx = ux1 - ux0,\n      dy = uy1 - uy0,\n      d2 = dx * dx + dy * dy,\n      i,\n      S;\n\n  // Special case for u0 ≅ u1.\n  if (d2 < epsilon2) {\n    S = Math.log(w1 / w0) / rho;\n    i = function(t) {\n      return [\n        ux0 + t * dx,\n        uy0 + t * dy,\n        w0 * Math.exp(rho * t * S)\n      ];\n    }\n  }\n\n  // General case.\n  else {\n    var d1 = Math.sqrt(d2),\n        b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n        b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n        r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n        r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n    S = (r1 - r0) / rho;\n    i = function(t) {\n      var s = t * S,\n          coshr0 = cosh(r0),\n          u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n      return [\n        ux0 + u * dx,\n        uy0 + u * dy,\n        w0 * coshr0 / cosh(rho * s + r0)\n      ];\n    }\n  }\n\n  i.duration = S * 1000;\n\n  return i;\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"sharedData\"},\"variableDefinitions\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sharedData\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"client\"},\"arguments\":[]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"showDiscardChangesModal\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"formTouched\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"history\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cachedPayload\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"resetAndClose\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":214}};\n    doc.loc.source = {\"body\":\"query sharedData {\\n  sharedData @client {\\n    showDiscardChangesModal\\n    formTouched\\n    history {\\n      profileType\\n      mode\\n    }\\n    cachedPayload {\\n      profileType\\n      mode\\n    }\\n    resetAndClose\\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[\"sharedData\"] = oneQuery(doc, \"sharedData\");\n        \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 {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n  return d.target.depth;\n}\n\nexport function left(node) {\n  return node.depth;\n}\n\nexport function right(node, n) {\n  return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n  return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n  return node.targetLinks.length ? node.depth\n      : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n      : 0;\n}\n","export default function constant(x) {\n  return function() {\n    return x;\n  };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n  return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n  return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n  return a.y0 - b.y0;\n}\n\nfunction value(d) {\n  return d.value;\n}\n\nfunction defaultId(d) {\n  return d.index;\n}\n\nfunction defaultNodes(graph) {\n  return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n  return graph.links;\n}\n\nfunction find(nodeById, id) {\n  const node = nodeById.get(id);\n  if (!node) throw new Error(\"missing: \" + id);\n  return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n  for (const node of nodes) {\n    let y0 = node.y0;\n    let y1 = y0;\n    for (const link of node.sourceLinks) {\n      link.y0 = y0 + link.width / 2;\n      y0 += link.width;\n    }\n    for (const link of node.targetLinks) {\n      link.y1 = y1 + link.width / 2;\n      y1 += link.width;\n    }\n  }\n}\n\nexport default function Sankey() {\n  let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n  let dx = 24; // nodeWidth\n  let dy = 8, py; // nodePadding\n  let id = defaultId;\n  let align = justify;\n  let sort;\n  let linkSort;\n  let nodes = defaultNodes;\n  let links = defaultLinks;\n  let iterations = 6;\n\n  function sankey() {\n    const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n    computeNodeLinks(graph);\n    computeNodeValues(graph);\n    computeNodeDepths(graph);\n    computeNodeHeights(graph);\n    computeNodeBreadths(graph);\n    computeLinkBreadths(graph);\n    return graph;\n  }\n\n  sankey.update = function(graph) {\n    computeLinkBreadths(graph);\n    return graph;\n  };\n\n  sankey.nodeId = function(_) {\n    return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n  };\n\n  sankey.nodeAlign = function(_) {\n    return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n  };\n\n  sankey.nodeSort = function(_) {\n    return arguments.length ? (sort = _, sankey) : sort;\n  };\n\n  sankey.nodeWidth = function(_) {\n    return arguments.length ? (dx = +_, sankey) : dx;\n  };\n\n  sankey.nodePadding = function(_) {\n    return arguments.length ? (dy = py = +_, sankey) : dy;\n  };\n\n  sankey.nodes = function(_) {\n    return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n  };\n\n  sankey.links = function(_) {\n    return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n  };\n\n  sankey.linkSort = function(_) {\n    return arguments.length ? (linkSort = _, sankey) : linkSort;\n  };\n\n  sankey.size = function(_) {\n    return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n  };\n\n  sankey.extent = function(_) {\n    return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n  };\n\n  sankey.iterations = function(_) {\n    return arguments.length ? (iterations = +_, sankey) : iterations;\n  };\n\n  function computeNodeLinks({nodes, links}) {\n    for (const [i, node] of nodes.entries()) {\n      node.index = i;\n      node.sourceLinks = [];\n      node.targetLinks = [];\n    }\n    const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n    for (const [i, link] of links.entries()) {\n      link.index = i;\n      let {source, target} = link;\n      if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n      if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n      source.sourceLinks.push(link);\n      target.targetLinks.push(link);\n    }\n    if (linkSort != null) {\n      for (const {sourceLinks, targetLinks} of nodes) {\n        sourceLinks.sort(linkSort);\n        targetLinks.sort(linkSort);\n      }\n    }\n  }\n\n  function computeNodeValues({nodes}) {\n    for (const node of nodes) {\n      node.value = node.fixedValue === undefined\n          ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n          : node.fixedValue;\n    }\n  }\n\n  function computeNodeDepths({nodes}) {\n    const n = nodes.length;\n    let current = new Set(nodes);\n    let next = new Set;\n    let x = 0;\n    while (current.size) {\n      for (const node of current) {\n        node.depth = x;\n        for (const {target} of node.sourceLinks) {\n          next.add(target);\n        }\n      }\n      if (++x > n) throw new Error(\"circular link\");\n      current = next;\n      next = new Set;\n    }\n  }\n\n  function computeNodeHeights({nodes}) {\n    const n = nodes.length;\n    let current = new Set(nodes);\n    let next = new Set;\n    let x = 0;\n    while (current.size) {\n      for (const node of current) {\n        node.height = x;\n        for (const {source} of node.targetLinks) {\n          next.add(source);\n        }\n      }\n      if (++x > n) throw new Error(\"circular link\");\n      current = next;\n      next = new Set;\n    }\n  }\n\n  function computeNodeLayers({nodes}) {\n    const x = max(nodes, d => d.depth) + 1;\n    const kx = (x1 - x0 - dx) / (x - 1);\n    const columns = new Array(x);\n    for (const node of nodes) {\n      const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n      node.layer = i;\n      node.x0 = x0 + i * kx;\n      node.x1 = node.x0 + dx;\n      if (columns[i]) columns[i].push(node);\n      else columns[i] = [node];\n    }\n    if (sort) for (const column of columns) {\n      column.sort(sort);\n    }\n    return columns;\n  }\n\n  function initializeNodeBreadths(columns) {\n    const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n    for (const nodes of columns) {\n      let y = y0;\n      for (const node of nodes) {\n        node.y0 = y;\n        node.y1 = y + node.value * ky;\n        y = node.y1 + py;\n        for (const link of node.sourceLinks) {\n          link.width = link.value * ky;\n        }\n      }\n      y = (y1 - y + py) / (nodes.length + 1);\n      for (let i = 0; i < nodes.length; ++i) {\n        const node = nodes[i];\n        node.y0 += y * (i + 1);\n        node.y1 += y * (i + 1);\n      }\n      reorderLinks(nodes);\n    }\n  }\n\n  function computeNodeBreadths(graph) {\n    const columns = computeNodeLayers(graph);\n    py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n    initializeNodeBreadths(columns);\n    for (let i = 0; i < iterations; ++i) {\n      const alpha = Math.pow(0.99, i);\n      const beta = Math.max(1 - alpha, (i + 1) / iterations);\n      relaxRightToLeft(columns, alpha, beta);\n      relaxLeftToRight(columns, alpha, beta);\n    }\n  }\n\n  // Reposition each node based on its incoming (target) links.\n  function relaxLeftToRight(columns, alpha, beta) {\n    for (let i = 1, n = columns.length; i < n; ++i) {\n      const column = columns[i];\n      for (const target of column) {\n        let y = 0;\n        let w = 0;\n        for (const {source, value} of target.targetLinks) {\n          let v = value * (target.layer - source.layer);\n          y += targetTop(source, target) * v;\n          w += v;\n        }\n        if (!(w > 0)) continue;\n        let dy = (y / w - target.y0) * alpha;\n        target.y0 += dy;\n        target.y1 += dy;\n        reorderNodeLinks(target);\n      }\n      if (sort === undefined) column.sort(ascendingBreadth);\n      resolveCollisions(column, beta);\n    }\n  }\n\n  // Reposition each node based on its outgoing (source) links.\n  function relaxRightToLeft(columns, alpha, beta) {\n    for (let n = columns.length, i = n - 2; i >= 0; --i) {\n      const column = columns[i];\n      for (const source of column) {\n        let y = 0;\n        let w = 0;\n        for (const {target, value} of source.sourceLinks) {\n          let v = value * (target.layer - source.layer);\n          y += sourceTop(source, target) * v;\n          w += v;\n        }\n        if (!(w > 0)) continue;\n        let dy = (y / w - source.y0) * alpha;\n        source.y0 += dy;\n        source.y1 += dy;\n        reorderNodeLinks(source);\n      }\n      if (sort === undefined) column.sort(ascendingBreadth);\n      resolveCollisions(column, beta);\n    }\n  }\n\n  function resolveCollisions(nodes, alpha) {\n    const i = nodes.length >> 1;\n    const subject = nodes[i];\n    resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n    resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n    resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n    resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n  }\n\n  // Push any overlapping nodes down.\n  function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n    for (; i < nodes.length; ++i) {\n      const node = nodes[i];\n      const dy = (y - node.y0) * alpha;\n      if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n      y = node.y1 + py;\n    }\n  }\n\n  // Push any overlapping nodes up.\n  function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n    for (; i >= 0; --i) {\n      const node = nodes[i];\n      const dy = (node.y1 - y) * alpha;\n      if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n      y = node.y0 - py;\n    }\n  }\n\n  function reorderNodeLinks({sourceLinks, targetLinks}) {\n    if (linkSort === undefined) {\n      for (const {source: {sourceLinks}} of targetLinks) {\n        sourceLinks.sort(ascendingTargetBreadth);\n      }\n      for (const {target: {targetLinks}} of sourceLinks) {\n        targetLinks.sort(ascendingSourceBreadth);\n      }\n    }\n  }\n\n  function reorderLinks(nodes) {\n    if (linkSort === undefined) {\n      for (const {sourceLinks, targetLinks} of nodes) {\n        sourceLinks.sort(ascendingTargetBreadth);\n        targetLinks.sort(ascendingSourceBreadth);\n      }\n    }\n  }\n\n  // Returns the target.y0 that would produce an ideal link from source to target.\n  function targetTop(source, target) {\n    let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n    for (const {target: node, width} of source.sourceLinks) {\n      if (node === target) break;\n      y += width + py;\n    }\n    for (const {source: node, width} of target.targetLinks) {\n      if (node === source) break;\n      y -= width;\n    }\n    return y;\n  }\n\n  // Returns the source.y0 that would produce an ideal link from source to target.\n  function sourceTop(source, target) {\n    let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n    for (const {source: node, width} of target.targetLinks) {\n      if (node === source) break;\n      y += width + py;\n    }\n    for (const {target: node, width} of source.sourceLinks) {\n      if (node === target) break;\n      y -= width;\n    }\n    return y;\n  }\n\n  return sankey;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null;\n\n  function link() {\n    var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = path();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = pointRadial(x0, y0),\n      p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n      p2 = pointRadial(x1, y0),\n      p3 = pointRadial(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n  return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n  return link(curveVertical);\n}\n\nexport function linkRadial() {\n  var l = link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n  return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n  return [d.target.x0, d.y1];\n}\n\nexport default function() {\n  return linkHorizontal()\n      .source(horizontalSource)\n      .target(horizontalTarget);\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","var pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\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","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n  include: [\n    require('./core')\n  ],\n  implicit: [\n    require('../type/timestamp'),\n    require('../type/merge')\n  ],\n  explicit: [\n    require('../type/binary'),\n    require('../type/omap'),\n    require('../type/pairs'),\n    require('../type/set')\n  ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n  if (data === null) return false;\n\n  var max = data.length;\n\n  return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n         (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n  return data === 'true' ||\n         data === 'True' ||\n         data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n  return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n  kind: 'scalar',\n  resolve: resolveYamlBoolean,\n  construct: constructYamlBoolean,\n  predicate: isBoolean,\n  represent: {\n    lowercase: function (object) { return object ? 'true' : 'false'; },\n    uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n    camelcase: function (object) { return object ? 'True' : 'False'; }\n  },\n  defaultStyle: 'lowercase'\n});\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestApprovalStateUpdatedEE\"},\"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\":\"mergeRequestApprovalStateUpdated\"},\"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\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsLeft\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalState\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"suggestedApprovers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"invalidApproversRules\"},\"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\":\"rules\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canApprove\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":731}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/user.fragment.graphql\\\"\\n\\nsubscription mergeRequestApprovalStateUpdatedEE($issuableId: IssuableID!) {\\n  mergeRequestApprovalStateUpdated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      id\\n      approved\\n      approvalsLeft\\n      approvalsRequired\\n      approvalState {\\n        suggestedApprovers {\\n          nodes {\\n            ...User\\n          }\\n        }\\n        invalidApproversRules {\\n          id\\n          name\\n        }\\n        rules {\\n          id\\n          approved\\n          approvalsRequired\\n          name\\n          type\\n        }\\n      }\\n      approvedBy {\\n        nodes {\\n          ...User\\n        }\\n      }\\n      userPermissions {\\n        canApprove\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user.fragment.graphql\").definitions));\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[\"mergeRequestApprovalStateUpdatedEE\"] = oneQuery(doc, \"mergeRequestApprovalStateUpdatedEE\");\n        \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 _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","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\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('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","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n  explicit: [\n    require('../type/str'),\n    require('../type/seq'),\n    require('../type/map')\n  ]\n});\n","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayload\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}]},{\"kind\":\"InputObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayloadInput\"},\"directives\":[],\"fields\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}]},{\"kind\":\"ObjectTypeDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"SharedData\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"showDiscardChangesModal\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"formTouched\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"history\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayload\"}}}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"cachedPayload\"},\"arguments\":[],\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayload\"}}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"resetAndClose\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeExtension\",\"name\":{\"kind\":\"Name\",\"value\":\"Query\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"sharedData\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SharedData\"}},\"directives\":[]}]},{\"kind\":\"ObjectTypeExtension\",\"name\":{\"kind\":\"Name\",\"value\":\"Mutation\"},\"interfaces\":[],\"directives\":[],\"fields\":[{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"discardChanges\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"goBack\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"goFirstStep\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"goForward\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"profileType\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"resetHistory\"},\"arguments\":[],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"setCachedPayload\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"cachedPayload\"},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CachedPayloadInput\"}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"setFormTouched\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"formTouched\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"setResetAndClose\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"resetAndClose\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]},{\"kind\":\"FieldDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"toggleModal\"},\"arguments\":[{\"kind\":\"InputValueDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"showDiscardChangesModal\"},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"LocalErrors\"}},\"directives\":[]}]}],\"loc\":{\"start\":0,\"end\":815}};\n    doc.loc.source = {\"body\":\"type CachedPayload {\\n  profileType: String!\\n  mode: String!\\n}\\n\\ninput CachedPayloadInput {\\n  profileType: String!\\n  mode: String!\\n}\\n\\ntype SharedData {\\n  showDiscardChangesModal: Boolean\\n  formTouched: Boolean\\n  history: [CachedPayload!]!\\n  cachedPayload: CachedPayload!\\n  resetAndClose: Boolean\\n}\\n\\nextend type Query {\\n  sharedData: SharedData\\n}\\n\\nextend type Mutation {\\n  discardChanges: LocalErrors\\n  goBack: LocalErrors\\n  goFirstStep(profileType: String!, mode: String!): LocalErrors\\n  goForward(profileType: String!, mode: String!): LocalErrors\\n  resetHistory: LocalErrors\\n  setCachedPayload(cachedPayload: CachedPayloadInput): LocalErrors\\n  setFormTouched(formTouched: Boolean!): LocalErrors\\n  setResetAndClose(resetAndClose: Boolean!): LocalErrors\\n  toggleModal(showDiscardChangesModal: Boolean!): LocalErrors\\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      module.exports = doc;\n    \n","import { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { NAMESPACE_TYPES } from 'ee/security_orchestration/constants';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { isGroup } from 'ee/security_orchestration/components/utils';\nimport { mapToListboxItems } from 'ee/security_orchestration/utils';\n\nexport const BLOCK_BRANCH_MODIFICATION = 'block_branch_modification';\nexport const BLOCK_GROUP_BRANCH_MODIFICATION = 'block_group_branch_modification';\nexport const PREVENT_PUSHING_AND_FORCE_PUSHING = 'prevent_pushing_and_force_pushing';\nexport const PREVENT_APPROVAL_BY_AUTHOR = 'prevent_approval_by_author';\nexport const PREVENT_APPROVAL_BY_COMMIT_AUTHOR = 'prevent_approval_by_commit_author';\nexport const REMOVE_APPROVALS_WITH_NEW_COMMIT = 'remove_approvals_with_new_commit';\nexport const REQUIRE_PASSWORD_TO_APPROVE = 'require_password_to_approve';\n\n// This defines behavior for existing policies. They shouldn't automatically opt-in to use this setting.\nexport const protectedBranchesConfiguration = {\n  [BLOCK_BRANCH_MODIFICATION]: false,\n};\n\n// This defines behavior for existing policies. They shouldn't automatically opt-in to use this setting.\nexport const groupProtectedBranchesConfiguration = (blockBranchModificationValue = false) => ({\n  [BLOCK_GROUP_BRANCH_MODIFICATION]: blockBranchModificationValue,\n});\n\n// This defines behavior for existing policies. They shouldn't automatically opt-in to use this setting.\nexport const pushingBranchesConfiguration = {\n  [PREVENT_PUSHING_AND_FORCE_PUSHING]: false,\n};\n\nexport const PROTECTED_BRANCHES_CONFIGURATION_KEYS = [\n  BLOCK_BRANCH_MODIFICATION,\n  BLOCK_GROUP_BRANCH_MODIFICATION,\n  PREVENT_PUSHING_AND_FORCE_PUSHING,\n];\n\nexport const MERGE_REQUEST_CONFIGURATION_KEYS = [\n  PREVENT_APPROVAL_BY_AUTHOR,\n  PREVENT_APPROVAL_BY_COMMIT_AUTHOR,\n  REMOVE_APPROVALS_WITH_NEW_COMMIT,\n  REQUIRE_PASSWORD_TO_APPROVE,\n];\n\n// This defines behavior for existing policies. They shouldn't automatically opt-in to use this setting.\nexport const mergeRequestConfiguration = {\n  [PREVENT_APPROVAL_BY_AUTHOR]: false,\n  [PREVENT_APPROVAL_BY_COMMIT_AUTHOR]: false,\n  [REMOVE_APPROVALS_WITH_NEW_COMMIT]: false,\n  [REQUIRE_PASSWORD_TO_APPROVE]: false,\n};\n\nexport const BLOCK_GROUP_BRANCH_MODIFICATION_WITH_EXCEPTIONS_HUMANIZED_STRING = s__(\n  'ScanResultPolicy|Prevent %{linkStart}group branch%{linkEnd} modification %{exceptSelection} %{groupSelection}',\n);\nexport const BLOCK_GROUP_BRANCH_MODIFICATION_HUMANIZED_STRING = s__(\n  'ScanResultPolicy|Prevent %{linkStart}group branch%{linkEnd} modification %{exceptSelection}',\n);\n\nexport const SETTINGS_HUMANIZED_STRINGS = {\n  [BLOCK_BRANCH_MODIFICATION]: s__('ScanResultPolicy|Prevent branch modification'),\n  [BLOCK_GROUP_BRANCH_MODIFICATION]: s__('ScanResultPolicy|Prevent group branch modification'),\n  [PREVENT_PUSHING_AND_FORCE_PUSHING]: s__('ScanResultPolicy|Prevent pushing and force pushing'),\n  [PREVENT_APPROVAL_BY_AUTHOR]: s__(\"ScanResultPolicy|Prevent approval by merge request's author\"),\n  [PREVENT_APPROVAL_BY_COMMIT_AUTHOR]: s__('ScanResultPolicy|Prevent approval by commit author'),\n  [REMOVE_APPROVALS_WITH_NEW_COMMIT]: s__('ScanResultPolicy|Remove all approvals with new commit'),\n  [REQUIRE_PASSWORD_TO_APPROVE]: s__(\n    'ScanResultPolicy|Require user re-authentication (password or SAML) to approve',\n  ),\n};\n\nexport const SETTINGS_TOOLTIP = {\n  [BLOCK_BRANCH_MODIFICATION]: s__(\n    'ScanResultPolicy|When enabled, prevents a user from removing a branch from the project protected branches list, deleting a protected branch, or changing the default branch if that branch is included in the security policy.',\n  ),\n  [BLOCK_GROUP_BRANCH_MODIFICATION]: s__(\n    'ScanResultPolicy|When enabled, prevents a user from removing a branch from the group protected branches list, deleting a protected branch, or changing the default branch if that branch is included in the security policy.',\n  ),\n  [PREVENT_PUSHING_AND_FORCE_PUSHING]: s__(\n    'ScanResultPolicy|When enabled, prevents pushing and force pushing to a protected branch if that branch is included in the security policy.',\n  ),\n  [PREVENT_APPROVAL_BY_AUTHOR]: s__(\n    'ScanResultPolicy|When enabled, merge request authors cannot approve their own MRs.',\n  ),\n  [PREVENT_APPROVAL_BY_COMMIT_AUTHOR]: s__(\n    'ScanResultPolicy|When enabled, users who have contributed code to the MR are ineligible for approval.',\n  ),\n  [REMOVE_APPROVALS_WITH_NEW_COMMIT]: s__(\n    'ScanResultPolicy|When enabled, if an MR receives all necessary approvals to merge, but then a new commit is added, new approvals are required.',\n  ),\n  [REQUIRE_PASSWORD_TO_APPROVE]: s__(\n    'ScanResultPolicy|When enabled, there will be password confirmation on approvals.',\n  ),\n};\n\nexport const SETTINGS_POPOVER_STRINGS = {\n  [BLOCK_BRANCH_MODIFICATION]: {\n    title: s__('ScanResultPolicy|Recommended settings'),\n    description: s__(\n      \"ScanResultPolicy|You have selected all protected branches in this policy's rules. To better protect your project, you should leave this setting enabled. %{linkStart}What are the risks of allowing pushing and force pushing?%{linkEnd}\",\n    ),\n    featureName: 'security_policy_protected_branch_modification',\n  },\n};\n\nexport const SETTINGS_LINKS = {\n  [BLOCK_BRANCH_MODIFICATION]: helpPagePath('/user/project/repository/branches/protected.html'),\n};\n\nexport const VALID_APPROVAL_SETTINGS = [\n  ...PROTECTED_BRANCHES_CONFIGURATION_KEYS,\n  ...MERGE_REQUEST_CONFIGURATION_KEYS,\n];\n\nexport const PERMITTED_INVALID_SETTINGS_KEY = 'block_protected_branch_modification';\n\nexport const PERMITTED_INVALID_SETTINGS = {\n  [PERMITTED_INVALID_SETTINGS_KEY]: {\n    enabled: true,\n  },\n};\n\n/**\n * Build settings based on provided flags, scalable for more flags in future\n * @returns {Object} final settings\n */\nconst buildConfig = (\n  settings,\n  { hasLinkedGroups = false, namespaceType = NAMESPACE_TYPES.PROJECT },\n) => {\n  const baseConfigurations = {\n    ...protectedBranchesConfiguration,\n  };\n\n  const shouldIncludeGroupConfiguration = isGroup(namespaceType) || hasLinkedGroups;\n\n  if (shouldIncludeGroupConfiguration) {\n    Object.assign(\n      baseConfigurations,\n      groupProtectedBranchesConfiguration(settings[BLOCK_BRANCH_MODIFICATION]),\n    );\n  }\n\n  return {\n    ...baseConfigurations,\n    ...pushingBranchesConfiguration,\n    ...mergeRequestConfiguration,\n  };\n};\n\n/**\n * Map dynamic approval settings to defined list and update only enable property\n * @param settings\n * @param options\n * @returns {Object}\n */\nexport const buildSettingsList = (\n  { settings = {}, options = {} } = { settings: {}, options: {} },\n) => {\n  const configuration = buildConfig(settings, options);\n\n  return Object.keys(configuration).reduce((acc, setting) => {\n    const hasEnabledProperty = settings ? setting in settings : false;\n    acc[setting] = hasEnabledProperty ? settings[setting] : configuration[setting];\n    return acc;\n  }, {});\n};\n\nexport const WITHOUT_EXCEPTIONS = 'without_exceptions';\nexport const EXCEPT_GROUPS = 'except_groups';\n\nexport const EXCEPTION_GROUPS_TEXTS = {\n  [WITHOUT_EXCEPTIONS]: s__('SecurityOrchestration|without exceptions'),\n  [EXCEPT_GROUPS]: s__('SecurityOrchestration|except groups'),\n};\n\nexport const EXCEPTION_GROUPS_LISTBOX_ITEMS = mapToListboxItems(EXCEPTION_GROUPS_TEXTS);\n\n/**\n * Transforms a group into a standardized group object\n * @param {Object} group - Group to transform\n * @returns {Object}\n */\nexport const createGroupObject = (group) => {\n  const convertedId = getIdFromGraphQLId(group.id);\n\n  return {\n    ...group,\n    id: convertedId,\n    text: group.full_name || group.fullName,\n    value: convertedId,\n  };\n};\n\n/**\n * Organizes groups into existing and to-be-retrieved groups\n * @param {string[]} groupIds - Array of group IDs\n * @param {Object[]} selectedGroups - Currently selected groups\n * @param {Object[]} availableGroups - Available groups to choose from\n * @returns {Object} Object containing existing groups and IDs to retrieve\n */\nexport const organizeGroups = ({ ids = [], availableGroups = [] }) =>\n  ids.reduce(\n    (acc, selectedId) => {\n      const existingGroup = availableGroups.find(({ id }) => id === selectedId);\n\n      if (existingGroup) {\n        acc.existingGroups.push(existingGroup);\n      } else {\n        acc.groupsToRetrieve.push(selectedId);\n      }\n\n      return acc;\n    },\n    { existingGroups: [], groupsToRetrieve: [] },\n  );\n\nexport const isMergeRequestSettingOverridden = (setting, value) => {\n  return MERGE_REQUEST_CONFIGURATION_KEYS.includes(setting) && Boolean(value);\n};\n","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","import { safeLoad } from 'js-yaml';\nimport { isBoolean, isEqual } from 'lodash';\nimport { extractPolicyContent } from 'ee/security_orchestration/components/utils';\nimport { POLICY_TYPE_COMPONENT_OPTIONS } from 'ee/security_orchestration/components/constants';\nimport { addIdsToPolicy, hasInvalidKey, isValidPolicy } from '../../utils';\nimport { PRIMARY_POLICY_KEYS } from '../../constants';\nimport { OPEN, CLOSED } from '../advanced_settings/constants';\nimport {\n  BLOCK_GROUP_BRANCH_MODIFICATION,\n  VALID_APPROVAL_SETTINGS,\n  PERMITTED_INVALID_SETTINGS,\n  PERMITTED_INVALID_SETTINGS_KEY,\n} from './settings';\n\n/*\n  Construct a policy object expected by the policy editor from a yaml manifest.\n*/\nexport const fromYaml = ({ manifest, validateRuleMode = false }) => {\n  try {\n    const { securityPoliciesNewYamlFormat = false } = window.gon?.features || {};\n    const payload = securityPoliciesNewYamlFormat\n      ? extractPolicyContent({\n          manifest,\n          type: POLICY_TYPE_COMPONENT_OPTIONS.approval.urlParameter,\n          withType: true,\n        })\n      : safeLoad(manifest, { json: true });\n\n    const policy = addIdsToPolicy(payload);\n\n    if (validateRuleMode) {\n      /**\n       * These values are what is supported by rule mode. If the yaml has any other values,\n       * rule mode will be disabled. This validation should not be used to check whether\n       * the yaml is a valid policy; that should be done on the backend with the official\n       * schema. These values should not be retrieved from the backend schema because\n       * the UI for new attributes may not be available.\n       */\n\n      const primaryKeys = [\n        ...PRIMARY_POLICY_KEYS,\n        'rules',\n        'actions',\n        'approval_settings',\n        'fallback_behavior',\n        'policy_tuning',\n      ];\n\n      const rulesKeys = [\n        'type',\n        'branches',\n        'branch_type',\n        'branch_exceptions',\n        'commits',\n        'license_states',\n        'license_types',\n        'scanners',\n        'severity_levels',\n        'vulnerabilities_allowed',\n        'vulnerability_states',\n        'vulnerability_age',\n        'vulnerability_attributes',\n        'id',\n        'match_on_inclusion_license',\n      ];\n      const actionsKeys = [\n        'type',\n        'approvals_required',\n        'user_approvers',\n        'group_approvers',\n        'user_approvers_ids',\n        'group_approvers_ids',\n        'role_approvers',\n        'id',\n        'enabled',\n      ];\n\n      if (gon.features?.excludeLicensePackages) {\n        rulesKeys.push('licenses');\n      }\n\n      const { approval_settings: settings = {}, fallback_behavior: fallback } = policy;\n\n      // Temporary workaround to allow the rule builder to load with wrongly persisted settings\n      const hasInvalidApprovalSettings = hasInvalidKey(settings, [\n        ...VALID_APPROVAL_SETTINGS,\n        PERMITTED_INVALID_SETTINGS_KEY,\n      ]);\n\n      const hasInvalidSettingStructure = !isEqual(settings, PERMITTED_INVALID_SETTINGS)\n        ? !Object.entries(settings).every(\n            ([key, value]) => isBoolean(value) || key === BLOCK_GROUP_BRANCH_MODIFICATION,\n          )\n        : false;\n\n      const hasInvalidFallbackBehavior = fallback && ![OPEN, CLOSED].includes(fallback.fail);\n\n      return isValidPolicy({ policy, primaryKeys, rulesKeys, actionsKeys }) &&\n        !hasInvalidApprovalSettings &&\n        !hasInvalidSettingStructure &&\n        !hasInvalidFallbackBehavior\n        ? policy\n        : { error: true };\n    }\n\n    return policy;\n  } catch {\n    /**\n     * Catch parsing error of safeLoad\n     */\n    return { error: true, key: 'yaml-parsing' };\n  }\n};\n\n/**\n * Converts a security policy from yaml to an object\n * @param {String} manifest a security policy in yaml form\n * @returns {Object} security policy object and any errors\n */\nexport const createPolicyObject = (manifest) => {\n  const policy = fromYaml({ manifest, validateRuleMode: true });\n\n  return { policy, hasParsingError: Boolean(policy.error) };\n};\n","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"cancelPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiBuildID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobCancel\"},\"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\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":180}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation cancelPipelineMiniGraphJob($id: CiBuildID!) {\\n  jobCancel(input: { id: $id }) {\\n    job {\\n      ...Job\\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  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.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[\"cancelPipelineMiniGraphJob\"] = oneQuery(doc, \"cancelPipelineMiniGraphJob\");\n        \n","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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-items-start\"},[(_vm.hasOneOption)?_vm._l((_vm.tertiaryButtons),function(btn,index){return _c('span',{key:index},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"gl-float-left md:gl-inline-flex\",class:[{ 'gl-mr-3': index !== _vm.tertiaryButtons.length - 1 }, btn.class],attrs:{\"id\":btn.id,\"title\":_vm.setTooltip(btn),\"href\":btn.href,\"target\":btn.target,\"data-clipboard-text\":btn.dataClipboardText,\"data-method\":btn.dataMethod,\"icon\":btn.icon,\"data-testid\":btn.testId || 'extension-actions-button',\"variant\":btn.variant || 'confirm',\"loading\":btn.loading,\"disabled\":btn.disabled || btn.loading,\"category\":\"tertiary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.onClickAction(btn)}}},[_vm._v(\"\\n        \"+_vm._s(btn.text)+\"\\n      \")]),_vm._v(\" \"),(btn.popoverTarget)?_c('gl-popover',{attrs:{\"target\":btn.popoverTarget},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" \"+_vm._s(btn.popoverTitle)+\" \")]},proxy:true}],null,true)},[_vm._v(\" \"),(btn.popoverLink)?_c('span',[_c('gl-sprintf',{attrs:{\"message\":btn.popoverText},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":btn.popoverLink,\"target\":\"_blank\"}},[_vm._v(\"\\n                \"+_vm._s(content))])]}}],null,true)})],1):_c('span',[_vm._v(\"\\n          \"+_vm._s(btn.popoverText)+\"\\n        \")])]):_vm._e()],1)}):_vm._e(),_vm._v(\" \"),(_vm.hasMultipleOptions)?[_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-block md:!gl-hidden\",attrs:{\"items\":_vm.dropdownItems,\"title\":_vm.__('Options'),\"icon\":\"ellipsis_v\",\"no-caret\":\"\",\"category\":\"tertiary\",\"text-sr-only\":\"\",\"size\":\"small\"},on:{\"action\":_vm.onClickAction}}),_vm._v(\" \"),_vm._l((_vm.tertiaryButtons),function(btn,index){return _c('span',{key:index},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"gl-float-left gl-hidden md:gl-inline-flex\",class:[{ 'gl-mr-3': index !== _vm.tertiaryButtons.length - 1 }, btn.class],attrs:{\"id\":btn.id,\"title\":_vm.setTooltip(btn),\"href\":btn.href,\"target\":btn.target,\"data-clipboard-text\":btn.dataClipboardText,\"data-method\":btn.dataMethod,\"icon\":btn.icon,\"data-testid\":btn.testId || 'extension-actions-button',\"variant\":btn.variant || 'confirm',\"loading\":btn.loading,\"disabled\":btn.disabled || btn.loading,\"category\":\"tertiary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.onClickAction(btn)}}},[_vm._v(\"\\n        \"+_vm._s(btn.text)+\"\\n      \")]),_vm._v(\" \"),(btn.popoverTarget)?_c('gl-popover',{attrs:{\"target\":btn.popoverTarget},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" \"+_vm._s(btn.popoverTitle)+\" \")]},proxy:true}],null,true)},[_vm._v(\" \"),(btn.popoverLink)?_c('span',[_c('gl-sprintf',{attrs:{\"message\":btn.popoverText},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":btn.popoverLink,\"target\":\"_blank\"}},[_vm._v(\"\\n                \"+_vm._s(content))])]}}],null,true)})],1):_c('span',[_vm._v(\"\\n          \"+_vm._s(btn.popoverText)+\"\\n        \")])]):_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!./action_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!./action_buttons.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlButton,\n  GlPopover,\n  GlSprintf,\n  GlLink,\n  GlDisclosureDropdown,\n  GlTooltipDirective,\n} from '@gitlab/ui';\n\nexport default {\n  name: 'ActionButtons',\n  components: {\n    GlButton,\n    GlPopover,\n    GlSprintf,\n    GlLink,\n    GlDisclosureDropdown,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    tertiaryButtons: {\n      type: Array,\n      // fix `spec/frontend/vue_merge_request_widget/mr_widget_options_spec.js` before making this required\n      required: false,\n      default: () => [],\n    },\n  },\n  data: () => {\n    return {\n      timeout: null,\n      updatingTooltip: false,\n    };\n  },\n  computed: {\n    hasOneOption() {\n      return this.tertiaryButtons.length === 1;\n    },\n    hasMultipleOptions() {\n      return this.tertiaryButtons.length > 1;\n    },\n    dropdownItems() {\n      return this.tertiaryButtons.map((item) => {\n        return {\n          ...item,\n          text: item.text,\n          href: item.href,\n          extraAttrs: {\n            dataClipboardText: item.dataClipboardText,\n            dataMethod: item.dataMethod,\n            target: item.target,\n          },\n        };\n      });\n    },\n  },\n  methods: {\n    onClickAction(action) {\n      this.$emit('clickedAction', action);\n\n      if (action.onClick) {\n        action.onClick();\n      }\n\n      if (action.tooltipOnClick) {\n        this.updatingTooltip = true;\n        this.$root.$emit('bv::show::tooltip', action.id);\n\n        clearTimeout(this.timeout);\n\n        this.timeout = setTimeout(() => {\n          this.updatingTooltip = false;\n          this.$root.$emit('bv::hide::tooltip', action.id);\n        }, 1000);\n      }\n    },\n    setTooltip(btn) {\n      if (this.updatingTooltip && btn.tooltipOnClick) {\n        return btn.tooltipOnClick;\n      }\n\n      return btn.tooltipText;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-items-start\">\n    <template v-if=\"hasOneOption\">\n      <span v-for=\"(btn, index) in tertiaryButtons\" :key=\"index\">\n        <gl-button\n          :id=\"btn.id\"\n          v-gl-tooltip.hover\n          :title=\"setTooltip(btn)\"\n          :href=\"btn.href\"\n          :target=\"btn.target\"\n          :class=\"[{ 'gl-mr-3': index !== tertiaryButtons.length - 1 }, btn.class]\"\n          :data-clipboard-text=\"btn.dataClipboardText\"\n          :data-method=\"btn.dataMethod\"\n          :icon=\"btn.icon\"\n          :data-testid=\"btn.testId || 'extension-actions-button'\"\n          :variant=\"btn.variant || 'confirm'\"\n          :loading=\"btn.loading\"\n          :disabled=\"btn.disabled || btn.loading\"\n          category=\"tertiary\"\n          size=\"small\"\n          class=\"gl-float-left md:gl-inline-flex\"\n          @click=\"onClickAction(btn)\"\n        >\n          {{ btn.text }}\n        </gl-button>\n        <gl-popover v-if=\"btn.popoverTarget\" :target=\"btn.popoverTarget\">\n          <template #title> {{ btn.popoverTitle }} </template>\n\n          <span v-if=\"btn.popoverLink\">\n            <gl-sprintf :message=\"btn.popoverText\">\n              <template #link=\"{ content }\">\n                <gl-link class=\"gl-text-sm\" :href=\"btn.popoverLink\" target=\"_blank\">\n                  {{ content }}</gl-link\n                >\n              </template>\n            </gl-sprintf>\n          </span>\n          <span v-else>\n            {{ btn.popoverText }}\n          </span>\n        </gl-popover>\n      </span>\n    </template>\n    <template v-if=\"hasMultipleOptions\">\n      <gl-disclosure-dropdown\n        v-gl-tooltip\n        :items=\"dropdownItems\"\n        :title=\"__('Options')\"\n        icon=\"ellipsis_v\"\n        no-caret\n        category=\"tertiary\"\n        text-sr-only\n        size=\"small\"\n        class=\"gl-block md:!gl-hidden\"\n        @action=\"onClickAction\"\n      />\n      <span v-for=\"(btn, index) in tertiaryButtons\" :key=\"index\">\n        <gl-button\n          :id=\"btn.id\"\n          v-gl-tooltip.hover\n          :title=\"setTooltip(btn)\"\n          :href=\"btn.href\"\n          :target=\"btn.target\"\n          :class=\"[{ 'gl-mr-3': index !== tertiaryButtons.length - 1 }, btn.class]\"\n          :data-clipboard-text=\"btn.dataClipboardText\"\n          :data-method=\"btn.dataMethod\"\n          :icon=\"btn.icon\"\n          :data-testid=\"btn.testId || 'extension-actions-button'\"\n          :variant=\"btn.variant || 'confirm'\"\n          :loading=\"btn.loading\"\n          :disabled=\"btn.disabled || btn.loading\"\n          category=\"tertiary\"\n          size=\"small\"\n          class=\"gl-float-left gl-hidden md:gl-inline-flex\"\n          @click=\"onClickAction(btn)\"\n        >\n          {{ btn.text }}\n        </gl-button>\n        <gl-popover v-if=\"btn.popoverTarget\" :target=\"btn.popoverTarget\">\n          <template #title> {{ btn.popoverTitle }} </template>\n\n          <span v-if=\"btn.popoverLink\">\n            <gl-sprintf :message=\"btn.popoverText\">\n              <template #link=\"{ content }\">\n                <gl-link class=\"gl-text-sm\" :href=\"btn.popoverLink\" target=\"_blank\">\n                  {{ content }}</gl-link\n                >\n              </template>\n            </gl-sprintf>\n          </span>\n          <span v-else>\n            {{ btn.popoverText }}\n          </span>\n        </gl-popover>\n      </span>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./action_buttons.vue?vue&type=template&id=48051e6e\"\nimport script from \"./action_buttons.vue?vue&type=script&lang=js\"\nexport * from \"./action_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","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n  // A trick for browserified version, to not include `Buffer` shim\n  var _require = require;\n  NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type       = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n  if (data === null) return false;\n\n  var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n  // Convert one by one.\n  for (idx = 0; idx < max; idx++) {\n    code = map.indexOf(data.charAt(idx));\n\n    // Skip CR/LF\n    if (code > 64) continue;\n\n    // Fail on illegal characters\n    if (code < 0) return false;\n\n    bitlen += 6;\n  }\n\n  // If there are any bits left, source was corrupted\n  return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n  var idx, tailbits,\n      input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n      max = input.length,\n      map = BASE64_MAP,\n      bits = 0,\n      result = [];\n\n  // Collect by 6*4 bits (3 bytes)\n\n  for (idx = 0; idx < max; idx++) {\n    if ((idx % 4 === 0) && idx) {\n      result.push((bits >> 16) & 0xFF);\n      result.push((bits >> 8) & 0xFF);\n      result.push(bits & 0xFF);\n    }\n\n    bits = (bits << 6) | map.indexOf(input.charAt(idx));\n  }\n\n  // Dump tail\n\n  tailbits = (max % 4) * 6;\n\n  if (tailbits === 0) {\n    result.push((bits >> 16) & 0xFF);\n    result.push((bits >> 8) & 0xFF);\n    result.push(bits & 0xFF);\n  } else if (tailbits === 18) {\n    result.push((bits >> 10) & 0xFF);\n    result.push((bits >> 2) & 0xFF);\n  } else if (tailbits === 12) {\n    result.push((bits >> 4) & 0xFF);\n  }\n\n  // Wrap into Buffer for NodeJS and leave Array for browser\n  if (NodeBuffer) {\n    // Support node 6.+ Buffer API when available\n    return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n  }\n\n  return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n  var result = '', bits = 0, idx, tail,\n      max = object.length,\n      map = BASE64_MAP;\n\n  // Convert every three bytes to 4 ASCII characters.\n\n  for (idx = 0; idx < max; idx++) {\n    if ((idx % 3 === 0) && idx) {\n      result += map[(bits >> 18) & 0x3F];\n      result += map[(bits >> 12) & 0x3F];\n      result += map[(bits >> 6) & 0x3F];\n      result += map[bits & 0x3F];\n    }\n\n    bits = (bits << 8) + object[idx];\n  }\n\n  // Dump tail\n\n  tail = max % 3;\n\n  if (tail === 0) {\n    result += map[(bits >> 18) & 0x3F];\n    result += map[(bits >> 12) & 0x3F];\n    result += map[(bits >> 6) & 0x3F];\n    result += map[bits & 0x3F];\n  } else if (tail === 2) {\n    result += map[(bits >> 10) & 0x3F];\n    result += map[(bits >> 4) & 0x3F];\n    result += map[(bits << 2) & 0x3F];\n    result += map[64];\n  } else if (tail === 1) {\n    result += map[(bits >> 2) & 0x3F];\n    result += map[(bits << 4) & 0x3F];\n    result += map[64];\n    result += map[64];\n  }\n\n  return result;\n}\n\nfunction isBinary(object) {\n  return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n  kind: 'scalar',\n  resolve: resolveYamlBinary,\n  construct: constructYamlBinary,\n  predicate: isBinary,\n  represent: representYamlBinary\n});\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiJob\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"action\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"confirmationMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":149}};\n    doc.loc.source = {\"body\":\"fragment Job on CiJob {\\n  id\\n  detailedStatus {\\n    id\\n    action {\\n      id\\n      confirmationMessage\\n      icon\\n      path\\n      title\\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[\"Job\"] = oneQuery(doc, \"Job\");\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","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","import { LOADING, ERROR, SUCCESS } from '~/ci/reports/constants';\n\nexport default {\n  methods: {\n    checkReportStatus(loading, error) {\n      if (loading) {\n        return LOADING;\n      }\n      if (error) {\n        return ERROR;\n      }\n\n      return SUCCESS;\n    },\n  },\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t  Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t  Redistribution and use in source and binary forms, with or without\n\t  modification, are permitted provided that the following conditions are met:\n\n\t    * Redistributions of source code must retain the above copyright\n\t      notice, this list of conditions and the following disclaimer.\n\t    * Redistributions in binary form must reproduce the above copyright\n\t      notice, this list of conditions and the following disclaimer in the\n\t      documentation and/or other materials provided with the distribution.\n\n\t  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t    var commentHandler = null;\n\t    var proxyDelegate = function (node, metadata) {\n\t        if (delegate) {\n\t            delegate(node, metadata);\n\t        }\n\t        if (commentHandler) {\n\t            commentHandler.visit(node, metadata);\n\t        }\n\t    };\n\t    var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t    var collectComment = false;\n\t    if (options) {\n\t        collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t        var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t        if (collectComment || attachComment) {\n\t            commentHandler = new comment_handler_1.CommentHandler();\n\t            commentHandler.attach = attachComment;\n\t            options.comment = true;\n\t            parserDelegate = proxyDelegate;\n\t        }\n\t    }\n\t    var isModule = false;\n\t    if (options && typeof options.sourceType === 'string') {\n\t        isModule = (options.sourceType === 'module');\n\t    }\n\t    var parser;\n\t    if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t        parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t    }\n\t    else {\n\t        parser = new parser_1.Parser(code, options, parserDelegate);\n\t    }\n\t    var program = isModule ? parser.parseModule() : parser.parseScript();\n\t    var ast = program;\n\t    if (collectComment && commentHandler) {\n\t        ast.comments = commentHandler.comments;\n\t    }\n\t    if (parser.config.tokens) {\n\t        ast.tokens = parser.tokens;\n\t    }\n\t    if (parser.config.tolerant) {\n\t        ast.errors = parser.errorHandler.errors;\n\t    }\n\t    return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t    var parsingOptions = options || {};\n\t    parsingOptions.sourceType = 'module';\n\t    return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t    var parsingOptions = options || {};\n\t    parsingOptions.sourceType = 'script';\n\t    return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t    var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t    var tokens;\n\t    tokens = [];\n\t    try {\n\t        while (true) {\n\t            var token = tokenizer.getNextToken();\n\t            if (!token) {\n\t                break;\n\t            }\n\t            if (delegate) {\n\t                token = delegate(token);\n\t            }\n\t            tokens.push(token);\n\t        }\n\t    }\n\t    catch (e) {\n\t        tokenizer.errorHandler.tolerate(e);\n\t    }\n\t    if (tokenizer.errorHandler.tolerant) {\n\t        tokens.errors = tokenizer.errors();\n\t    }\n\t    return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t    function CommentHandler() {\n\t        this.attach = false;\n\t        this.comments = [];\n\t        this.stack = [];\n\t        this.leading = [];\n\t        this.trailing = [];\n\t    }\n\t    CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t        //  innnerComments for properties empty block\n\t        //  `function a() {/** comments **\\/}`\n\t        if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t            var innerComments = [];\n\t            for (var i = this.leading.length - 1; i >= 0; --i) {\n\t                var entry = this.leading[i];\n\t                if (metadata.end.offset >= entry.start) {\n\t                    innerComments.unshift(entry.comment);\n\t                    this.leading.splice(i, 1);\n\t                    this.trailing.splice(i, 1);\n\t                }\n\t            }\n\t            if (innerComments.length) {\n\t                node.innerComments = innerComments;\n\t            }\n\t        }\n\t    };\n\t    CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t        var trailingComments = [];\n\t        if (this.trailing.length > 0) {\n\t            for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t                var entry_1 = this.trailing[i];\n\t                if (entry_1.start >= metadata.end.offset) {\n\t                    trailingComments.unshift(entry_1.comment);\n\t                }\n\t            }\n\t            this.trailing.length = 0;\n\t            return trailingComments;\n\t        }\n\t        var entry = this.stack[this.stack.length - 1];\n\t        if (entry && entry.node.trailingComments) {\n\t            var firstComment = entry.node.trailingComments[0];\n\t            if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t                trailingComments = entry.node.trailingComments;\n\t                delete entry.node.trailingComments;\n\t            }\n\t        }\n\t        return trailingComments;\n\t    };\n\t    CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t        var leadingComments = [];\n\t        var target;\n\t        while (this.stack.length > 0) {\n\t            var entry = this.stack[this.stack.length - 1];\n\t            if (entry && entry.start >= metadata.start.offset) {\n\t                target = entry.node;\n\t                this.stack.pop();\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        if (target) {\n\t            var count = target.leadingComments ? target.leadingComments.length : 0;\n\t            for (var i = count - 1; i >= 0; --i) {\n\t                var comment = target.leadingComments[i];\n\t                if (comment.range[1] <= metadata.start.offset) {\n\t                    leadingComments.unshift(comment);\n\t                    target.leadingComments.splice(i, 1);\n\t                }\n\t            }\n\t            if (target.leadingComments && target.leadingComments.length === 0) {\n\t                delete target.leadingComments;\n\t            }\n\t            return leadingComments;\n\t        }\n\t        for (var i = this.leading.length - 1; i >= 0; --i) {\n\t            var entry = this.leading[i];\n\t            if (entry.start <= metadata.start.offset) {\n\t                leadingComments.unshift(entry.comment);\n\t                this.leading.splice(i, 1);\n\t            }\n\t        }\n\t        return leadingComments;\n\t    };\n\t    CommentHandler.prototype.visitNode = function (node, metadata) {\n\t        if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t            return;\n\t        }\n\t        this.insertInnerComments(node, metadata);\n\t        var trailingComments = this.findTrailingComments(metadata);\n\t        var leadingComments = this.findLeadingComments(metadata);\n\t        if (leadingComments.length > 0) {\n\t            node.leadingComments = leadingComments;\n\t        }\n\t        if (trailingComments.length > 0) {\n\t            node.trailingComments = trailingComments;\n\t        }\n\t        this.stack.push({\n\t            node: node,\n\t            start: metadata.start.offset\n\t        });\n\t    };\n\t    CommentHandler.prototype.visitComment = function (node, metadata) {\n\t        var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t        var comment = {\n\t            type: type,\n\t            value: node.value\n\t        };\n\t        if (node.range) {\n\t            comment.range = node.range;\n\t        }\n\t        if (node.loc) {\n\t            comment.loc = node.loc;\n\t        }\n\t        this.comments.push(comment);\n\t        if (this.attach) {\n\t            var entry = {\n\t                comment: {\n\t                    type: type,\n\t                    value: node.value,\n\t                    range: [metadata.start.offset, metadata.end.offset]\n\t                },\n\t                start: metadata.start.offset\n\t            };\n\t            if (node.loc) {\n\t                entry.comment.loc = node.loc;\n\t            }\n\t            node.type = type;\n\t            this.leading.push(entry);\n\t            this.trailing.push(entry);\n\t        }\n\t    };\n\t    CommentHandler.prototype.visit = function (node, metadata) {\n\t        if (node.type === 'LineComment') {\n\t            this.visitComment(node, metadata);\n\t        }\n\t        else if (node.type === 'BlockComment') {\n\t            this.visitComment(node, metadata);\n\t        }\n\t        else if (this.attach) {\n\t            this.visitNode(node, metadata);\n\t        }\n\t    };\n\t    return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t    AssignmentExpression: 'AssignmentExpression',\n\t    AssignmentPattern: 'AssignmentPattern',\n\t    ArrayExpression: 'ArrayExpression',\n\t    ArrayPattern: 'ArrayPattern',\n\t    ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t    AwaitExpression: 'AwaitExpression',\n\t    BlockStatement: 'BlockStatement',\n\t    BinaryExpression: 'BinaryExpression',\n\t    BreakStatement: 'BreakStatement',\n\t    CallExpression: 'CallExpression',\n\t    CatchClause: 'CatchClause',\n\t    ClassBody: 'ClassBody',\n\t    ClassDeclaration: 'ClassDeclaration',\n\t    ClassExpression: 'ClassExpression',\n\t    ConditionalExpression: 'ConditionalExpression',\n\t    ContinueStatement: 'ContinueStatement',\n\t    DoWhileStatement: 'DoWhileStatement',\n\t    DebuggerStatement: 'DebuggerStatement',\n\t    EmptyStatement: 'EmptyStatement',\n\t    ExportAllDeclaration: 'ExportAllDeclaration',\n\t    ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t    ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t    ExportSpecifier: 'ExportSpecifier',\n\t    ExpressionStatement: 'ExpressionStatement',\n\t    ForStatement: 'ForStatement',\n\t    ForOfStatement: 'ForOfStatement',\n\t    ForInStatement: 'ForInStatement',\n\t    FunctionDeclaration: 'FunctionDeclaration',\n\t    FunctionExpression: 'FunctionExpression',\n\t    Identifier: 'Identifier',\n\t    IfStatement: 'IfStatement',\n\t    ImportDeclaration: 'ImportDeclaration',\n\t    ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t    ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t    ImportSpecifier: 'ImportSpecifier',\n\t    Literal: 'Literal',\n\t    LabeledStatement: 'LabeledStatement',\n\t    LogicalExpression: 'LogicalExpression',\n\t    MemberExpression: 'MemberExpression',\n\t    MetaProperty: 'MetaProperty',\n\t    MethodDefinition: 'MethodDefinition',\n\t    NewExpression: 'NewExpression',\n\t    ObjectExpression: 'ObjectExpression',\n\t    ObjectPattern: 'ObjectPattern',\n\t    Program: 'Program',\n\t    Property: 'Property',\n\t    RestElement: 'RestElement',\n\t    ReturnStatement: 'ReturnStatement',\n\t    SequenceExpression: 'SequenceExpression',\n\t    SpreadElement: 'SpreadElement',\n\t    Super: 'Super',\n\t    SwitchCase: 'SwitchCase',\n\t    SwitchStatement: 'SwitchStatement',\n\t    TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t    TemplateElement: 'TemplateElement',\n\t    TemplateLiteral: 'TemplateLiteral',\n\t    ThisExpression: 'ThisExpression',\n\t    ThrowStatement: 'ThrowStatement',\n\t    TryStatement: 'TryStatement',\n\t    UnaryExpression: 'UnaryExpression',\n\t    UpdateExpression: 'UpdateExpression',\n\t    VariableDeclaration: 'VariableDeclaration',\n\t    VariableDeclarator: 'VariableDeclarator',\n\t    WhileStatement: 'WhileStatement',\n\t    WithStatement: 'WithStatement',\n\t    YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t    var extendStatics = Object.setPrototypeOf ||\n\t        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t    return function (d, b) {\n\t        extendStatics(d, b);\n\t        function __() { this.constructor = d; }\n\t        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t    };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t    var qualifiedName;\n\t    switch (elementName.type) {\n\t        case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t            var id = elementName;\n\t            qualifiedName = id.name;\n\t            break;\n\t        case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t            var ns = elementName;\n\t            qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t                getQualifiedElementName(ns.name);\n\t            break;\n\t        case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t            var expr = elementName;\n\t            qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t                getQualifiedElementName(expr.property);\n\t            break;\n\t        /* istanbul ignore next */\n\t        default:\n\t            break;\n\t    }\n\t    return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t    __extends(JSXParser, _super);\n\t    function JSXParser(code, options, delegate) {\n\t        return _super.call(this, code, options, delegate) || this;\n\t    }\n\t    JSXParser.prototype.parsePrimaryExpression = function () {\n\t        return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t    };\n\t    JSXParser.prototype.startJSX = function () {\n\t        // Unwind the scanner before the lookahead token.\n\t        this.scanner.index = this.startMarker.index;\n\t        this.scanner.lineNumber = this.startMarker.line;\n\t        this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t    };\n\t    JSXParser.prototype.finishJSX = function () {\n\t        // Prime the next lookahead.\n\t        this.nextToken();\n\t    };\n\t    JSXParser.prototype.reenterJSX = function () {\n\t        this.startJSX();\n\t        this.expectJSX('}');\n\t        // Pop the closing '}' added from the lookahead.\n\t        if (this.config.tokens) {\n\t            this.tokens.pop();\n\t        }\n\t    };\n\t    JSXParser.prototype.createJSXNode = function () {\n\t        this.collectComments();\n\t        return {\n\t            index: this.scanner.index,\n\t            line: this.scanner.lineNumber,\n\t            column: this.scanner.index - this.scanner.lineStart\n\t        };\n\t    };\n\t    JSXParser.prototype.createJSXChildNode = function () {\n\t        return {\n\t            index: this.scanner.index,\n\t            line: this.scanner.lineNumber,\n\t            column: this.scanner.index - this.scanner.lineStart\n\t        };\n\t    };\n\t    JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t        var result = '&';\n\t        var valid = true;\n\t        var terminated = false;\n\t        var numeric = false;\n\t        var hex = false;\n\t        while (!this.scanner.eof() && valid && !terminated) {\n\t            var ch = this.scanner.source[this.scanner.index];\n\t            if (ch === quote) {\n\t                break;\n\t            }\n\t            terminated = (ch === ';');\n\t            result += ch;\n\t            ++this.scanner.index;\n\t            if (!terminated) {\n\t                switch (result.length) {\n\t                    case 2:\n\t                        // e.g. '&#123;'\n\t                        numeric = (ch === '#');\n\t                        break;\n\t                    case 3:\n\t                        if (numeric) {\n\t                            // e.g. '&#x41;'\n\t                            hex = (ch === 'x');\n\t                            valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t                            numeric = numeric && !hex;\n\t                        }\n\t                        break;\n\t                    default:\n\t                        valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t                        valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t                        break;\n\t                }\n\t            }\n\t        }\n\t        if (valid && terminated && result.length > 2) {\n\t            // e.g. '&#x41;' becomes just '#x41'\n\t            var str = result.substr(1, result.length - 2);\n\t            if (numeric && str.length > 1) {\n\t                result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t            }\n\t            else if (hex && str.length > 2) {\n\t                result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t            }\n\t            else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t                result = xhtml_entities_1.XHTMLEntities[str];\n\t            }\n\t        }\n\t        return result;\n\t    };\n\t    // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t    JSXParser.prototype.lexJSX = function () {\n\t        var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t        // < > / : = { }\n\t        if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t            var value = this.scanner.source[this.scanner.index++];\n\t            return {\n\t                type: 7 /* Punctuator */,\n\t                value: value,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: this.scanner.index - 1,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // \" '\n\t        if (cp === 34 || cp === 39) {\n\t            var start = this.scanner.index;\n\t            var quote = this.scanner.source[this.scanner.index++];\n\t            var str = '';\n\t            while (!this.scanner.eof()) {\n\t                var ch = this.scanner.source[this.scanner.index++];\n\t                if (ch === quote) {\n\t                    break;\n\t                }\n\t                else if (ch === '&') {\n\t                    str += this.scanXHTMLEntity(quote);\n\t                }\n\t                else {\n\t                    str += ch;\n\t                }\n\t            }\n\t            return {\n\t                type: 8 /* StringLiteral */,\n\t                value: str,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: start,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // ... or .\n\t        if (cp === 46) {\n\t            var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t            var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t            var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t            var start = this.scanner.index;\n\t            this.scanner.index += value.length;\n\t            return {\n\t                type: 7 /* Punctuator */,\n\t                value: value,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: start,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // `\n\t        if (cp === 96) {\n\t            // Only placeholder, since it will be rescanned as a real assignment expression.\n\t            return {\n\t                type: 10 /* Template */,\n\t                value: '',\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: this.scanner.index,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // Identifer can not contain backslash (char code 92).\n\t        if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t            var start = this.scanner.index;\n\t            ++this.scanner.index;\n\t            while (!this.scanner.eof()) {\n\t                var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t                if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t                    ++this.scanner.index;\n\t                }\n\t                else if (ch === 45) {\n\t                    // Hyphen (char code 45) can be part of an identifier.\n\t                    ++this.scanner.index;\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            var id = this.scanner.source.slice(start, this.scanner.index);\n\t            return {\n\t                type: 100 /* Identifier */,\n\t                value: id,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: start,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        return this.scanner.lex();\n\t    };\n\t    JSXParser.prototype.nextJSXToken = function () {\n\t        this.collectComments();\n\t        this.startMarker.index = this.scanner.index;\n\t        this.startMarker.line = this.scanner.lineNumber;\n\t        this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        var token = this.lexJSX();\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        if (this.config.tokens) {\n\t            this.tokens.push(this.convertToken(token));\n\t        }\n\t        return token;\n\t    };\n\t    JSXParser.prototype.nextJSXText = function () {\n\t        this.startMarker.index = this.scanner.index;\n\t        this.startMarker.line = this.scanner.lineNumber;\n\t        this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        var start = this.scanner.index;\n\t        var text = '';\n\t        while (!this.scanner.eof()) {\n\t            var ch = this.scanner.source[this.scanner.index];\n\t            if (ch === '{' || ch === '<') {\n\t                break;\n\t            }\n\t            ++this.scanner.index;\n\t            text += ch;\n\t            if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                ++this.scanner.lineNumber;\n\t                if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t                    ++this.scanner.index;\n\t                }\n\t                this.scanner.lineStart = this.scanner.index;\n\t            }\n\t        }\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        var token = {\n\t            type: 101 /* Text */,\n\t            value: text,\n\t            lineNumber: this.scanner.lineNumber,\n\t            lineStart: this.scanner.lineStart,\n\t            start: start,\n\t            end: this.scanner.index\n\t        };\n\t        if ((text.length > 0) && this.config.tokens) {\n\t            this.tokens.push(this.convertToken(token));\n\t        }\n\t        return token;\n\t    };\n\t    JSXParser.prototype.peekJSXToken = function () {\n\t        var state = this.scanner.saveState();\n\t        this.scanner.scanComments();\n\t        var next = this.lexJSX();\n\t        this.scanner.restoreState(state);\n\t        return next;\n\t    };\n\t    // Expect the next JSX token to match the specified punctuator.\n\t    // If not, an exception will be thrown.\n\t    JSXParser.prototype.expectJSX = function (value) {\n\t        var token = this.nextJSXToken();\n\t        if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t    };\n\t    // Return true if the next JSX token matches the specified punctuator.\n\t    JSXParser.prototype.matchJSX = function (value) {\n\t        var next = this.peekJSXToken();\n\t        return next.type === 7 /* Punctuator */ && next.value === value;\n\t    };\n\t    JSXParser.prototype.parseJSXIdentifier = function () {\n\t        var node = this.createJSXNode();\n\t        var token = this.nextJSXToken();\n\t        if (token.type !== 100 /* Identifier */) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t    };\n\t    JSXParser.prototype.parseJSXElementName = function () {\n\t        var node = this.createJSXNode();\n\t        var elementName = this.parseJSXIdentifier();\n\t        if (this.matchJSX(':')) {\n\t            var namespace = elementName;\n\t            this.expectJSX(':');\n\t            var name_1 = this.parseJSXIdentifier();\n\t            elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t        }\n\t        else if (this.matchJSX('.')) {\n\t            while (this.matchJSX('.')) {\n\t                var object = elementName;\n\t                this.expectJSX('.');\n\t                var property = this.parseJSXIdentifier();\n\t                elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t            }\n\t        }\n\t        return elementName;\n\t    };\n\t    JSXParser.prototype.parseJSXAttributeName = function () {\n\t        var node = this.createJSXNode();\n\t        var attributeName;\n\t        var identifier = this.parseJSXIdentifier();\n\t        if (this.matchJSX(':')) {\n\t            var namespace = identifier;\n\t            this.expectJSX(':');\n\t            var name_2 = this.parseJSXIdentifier();\n\t            attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t        }\n\t        else {\n\t            attributeName = identifier;\n\t        }\n\t        return attributeName;\n\t    };\n\t    JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        var token = this.nextJSXToken();\n\t        if (token.type !== 8 /* StringLiteral */) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t        var raw = this.getTokenRaw(token);\n\t        return this.finalize(node, new Node.Literal(token.value, raw));\n\t    };\n\t    JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('{');\n\t        this.finishJSX();\n\t        if (this.match('}')) {\n\t            this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t        }\n\t        var expression = this.parseAssignmentExpression();\n\t        this.reenterJSX();\n\t        return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t    };\n\t    JSXParser.prototype.parseJSXAttributeValue = function () {\n\t        return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t            this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t    };\n\t    JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        var name = this.parseJSXAttributeName();\n\t        var value = null;\n\t        if (this.matchJSX('=')) {\n\t            this.expectJSX('=');\n\t            value = this.parseJSXAttributeValue();\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t    };\n\t    JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('{');\n\t        this.expectJSX('...');\n\t        this.finishJSX();\n\t        var argument = this.parseAssignmentExpression();\n\t        this.reenterJSX();\n\t        return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t    };\n\t    JSXParser.prototype.parseJSXAttributes = function () {\n\t        var attributes = [];\n\t        while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t            var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t                this.parseJSXNameValueAttribute();\n\t            attributes.push(attribute);\n\t        }\n\t        return attributes;\n\t    };\n\t    JSXParser.prototype.parseJSXOpeningElement = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('<');\n\t        var name = this.parseJSXElementName();\n\t        var attributes = this.parseJSXAttributes();\n\t        var selfClosing = this.matchJSX('/');\n\t        if (selfClosing) {\n\t            this.expectJSX('/');\n\t        }\n\t        this.expectJSX('>');\n\t        return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t    };\n\t    JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('<');\n\t        if (this.matchJSX('/')) {\n\t            this.expectJSX('/');\n\t            var name_3 = this.parseJSXElementName();\n\t            this.expectJSX('>');\n\t            return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t        }\n\t        var name = this.parseJSXElementName();\n\t        var attributes = this.parseJSXAttributes();\n\t        var selfClosing = this.matchJSX('/');\n\t        if (selfClosing) {\n\t            this.expectJSX('/');\n\t        }\n\t        this.expectJSX('>');\n\t        return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t    };\n\t    JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t        var node = this.createJSXChildNode();\n\t        this.collectComments();\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t    };\n\t    JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('{');\n\t        var expression;\n\t        if (this.matchJSX('}')) {\n\t            expression = this.parseJSXEmptyExpression();\n\t            this.expectJSX('}');\n\t        }\n\t        else {\n\t            this.finishJSX();\n\t            expression = this.parseAssignmentExpression();\n\t            this.reenterJSX();\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t    };\n\t    JSXParser.prototype.parseJSXChildren = function () {\n\t        var children = [];\n\t        while (!this.scanner.eof()) {\n\t            var node = this.createJSXChildNode();\n\t            var token = this.nextJSXText();\n\t            if (token.start < token.end) {\n\t                var raw = this.getTokenRaw(token);\n\t                var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t                children.push(child);\n\t            }\n\t            if (this.scanner.source[this.scanner.index] === '{') {\n\t                var container = this.parseJSXExpressionContainer();\n\t                children.push(container);\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return children;\n\t    };\n\t    JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t        var stack = [];\n\t        while (!this.scanner.eof()) {\n\t            el.children = el.children.concat(this.parseJSXChildren());\n\t            var node = this.createJSXChildNode();\n\t            var element = this.parseJSXBoundaryElement();\n\t            if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t                var opening = element;\n\t                if (opening.selfClosing) {\n\t                    var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t                    el.children.push(child);\n\t                }\n\t                else {\n\t                    stack.push(el);\n\t                    el = { node: node, opening: opening, closing: null, children: [] };\n\t                }\n\t            }\n\t            if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t                el.closing = element;\n\t                var open_1 = getQualifiedElementName(el.opening.name);\n\t                var close_1 = getQualifiedElementName(el.closing.name);\n\t                if (open_1 !== close_1) {\n\t                    this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t                }\n\t                if (stack.length > 0) {\n\t                    var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t                    el = stack[stack.length - 1];\n\t                    el.children.push(child);\n\t                    stack.pop();\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        return el;\n\t    };\n\t    JSXParser.prototype.parseJSXElement = function () {\n\t        var node = this.createJSXNode();\n\t        var opening = this.parseJSXOpeningElement();\n\t        var children = [];\n\t        var closing = null;\n\t        if (!opening.selfClosing) {\n\t            var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t            children = el.children;\n\t            closing = el.closing;\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t    };\n\t    JSXParser.prototype.parseJSXRoot = function () {\n\t        // Pop the opening '<' added from the lookahead.\n\t        if (this.config.tokens) {\n\t            this.tokens.pop();\n\t        }\n\t        this.startJSX();\n\t        var element = this.parseJSXElement();\n\t        this.finishJSX();\n\t        return element;\n\t    };\n\t    JSXParser.prototype.isStartOfExpression = function () {\n\t        return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t    };\n\t    return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t    // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t    NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t    // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t    NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t    /* tslint:disable:no-bitwise */\n\t    fromCodePoint: function (cp) {\n\t        return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t            String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t                String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-white-space\n\t    isWhiteSpace: function (cp) {\n\t        return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t            (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-line-terminators\n\t    isLineTerminator: function (cp) {\n\t        return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t    isIdentifierStart: function (cp) {\n\t        return (cp === 0x24) || (cp === 0x5F) ||\n\t            (cp >= 0x41 && cp <= 0x5A) ||\n\t            (cp >= 0x61 && cp <= 0x7A) ||\n\t            (cp === 0x5C) ||\n\t            ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t    },\n\t    isIdentifierPart: function (cp) {\n\t        return (cp === 0x24) || (cp === 0x5F) ||\n\t            (cp >= 0x41 && cp <= 0x5A) ||\n\t            (cp >= 0x61 && cp <= 0x7A) ||\n\t            (cp >= 0x30 && cp <= 0x39) ||\n\t            (cp === 0x5C) ||\n\t            ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t    isDecimalDigit: function (cp) {\n\t        return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t    },\n\t    isHexDigit: function (cp) {\n\t        return (cp >= 0x30 && cp <= 0x39) ||\n\t            (cp >= 0x41 && cp <= 0x46) ||\n\t            (cp >= 0x61 && cp <= 0x66); // a..f\n\t    },\n\t    isOctalDigit: function (cp) {\n\t        return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t    }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t    function JSXClosingElement(name) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t        this.name = name;\n\t    }\n\t    return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t    function JSXElement(openingElement, children, closingElement) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t        this.openingElement = openingElement;\n\t        this.children = children;\n\t        this.closingElement = closingElement;\n\t    }\n\t    return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t    function JSXEmptyExpression() {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t    }\n\t    return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t    function JSXExpressionContainer(expression) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t        this.expression = expression;\n\t    }\n\t    return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t    function JSXIdentifier(name) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t        this.name = name;\n\t    }\n\t    return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t    function JSXMemberExpression(object, property) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t        this.object = object;\n\t        this.property = property;\n\t    }\n\t    return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t    function JSXAttribute(name, value) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t        this.name = name;\n\t        this.value = value;\n\t    }\n\t    return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t    function JSXNamespacedName(namespace, name) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t        this.namespace = namespace;\n\t        this.name = name;\n\t    }\n\t    return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t    function JSXOpeningElement(name, selfClosing, attributes) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t        this.name = name;\n\t        this.selfClosing = selfClosing;\n\t        this.attributes = attributes;\n\t    }\n\t    return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t    function JSXSpreadAttribute(argument) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t        this.argument = argument;\n\t    }\n\t    return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t    function JSXText(value, raw) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t        this.value = value;\n\t        this.raw = raw;\n\t    }\n\t    return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t    JSXAttribute: 'JSXAttribute',\n\t    JSXClosingElement: 'JSXClosingElement',\n\t    JSXElement: 'JSXElement',\n\t    JSXEmptyExpression: 'JSXEmptyExpression',\n\t    JSXExpressionContainer: 'JSXExpressionContainer',\n\t    JSXIdentifier: 'JSXIdentifier',\n\t    JSXMemberExpression: 'JSXMemberExpression',\n\t    JSXNamespacedName: 'JSXNamespacedName',\n\t    JSXOpeningElement: 'JSXOpeningElement',\n\t    JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t    JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t    function ArrayExpression(elements) {\n\t        this.type = syntax_1.Syntax.ArrayExpression;\n\t        this.elements = elements;\n\t    }\n\t    return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t    function ArrayPattern(elements) {\n\t        this.type = syntax_1.Syntax.ArrayPattern;\n\t        this.elements = elements;\n\t    }\n\t    return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t    function ArrowFunctionExpression(params, body, expression) {\n\t        this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t        this.id = null;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = expression;\n\t        this.async = false;\n\t    }\n\t    return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t    function AssignmentExpression(operator, left, right) {\n\t        this.type = syntax_1.Syntax.AssignmentExpression;\n\t        this.operator = operator;\n\t        this.left = left;\n\t        this.right = right;\n\t    }\n\t    return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t    function AssignmentPattern(left, right) {\n\t        this.type = syntax_1.Syntax.AssignmentPattern;\n\t        this.left = left;\n\t        this.right = right;\n\t    }\n\t    return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t    function AsyncArrowFunctionExpression(params, body, expression) {\n\t        this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t        this.id = null;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = expression;\n\t        this.async = true;\n\t    }\n\t    return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t    function AsyncFunctionDeclaration(id, params, body) {\n\t        this.type = syntax_1.Syntax.FunctionDeclaration;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = false;\n\t        this.async = true;\n\t    }\n\t    return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t    function AsyncFunctionExpression(id, params, body) {\n\t        this.type = syntax_1.Syntax.FunctionExpression;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = false;\n\t        this.async = true;\n\t    }\n\t    return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t    function AwaitExpression(argument) {\n\t        this.type = syntax_1.Syntax.AwaitExpression;\n\t        this.argument = argument;\n\t    }\n\t    return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t    function BinaryExpression(operator, left, right) {\n\t        var logical = (operator === '||' || operator === '&&');\n\t        this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t        this.operator = operator;\n\t        this.left = left;\n\t        this.right = right;\n\t    }\n\t    return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t    function BlockStatement(body) {\n\t        this.type = syntax_1.Syntax.BlockStatement;\n\t        this.body = body;\n\t    }\n\t    return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t    function BreakStatement(label) {\n\t        this.type = syntax_1.Syntax.BreakStatement;\n\t        this.label = label;\n\t    }\n\t    return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t    function CallExpression(callee, args) {\n\t        this.type = syntax_1.Syntax.CallExpression;\n\t        this.callee = callee;\n\t        this.arguments = args;\n\t    }\n\t    return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t    function CatchClause(param, body) {\n\t        this.type = syntax_1.Syntax.CatchClause;\n\t        this.param = param;\n\t        this.body = body;\n\t    }\n\t    return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t    function ClassBody(body) {\n\t        this.type = syntax_1.Syntax.ClassBody;\n\t        this.body = body;\n\t    }\n\t    return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t    function ClassDeclaration(id, superClass, body) {\n\t        this.type = syntax_1.Syntax.ClassDeclaration;\n\t        this.id = id;\n\t        this.superClass = superClass;\n\t        this.body = body;\n\t    }\n\t    return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t    function ClassExpression(id, superClass, body) {\n\t        this.type = syntax_1.Syntax.ClassExpression;\n\t        this.id = id;\n\t        this.superClass = superClass;\n\t        this.body = body;\n\t    }\n\t    return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t    function ComputedMemberExpression(object, property) {\n\t        this.type = syntax_1.Syntax.MemberExpression;\n\t        this.computed = true;\n\t        this.object = object;\n\t        this.property = property;\n\t    }\n\t    return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t    function ConditionalExpression(test, consequent, alternate) {\n\t        this.type = syntax_1.Syntax.ConditionalExpression;\n\t        this.test = test;\n\t        this.consequent = consequent;\n\t        this.alternate = alternate;\n\t    }\n\t    return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t    function ContinueStatement(label) {\n\t        this.type = syntax_1.Syntax.ContinueStatement;\n\t        this.label = label;\n\t    }\n\t    return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t    function DebuggerStatement() {\n\t        this.type = syntax_1.Syntax.DebuggerStatement;\n\t    }\n\t    return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t    function Directive(expression, directive) {\n\t        this.type = syntax_1.Syntax.ExpressionStatement;\n\t        this.expression = expression;\n\t        this.directive = directive;\n\t    }\n\t    return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t    function DoWhileStatement(body, test) {\n\t        this.type = syntax_1.Syntax.DoWhileStatement;\n\t        this.body = body;\n\t        this.test = test;\n\t    }\n\t    return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t    function EmptyStatement() {\n\t        this.type = syntax_1.Syntax.EmptyStatement;\n\t    }\n\t    return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t    function ExportAllDeclaration(source) {\n\t        this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t        this.source = source;\n\t    }\n\t    return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t    function ExportDefaultDeclaration(declaration) {\n\t        this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t        this.declaration = declaration;\n\t    }\n\t    return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t    function ExportNamedDeclaration(declaration, specifiers, source) {\n\t        this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t        this.declaration = declaration;\n\t        this.specifiers = specifiers;\n\t        this.source = source;\n\t    }\n\t    return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t    function ExportSpecifier(local, exported) {\n\t        this.type = syntax_1.Syntax.ExportSpecifier;\n\t        this.exported = exported;\n\t        this.local = local;\n\t    }\n\t    return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t    function ExpressionStatement(expression) {\n\t        this.type = syntax_1.Syntax.ExpressionStatement;\n\t        this.expression = expression;\n\t    }\n\t    return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t    function ForInStatement(left, right, body) {\n\t        this.type = syntax_1.Syntax.ForInStatement;\n\t        this.left = left;\n\t        this.right = right;\n\t        this.body = body;\n\t        this.each = false;\n\t    }\n\t    return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t    function ForOfStatement(left, right, body) {\n\t        this.type = syntax_1.Syntax.ForOfStatement;\n\t        this.left = left;\n\t        this.right = right;\n\t        this.body = body;\n\t    }\n\t    return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t    function ForStatement(init, test, update, body) {\n\t        this.type = syntax_1.Syntax.ForStatement;\n\t        this.init = init;\n\t        this.test = test;\n\t        this.update = update;\n\t        this.body = body;\n\t    }\n\t    return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t    function FunctionDeclaration(id, params, body, generator) {\n\t        this.type = syntax_1.Syntax.FunctionDeclaration;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = generator;\n\t        this.expression = false;\n\t        this.async = false;\n\t    }\n\t    return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t    function FunctionExpression(id, params, body, generator) {\n\t        this.type = syntax_1.Syntax.FunctionExpression;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = generator;\n\t        this.expression = false;\n\t        this.async = false;\n\t    }\n\t    return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t    function Identifier(name) {\n\t        this.type = syntax_1.Syntax.Identifier;\n\t        this.name = name;\n\t    }\n\t    return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t    function IfStatement(test, consequent, alternate) {\n\t        this.type = syntax_1.Syntax.IfStatement;\n\t        this.test = test;\n\t        this.consequent = consequent;\n\t        this.alternate = alternate;\n\t    }\n\t    return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t    function ImportDeclaration(specifiers, source) {\n\t        this.type = syntax_1.Syntax.ImportDeclaration;\n\t        this.specifiers = specifiers;\n\t        this.source = source;\n\t    }\n\t    return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t    function ImportDefaultSpecifier(local) {\n\t        this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t        this.local = local;\n\t    }\n\t    return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t    function ImportNamespaceSpecifier(local) {\n\t        this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t        this.local = local;\n\t    }\n\t    return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t    function ImportSpecifier(local, imported) {\n\t        this.type = syntax_1.Syntax.ImportSpecifier;\n\t        this.local = local;\n\t        this.imported = imported;\n\t    }\n\t    return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t    function LabeledStatement(label, body) {\n\t        this.type = syntax_1.Syntax.LabeledStatement;\n\t        this.label = label;\n\t        this.body = body;\n\t    }\n\t    return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t    function Literal(value, raw) {\n\t        this.type = syntax_1.Syntax.Literal;\n\t        this.value = value;\n\t        this.raw = raw;\n\t    }\n\t    return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t    function MetaProperty(meta, property) {\n\t        this.type = syntax_1.Syntax.MetaProperty;\n\t        this.meta = meta;\n\t        this.property = property;\n\t    }\n\t    return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t    function MethodDefinition(key, computed, value, kind, isStatic) {\n\t        this.type = syntax_1.Syntax.MethodDefinition;\n\t        this.key = key;\n\t        this.computed = computed;\n\t        this.value = value;\n\t        this.kind = kind;\n\t        this.static = isStatic;\n\t    }\n\t    return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t    function Module(body) {\n\t        this.type = syntax_1.Syntax.Program;\n\t        this.body = body;\n\t        this.sourceType = 'module';\n\t    }\n\t    return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t    function NewExpression(callee, args) {\n\t        this.type = syntax_1.Syntax.NewExpression;\n\t        this.callee = callee;\n\t        this.arguments = args;\n\t    }\n\t    return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t    function ObjectExpression(properties) {\n\t        this.type = syntax_1.Syntax.ObjectExpression;\n\t        this.properties = properties;\n\t    }\n\t    return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t    function ObjectPattern(properties) {\n\t        this.type = syntax_1.Syntax.ObjectPattern;\n\t        this.properties = properties;\n\t    }\n\t    return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t    function Property(kind, key, computed, value, method, shorthand) {\n\t        this.type = syntax_1.Syntax.Property;\n\t        this.key = key;\n\t        this.computed = computed;\n\t        this.value = value;\n\t        this.kind = kind;\n\t        this.method = method;\n\t        this.shorthand = shorthand;\n\t    }\n\t    return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t    function RegexLiteral(value, raw, pattern, flags) {\n\t        this.type = syntax_1.Syntax.Literal;\n\t        this.value = value;\n\t        this.raw = raw;\n\t        this.regex = { pattern: pattern, flags: flags };\n\t    }\n\t    return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t    function RestElement(argument) {\n\t        this.type = syntax_1.Syntax.RestElement;\n\t        this.argument = argument;\n\t    }\n\t    return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t    function ReturnStatement(argument) {\n\t        this.type = syntax_1.Syntax.ReturnStatement;\n\t        this.argument = argument;\n\t    }\n\t    return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t    function Script(body) {\n\t        this.type = syntax_1.Syntax.Program;\n\t        this.body = body;\n\t        this.sourceType = 'script';\n\t    }\n\t    return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t    function SequenceExpression(expressions) {\n\t        this.type = syntax_1.Syntax.SequenceExpression;\n\t        this.expressions = expressions;\n\t    }\n\t    return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t    function SpreadElement(argument) {\n\t        this.type = syntax_1.Syntax.SpreadElement;\n\t        this.argument = argument;\n\t    }\n\t    return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t    function StaticMemberExpression(object, property) {\n\t        this.type = syntax_1.Syntax.MemberExpression;\n\t        this.computed = false;\n\t        this.object = object;\n\t        this.property = property;\n\t    }\n\t    return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t    function Super() {\n\t        this.type = syntax_1.Syntax.Super;\n\t    }\n\t    return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t    function SwitchCase(test, consequent) {\n\t        this.type = syntax_1.Syntax.SwitchCase;\n\t        this.test = test;\n\t        this.consequent = consequent;\n\t    }\n\t    return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t    function SwitchStatement(discriminant, cases) {\n\t        this.type = syntax_1.Syntax.SwitchStatement;\n\t        this.discriminant = discriminant;\n\t        this.cases = cases;\n\t    }\n\t    return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t    function TaggedTemplateExpression(tag, quasi) {\n\t        this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t        this.tag = tag;\n\t        this.quasi = quasi;\n\t    }\n\t    return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t    function TemplateElement(value, tail) {\n\t        this.type = syntax_1.Syntax.TemplateElement;\n\t        this.value = value;\n\t        this.tail = tail;\n\t    }\n\t    return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t    function TemplateLiteral(quasis, expressions) {\n\t        this.type = syntax_1.Syntax.TemplateLiteral;\n\t        this.quasis = quasis;\n\t        this.expressions = expressions;\n\t    }\n\t    return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t    function ThisExpression() {\n\t        this.type = syntax_1.Syntax.ThisExpression;\n\t    }\n\t    return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t    function ThrowStatement(argument) {\n\t        this.type = syntax_1.Syntax.ThrowStatement;\n\t        this.argument = argument;\n\t    }\n\t    return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t    function TryStatement(block, handler, finalizer) {\n\t        this.type = syntax_1.Syntax.TryStatement;\n\t        this.block = block;\n\t        this.handler = handler;\n\t        this.finalizer = finalizer;\n\t    }\n\t    return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t    function UnaryExpression(operator, argument) {\n\t        this.type = syntax_1.Syntax.UnaryExpression;\n\t        this.operator = operator;\n\t        this.argument = argument;\n\t        this.prefix = true;\n\t    }\n\t    return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t    function UpdateExpression(operator, argument, prefix) {\n\t        this.type = syntax_1.Syntax.UpdateExpression;\n\t        this.operator = operator;\n\t        this.argument = argument;\n\t        this.prefix = prefix;\n\t    }\n\t    return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t    function VariableDeclaration(declarations, kind) {\n\t        this.type = syntax_1.Syntax.VariableDeclaration;\n\t        this.declarations = declarations;\n\t        this.kind = kind;\n\t    }\n\t    return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t    function VariableDeclarator(id, init) {\n\t        this.type = syntax_1.Syntax.VariableDeclarator;\n\t        this.id = id;\n\t        this.init = init;\n\t    }\n\t    return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t    function WhileStatement(test, body) {\n\t        this.type = syntax_1.Syntax.WhileStatement;\n\t        this.test = test;\n\t        this.body = body;\n\t    }\n\t    return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t    function WithStatement(object, body) {\n\t        this.type = syntax_1.Syntax.WithStatement;\n\t        this.object = object;\n\t        this.body = body;\n\t    }\n\t    return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t    function YieldExpression(argument, delegate) {\n\t        this.type = syntax_1.Syntax.YieldExpression;\n\t        this.argument = argument;\n\t        this.delegate = delegate;\n\t    }\n\t    return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t    function Parser(code, options, delegate) {\n\t        if (options === void 0) { options = {}; }\n\t        this.config = {\n\t            range: (typeof options.range === 'boolean') && options.range,\n\t            loc: (typeof options.loc === 'boolean') && options.loc,\n\t            source: null,\n\t            tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t            comment: (typeof options.comment === 'boolean') && options.comment,\n\t            tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t        };\n\t        if (this.config.loc && options.source && options.source !== null) {\n\t            this.config.source = String(options.source);\n\t        }\n\t        this.delegate = delegate;\n\t        this.errorHandler = new error_handler_1.ErrorHandler();\n\t        this.errorHandler.tolerant = this.config.tolerant;\n\t        this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t        this.scanner.trackComment = this.config.comment;\n\t        this.operatorPrecedence = {\n\t            ')': 0,\n\t            ';': 0,\n\t            ',': 0,\n\t            '=': 0,\n\t            ']': 0,\n\t            '||': 1,\n\t            '&&': 2,\n\t            '|': 3,\n\t            '^': 4,\n\t            '&': 5,\n\t            '==': 6,\n\t            '!=': 6,\n\t            '===': 6,\n\t            '!==': 6,\n\t            '<': 7,\n\t            '>': 7,\n\t            '<=': 7,\n\t            '>=': 7,\n\t            '<<': 8,\n\t            '>>': 8,\n\t            '>>>': 8,\n\t            '+': 9,\n\t            '-': 9,\n\t            '*': 11,\n\t            '/': 11,\n\t            '%': 11\n\t        };\n\t        this.lookahead = {\n\t            type: 2 /* EOF */,\n\t            value: '',\n\t            lineNumber: this.scanner.lineNumber,\n\t            lineStart: 0,\n\t            start: 0,\n\t            end: 0\n\t        };\n\t        this.hasLineTerminator = false;\n\t        this.context = {\n\t            isModule: false,\n\t            await: false,\n\t            allowIn: true,\n\t            allowStrictDirective: true,\n\t            allowYield: true,\n\t            firstCoverInitializedNameError: null,\n\t            isAssignmentTarget: false,\n\t            isBindingElement: false,\n\t            inFunctionBody: false,\n\t            inIteration: false,\n\t            inSwitch: false,\n\t            labelSet: {},\n\t            strict: false\n\t        };\n\t        this.tokens = [];\n\t        this.startMarker = {\n\t            index: 0,\n\t            line: this.scanner.lineNumber,\n\t            column: 0\n\t        };\n\t        this.lastMarker = {\n\t            index: 0,\n\t            line: this.scanner.lineNumber,\n\t            column: 0\n\t        };\n\t        this.nextToken();\n\t        this.lastMarker = {\n\t            index: this.scanner.index,\n\t            line: this.scanner.lineNumber,\n\t            column: this.scanner.index - this.scanner.lineStart\n\t        };\n\t    }\n\t    Parser.prototype.throwError = function (messageFormat) {\n\t        var values = [];\n\t        for (var _i = 1; _i < arguments.length; _i++) {\n\t            values[_i - 1] = arguments[_i];\n\t        }\n\t        var args = Array.prototype.slice.call(arguments, 1);\n\t        var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t            assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t            return args[idx];\n\t        });\n\t        var index = this.lastMarker.index;\n\t        var line = this.lastMarker.line;\n\t        var column = this.lastMarker.column + 1;\n\t        throw this.errorHandler.createError(index, line, column, msg);\n\t    };\n\t    Parser.prototype.tolerateError = function (messageFormat) {\n\t        var values = [];\n\t        for (var _i = 1; _i < arguments.length; _i++) {\n\t            values[_i - 1] = arguments[_i];\n\t        }\n\t        var args = Array.prototype.slice.call(arguments, 1);\n\t        var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t            assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t            return args[idx];\n\t        });\n\t        var index = this.lastMarker.index;\n\t        var line = this.scanner.lineNumber;\n\t        var column = this.lastMarker.column + 1;\n\t        this.errorHandler.tolerateError(index, line, column, msg);\n\t    };\n\t    // Throw an exception because of the token.\n\t    Parser.prototype.unexpectedTokenError = function (token, message) {\n\t        var msg = message || messages_1.Messages.UnexpectedToken;\n\t        var value;\n\t        if (token) {\n\t            if (!message) {\n\t                msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t                    (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t                        (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t                            (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t                                (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t                                    messages_1.Messages.UnexpectedToken;\n\t                if (token.type === 4 /* Keyword */) {\n\t                    if (this.scanner.isFutureReservedWord(token.value)) {\n\t                        msg = messages_1.Messages.UnexpectedReserved;\n\t                    }\n\t                    else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t                        msg = messages_1.Messages.StrictReservedWord;\n\t                    }\n\t                }\n\t            }\n\t            value = token.value;\n\t        }\n\t        else {\n\t            value = 'ILLEGAL';\n\t        }\n\t        msg = msg.replace('%0', value);\n\t        if (token && typeof token.lineNumber === 'number') {\n\t            var index = token.start;\n\t            var line = token.lineNumber;\n\t            var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t            var column = token.start - lastMarkerLineStart + 1;\n\t            return this.errorHandler.createError(index, line, column, msg);\n\t        }\n\t        else {\n\t            var index = this.lastMarker.index;\n\t            var line = this.lastMarker.line;\n\t            var column = this.lastMarker.column + 1;\n\t            return this.errorHandler.createError(index, line, column, msg);\n\t        }\n\t    };\n\t    Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t        throw this.unexpectedTokenError(token, message);\n\t    };\n\t    Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t        this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t    };\n\t    Parser.prototype.collectComments = function () {\n\t        if (!this.config.comment) {\n\t            this.scanner.scanComments();\n\t        }\n\t        else {\n\t            var comments = this.scanner.scanComments();\n\t            if (comments.length > 0 && this.delegate) {\n\t                for (var i = 0; i < comments.length; ++i) {\n\t                    var e = comments[i];\n\t                    var node = void 0;\n\t                    node = {\n\t                        type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t                        value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t                    };\n\t                    if (this.config.range) {\n\t                        node.range = e.range;\n\t                    }\n\t                    if (this.config.loc) {\n\t                        node.loc = e.loc;\n\t                    }\n\t                    var metadata = {\n\t                        start: {\n\t                            line: e.loc.start.line,\n\t                            column: e.loc.start.column,\n\t                            offset: e.range[0]\n\t                        },\n\t                        end: {\n\t                            line: e.loc.end.line,\n\t                            column: e.loc.end.column,\n\t                            offset: e.range[1]\n\t                        }\n\t                    };\n\t                    this.delegate(node, metadata);\n\t                }\n\t            }\n\t        }\n\t    };\n\t    // From internal representation to an external structure\n\t    Parser.prototype.getTokenRaw = function (token) {\n\t        return this.scanner.source.slice(token.start, token.end);\n\t    };\n\t    Parser.prototype.convertToken = function (token) {\n\t        var t = {\n\t            type: token_1.TokenName[token.type],\n\t            value: this.getTokenRaw(token)\n\t        };\n\t        if (this.config.range) {\n\t            t.range = [token.start, token.end];\n\t        }\n\t        if (this.config.loc) {\n\t            t.loc = {\n\t                start: {\n\t                    line: this.startMarker.line,\n\t                    column: this.startMarker.column\n\t                },\n\t                end: {\n\t                    line: this.scanner.lineNumber,\n\t                    column: this.scanner.index - this.scanner.lineStart\n\t                }\n\t            };\n\t        }\n\t        if (token.type === 9 /* RegularExpression */) {\n\t            var pattern = token.pattern;\n\t            var flags = token.flags;\n\t            t.regex = { pattern: pattern, flags: flags };\n\t        }\n\t        return t;\n\t    };\n\t    Parser.prototype.nextToken = function () {\n\t        var token = this.lookahead;\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        this.collectComments();\n\t        if (this.scanner.index !== this.startMarker.index) {\n\t            this.startMarker.index = this.scanner.index;\n\t            this.startMarker.line = this.scanner.lineNumber;\n\t            this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        }\n\t        var next = this.scanner.lex();\n\t        this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t        if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t            if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t                next.type = 4 /* Keyword */;\n\t            }\n\t        }\n\t        this.lookahead = next;\n\t        if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t            this.tokens.push(this.convertToken(next));\n\t        }\n\t        return token;\n\t    };\n\t    Parser.prototype.nextRegexToken = function () {\n\t        this.collectComments();\n\t        var token = this.scanner.scanRegExp();\n\t        if (this.config.tokens) {\n\t            // Pop the previous token, '/' or '/='\n\t            // This is added from the lookahead token.\n\t            this.tokens.pop();\n\t            this.tokens.push(this.convertToken(token));\n\t        }\n\t        // Prime the next lookahead.\n\t        this.lookahead = token;\n\t        this.nextToken();\n\t        return token;\n\t    };\n\t    Parser.prototype.createNode = function () {\n\t        return {\n\t            index: this.startMarker.index,\n\t            line: this.startMarker.line,\n\t            column: this.startMarker.column\n\t        };\n\t    };\n\t    Parser.prototype.startNode = function (token, lastLineStart) {\n\t        if (lastLineStart === void 0) { lastLineStart = 0; }\n\t        var column = token.start - token.lineStart;\n\t        var line = token.lineNumber;\n\t        if (column < 0) {\n\t            column += lastLineStart;\n\t            line--;\n\t        }\n\t        return {\n\t            index: token.start,\n\t            line: line,\n\t            column: column\n\t        };\n\t    };\n\t    Parser.prototype.finalize = function (marker, node) {\n\t        if (this.config.range) {\n\t            node.range = [marker.index, this.lastMarker.index];\n\t        }\n\t        if (this.config.loc) {\n\t            node.loc = {\n\t                start: {\n\t                    line: marker.line,\n\t                    column: marker.column,\n\t                },\n\t                end: {\n\t                    line: this.lastMarker.line,\n\t                    column: this.lastMarker.column\n\t                }\n\t            };\n\t            if (this.config.source) {\n\t                node.loc.source = this.config.source;\n\t            }\n\t        }\n\t        if (this.delegate) {\n\t            var metadata = {\n\t                start: {\n\t                    line: marker.line,\n\t                    column: marker.column,\n\t                    offset: marker.index\n\t                },\n\t                end: {\n\t                    line: this.lastMarker.line,\n\t                    column: this.lastMarker.column,\n\t                    offset: this.lastMarker.index\n\t                }\n\t            };\n\t            this.delegate(node, metadata);\n\t        }\n\t        return node;\n\t    };\n\t    // Expect the next token to match the specified punctuator.\n\t    // If not, an exception will be thrown.\n\t    Parser.prototype.expect = function (value) {\n\t        var token = this.nextToken();\n\t        if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t    };\n\t    // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t    Parser.prototype.expectCommaSeparator = function () {\n\t        if (this.config.tolerant) {\n\t            var token = this.lookahead;\n\t            if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t                this.nextToken();\n\t            }\n\t            else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t                this.nextToken();\n\t                this.tolerateUnexpectedToken(token);\n\t            }\n\t            else {\n\t                this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t            }\n\t        }\n\t        else {\n\t            this.expect(',');\n\t        }\n\t    };\n\t    // Expect the next token to match the specified keyword.\n\t    // If not, an exception will be thrown.\n\t    Parser.prototype.expectKeyword = function (keyword) {\n\t        var token = this.nextToken();\n\t        if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t    };\n\t    // Return true if the next token matches the specified punctuator.\n\t    Parser.prototype.match = function (value) {\n\t        return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t    };\n\t    // Return true if the next token matches the specified keyword\n\t    Parser.prototype.matchKeyword = function (keyword) {\n\t        return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t    };\n\t    // Return true if the next token matches the specified contextual keyword\n\t    // (where an identifier is sometimes a keyword depending on the context)\n\t    Parser.prototype.matchContextualKeyword = function (keyword) {\n\t        return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t    };\n\t    // Return true if the next token is an assignment operator\n\t    Parser.prototype.matchAssign = function () {\n\t        if (this.lookahead.type !== 7 /* Punctuator */) {\n\t            return false;\n\t        }\n\t        var op = this.lookahead.value;\n\t        return op === '=' ||\n\t            op === '*=' ||\n\t            op === '**=' ||\n\t            op === '/=' ||\n\t            op === '%=' ||\n\t            op === '+=' ||\n\t            op === '-=' ||\n\t            op === '<<=' ||\n\t            op === '>>=' ||\n\t            op === '>>>=' ||\n\t            op === '&=' ||\n\t            op === '^=' ||\n\t            op === '|=';\n\t    };\n\t    // Cover grammar support.\n\t    //\n\t    // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t    // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t    // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t    //\n\t    // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t    // after the outermost pair is closed. They are:\n\t    //\n\t    //   1. AssignmentExpression\n\t    //   2. BindingElements\n\t    //   3. AssignmentTargets\n\t    //\n\t    // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t    // binding element or assignment target.\n\t    //\n\t    // The three productions have the relationship:\n\t    //\n\t    //   BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t    //\n\t    // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t    // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t    // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t    //\n\t    // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t    // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t    // the CoverInitializedName check is conducted.\n\t    //\n\t    // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t    // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t    // pattern. The CoverInitializedName check is deferred.\n\t    Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t        var previousIsBindingElement = this.context.isBindingElement;\n\t        var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t        this.context.isBindingElement = true;\n\t        this.context.isAssignmentTarget = true;\n\t        this.context.firstCoverInitializedNameError = null;\n\t        var result = parseFunction.call(this);\n\t        if (this.context.firstCoverInitializedNameError !== null) {\n\t            this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t        }\n\t        this.context.isBindingElement = previousIsBindingElement;\n\t        this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t        return result;\n\t    };\n\t    Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t        var previousIsBindingElement = this.context.isBindingElement;\n\t        var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t        this.context.isBindingElement = true;\n\t        this.context.isAssignmentTarget = true;\n\t        this.context.firstCoverInitializedNameError = null;\n\t        var result = parseFunction.call(this);\n\t        this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t        this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t        return result;\n\t    };\n\t    Parser.prototype.consumeSemicolon = function () {\n\t        if (this.match(';')) {\n\t            this.nextToken();\n\t        }\n\t        else if (!this.hasLineTerminator) {\n\t            if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            this.lastMarker.index = this.startMarker.index;\n\t            this.lastMarker.line = this.startMarker.line;\n\t            this.lastMarker.column = this.startMarker.column;\n\t        }\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-primary-expression\n\t    Parser.prototype.parsePrimaryExpression = function () {\n\t        var node = this.createNode();\n\t        var expr;\n\t        var token, raw;\n\t        switch (this.lookahead.type) {\n\t            case 3 /* Identifier */:\n\t                if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t                    this.tolerateUnexpectedToken(this.lookahead);\n\t                }\n\t                expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t                break;\n\t            case 6 /* NumericLiteral */:\n\t            case 8 /* StringLiteral */:\n\t                if (this.context.strict && this.lookahead.octal) {\n\t                    this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t                }\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                token = this.nextToken();\n\t                raw = this.getTokenRaw(token);\n\t                expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t                break;\n\t            case 1 /* BooleanLiteral */:\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                token = this.nextToken();\n\t                raw = this.getTokenRaw(token);\n\t                expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t                break;\n\t            case 5 /* NullLiteral */:\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                token = this.nextToken();\n\t                raw = this.getTokenRaw(token);\n\t                expr = this.finalize(node, new Node.Literal(null, raw));\n\t                break;\n\t            case 10 /* Template */:\n\t                expr = this.parseTemplateLiteral();\n\t                break;\n\t            case 7 /* Punctuator */:\n\t                switch (this.lookahead.value) {\n\t                    case '(':\n\t                        this.context.isBindingElement = false;\n\t                        expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t                        break;\n\t                    case '[':\n\t                        expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t                        break;\n\t                    case '{':\n\t                        expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t                        break;\n\t                    case '/':\n\t                    case '/=':\n\t                        this.context.isAssignmentTarget = false;\n\t                        this.context.isBindingElement = false;\n\t                        this.scanner.index = this.startMarker.index;\n\t                        token = this.nextRegexToken();\n\t                        raw = this.getTokenRaw(token);\n\t                        expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t                        break;\n\t                    default:\n\t                        expr = this.throwUnexpectedToken(this.nextToken());\n\t                }\n\t                break;\n\t            case 4 /* Keyword */:\n\t                if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t                    expr = this.parseIdentifierName();\n\t                }\n\t                else if (!this.context.strict && this.matchKeyword('let')) {\n\t                    expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t                }\n\t                else {\n\t                    this.context.isAssignmentTarget = false;\n\t                    this.context.isBindingElement = false;\n\t                    if (this.matchKeyword('function')) {\n\t                        expr = this.parseFunctionExpression();\n\t                    }\n\t                    else if (this.matchKeyword('this')) {\n\t                        this.nextToken();\n\t                        expr = this.finalize(node, new Node.ThisExpression());\n\t                    }\n\t                    else if (this.matchKeyword('class')) {\n\t                        expr = this.parseClassExpression();\n\t                    }\n\t                    else {\n\t                        expr = this.throwUnexpectedToken(this.nextToken());\n\t                    }\n\t                }\n\t                break;\n\t            default:\n\t                expr = this.throwUnexpectedToken(this.nextToken());\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-array-initializer\n\t    Parser.prototype.parseSpreadElement = function () {\n\t        var node = this.createNode();\n\t        this.expect('...');\n\t        var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t        return this.finalize(node, new Node.SpreadElement(arg));\n\t    };\n\t    Parser.prototype.parseArrayInitializer = function () {\n\t        var node = this.createNode();\n\t        var elements = [];\n\t        this.expect('[');\n\t        while (!this.match(']')) {\n\t            if (this.match(',')) {\n\t                this.nextToken();\n\t                elements.push(null);\n\t            }\n\t            else if (this.match('...')) {\n\t                var element = this.parseSpreadElement();\n\t                if (!this.match(']')) {\n\t                    this.context.isAssignmentTarget = false;\n\t                    this.context.isBindingElement = false;\n\t                    this.expect(',');\n\t                }\n\t                elements.push(element);\n\t            }\n\t            else {\n\t                elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t                if (!this.match(']')) {\n\t                    this.expect(',');\n\t                }\n\t            }\n\t        }\n\t        this.expect(']');\n\t        return this.finalize(node, new Node.ArrayExpression(elements));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-object-initializer\n\t    Parser.prototype.parsePropertyMethod = function (params) {\n\t        this.context.isAssignmentTarget = false;\n\t        this.context.isBindingElement = false;\n\t        var previousStrict = this.context.strict;\n\t        var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t        this.context.allowStrictDirective = params.simple;\n\t        var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t        if (this.context.strict && params.firstRestricted) {\n\t            this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t        }\n\t        if (this.context.strict && params.stricted) {\n\t            this.tolerateUnexpectedToken(params.stricted, params.message);\n\t        }\n\t        this.context.strict = previousStrict;\n\t        this.context.allowStrictDirective = previousAllowStrictDirective;\n\t        return body;\n\t    };\n\t    Parser.prototype.parsePropertyMethodFunction = function () {\n\t        var isGenerator = false;\n\t        var node = this.createNode();\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = true;\n\t        var params = this.parseFormalParameters();\n\t        var method = this.parsePropertyMethod(params);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t    };\n\t    Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t        var node = this.createNode();\n\t        var previousAllowYield = this.context.allowYield;\n\t        var previousAwait = this.context.await;\n\t        this.context.allowYield = false;\n\t        this.context.await = true;\n\t        var params = this.parseFormalParameters();\n\t        var method = this.parsePropertyMethod(params);\n\t        this.context.allowYield = previousAllowYield;\n\t        this.context.await = previousAwait;\n\t        return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t    };\n\t    Parser.prototype.parseObjectPropertyKey = function () {\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        var key;\n\t        switch (token.type) {\n\t            case 8 /* StringLiteral */:\n\t            case 6 /* NumericLiteral */:\n\t                if (this.context.strict && token.octal) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t                }\n\t                var raw = this.getTokenRaw(token);\n\t                key = this.finalize(node, new Node.Literal(token.value, raw));\n\t                break;\n\t            case 3 /* Identifier */:\n\t            case 1 /* BooleanLiteral */:\n\t            case 5 /* NullLiteral */:\n\t            case 4 /* Keyword */:\n\t                key = this.finalize(node, new Node.Identifier(token.value));\n\t                break;\n\t            case 7 /* Punctuator */:\n\t                if (token.value === '[') {\n\t                    key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    this.expect(']');\n\t                }\n\t                else {\n\t                    key = this.throwUnexpectedToken(token);\n\t                }\n\t                break;\n\t            default:\n\t                key = this.throwUnexpectedToken(token);\n\t        }\n\t        return key;\n\t    };\n\t    Parser.prototype.isPropertyKey = function (key, value) {\n\t        return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t            (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t    };\n\t    Parser.prototype.parseObjectProperty = function (hasProto) {\n\t        var node = this.createNode();\n\t        var token = this.lookahead;\n\t        var kind;\n\t        var key = null;\n\t        var value = null;\n\t        var computed = false;\n\t        var method = false;\n\t        var shorthand = false;\n\t        var isAsync = false;\n\t        if (token.type === 3 /* Identifier */) {\n\t            var id = token.value;\n\t            this.nextToken();\n\t            computed = this.match('[');\n\t            isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t                !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t            key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t        }\n\t        else if (this.match('*')) {\n\t            this.nextToken();\n\t        }\n\t        else {\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t        }\n\t        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t        if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t            kind = 'get';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            this.context.allowYield = false;\n\t            value = this.parseGetterMethod();\n\t        }\n\t        else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t            kind = 'set';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            value = this.parseSetterMethod();\n\t        }\n\t        else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t            kind = 'init';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            value = this.parseGeneratorMethod();\n\t            method = true;\n\t        }\n\t        else {\n\t            if (!key) {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            kind = 'init';\n\t            if (this.match(':') && !isAsync) {\n\t                if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t                    if (hasProto.value) {\n\t                        this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t                    }\n\t                    hasProto.value = true;\n\t                }\n\t                this.nextToken();\n\t                value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t            }\n\t            else if (this.match('(')) {\n\t                value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t                method = true;\n\t            }\n\t            else if (token.type === 3 /* Identifier */) {\n\t                var id = this.finalize(node, new Node.Identifier(token.value));\n\t                if (this.match('=')) {\n\t                    this.context.firstCoverInitializedNameError = this.lookahead;\n\t                    this.nextToken();\n\t                    shorthand = true;\n\t                    var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t                }\n\t                else {\n\t                    shorthand = true;\n\t                    value = id;\n\t                }\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.nextToken());\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t    };\n\t    Parser.prototype.parseObjectInitializer = function () {\n\t        var node = this.createNode();\n\t        this.expect('{');\n\t        var properties = [];\n\t        var hasProto = { value: false };\n\t        while (!this.match('}')) {\n\t            properties.push(this.parseObjectProperty(hasProto));\n\t            if (!this.match('}')) {\n\t                this.expectCommaSeparator();\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return this.finalize(node, new Node.ObjectExpression(properties));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-template-literals\n\t    Parser.prototype.parseTemplateHead = function () {\n\t        assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        var raw = token.value;\n\t        var cooked = token.cooked;\n\t        return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t    };\n\t    Parser.prototype.parseTemplateElement = function () {\n\t        if (this.lookahead.type !== 10 /* Template */) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        var raw = token.value;\n\t        var cooked = token.cooked;\n\t        return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t    };\n\t    Parser.prototype.parseTemplateLiteral = function () {\n\t        var node = this.createNode();\n\t        var expressions = [];\n\t        var quasis = [];\n\t        var quasi = this.parseTemplateHead();\n\t        quasis.push(quasi);\n\t        while (!quasi.tail) {\n\t            expressions.push(this.parseExpression());\n\t            quasi = this.parseTemplateElement();\n\t            quasis.push(quasi);\n\t        }\n\t        return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t    Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t        switch (expr.type) {\n\t            case syntax_1.Syntax.Identifier:\n\t            case syntax_1.Syntax.MemberExpression:\n\t            case syntax_1.Syntax.RestElement:\n\t            case syntax_1.Syntax.AssignmentPattern:\n\t                break;\n\t            case syntax_1.Syntax.SpreadElement:\n\t                expr.type = syntax_1.Syntax.RestElement;\n\t                this.reinterpretExpressionAsPattern(expr.argument);\n\t                break;\n\t            case syntax_1.Syntax.ArrayExpression:\n\t                expr.type = syntax_1.Syntax.ArrayPattern;\n\t                for (var i = 0; i < expr.elements.length; i++) {\n\t                    if (expr.elements[i] !== null) {\n\t                        this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t                    }\n\t                }\n\t                break;\n\t            case syntax_1.Syntax.ObjectExpression:\n\t                expr.type = syntax_1.Syntax.ObjectPattern;\n\t                for (var i = 0; i < expr.properties.length; i++) {\n\t                    this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t                }\n\t                break;\n\t            case syntax_1.Syntax.AssignmentExpression:\n\t                expr.type = syntax_1.Syntax.AssignmentPattern;\n\t                delete expr.operator;\n\t                this.reinterpretExpressionAsPattern(expr.left);\n\t                break;\n\t            default:\n\t                // Allow other node type for tolerant parsing.\n\t                break;\n\t        }\n\t    };\n\t    Parser.prototype.parseGroupExpression = function () {\n\t        var expr;\n\t        this.expect('(');\n\t        if (this.match(')')) {\n\t            this.nextToken();\n\t            if (!this.match('=>')) {\n\t                this.expect('=>');\n\t            }\n\t            expr = {\n\t                type: ArrowParameterPlaceHolder,\n\t                params: [],\n\t                async: false\n\t            };\n\t        }\n\t        else {\n\t            var startToken = this.lookahead;\n\t            var params = [];\n\t            if (this.match('...')) {\n\t                expr = this.parseRestElement(params);\n\t                this.expect(')');\n\t                if (!this.match('=>')) {\n\t                    this.expect('=>');\n\t                }\n\t                expr = {\n\t                    type: ArrowParameterPlaceHolder,\n\t                    params: [expr],\n\t                    async: false\n\t                };\n\t            }\n\t            else {\n\t                var arrow = false;\n\t                this.context.isBindingElement = true;\n\t                expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t                if (this.match(',')) {\n\t                    var expressions = [];\n\t                    this.context.isAssignmentTarget = false;\n\t                    expressions.push(expr);\n\t                    while (this.lookahead.type !== 2 /* EOF */) {\n\t                        if (!this.match(',')) {\n\t                            break;\n\t                        }\n\t                        this.nextToken();\n\t                        if (this.match(')')) {\n\t                            this.nextToken();\n\t                            for (var i = 0; i < expressions.length; i++) {\n\t                                this.reinterpretExpressionAsPattern(expressions[i]);\n\t                            }\n\t                            arrow = true;\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: expressions,\n\t                                async: false\n\t                            };\n\t                        }\n\t                        else if (this.match('...')) {\n\t                            if (!this.context.isBindingElement) {\n\t                                this.throwUnexpectedToken(this.lookahead);\n\t                            }\n\t                            expressions.push(this.parseRestElement(params));\n\t                            this.expect(')');\n\t                            if (!this.match('=>')) {\n\t                                this.expect('=>');\n\t                            }\n\t                            this.context.isBindingElement = false;\n\t                            for (var i = 0; i < expressions.length; i++) {\n\t                                this.reinterpretExpressionAsPattern(expressions[i]);\n\t                            }\n\t                            arrow = true;\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: expressions,\n\t                                async: false\n\t                            };\n\t                        }\n\t                        else {\n\t                            expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t                        }\n\t                        if (arrow) {\n\t                            break;\n\t                        }\n\t                    }\n\t                    if (!arrow) {\n\t                        expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t                    }\n\t                }\n\t                if (!arrow) {\n\t                    this.expect(')');\n\t                    if (this.match('=>')) {\n\t                        if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t                            arrow = true;\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: [expr],\n\t                                async: false\n\t                            };\n\t                        }\n\t                        if (!arrow) {\n\t                            if (!this.context.isBindingElement) {\n\t                                this.throwUnexpectedToken(this.lookahead);\n\t                            }\n\t                            if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t                                for (var i = 0; i < expr.expressions.length; i++) {\n\t                                    this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t                                }\n\t                            }\n\t                            else {\n\t                                this.reinterpretExpressionAsPattern(expr);\n\t                            }\n\t                            var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: parameters,\n\t                                async: false\n\t                            };\n\t                        }\n\t                    }\n\t                    this.context.isBindingElement = false;\n\t                }\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t    Parser.prototype.parseArguments = function () {\n\t        this.expect('(');\n\t        var args = [];\n\t        if (!this.match(')')) {\n\t            while (true) {\n\t                var expr = this.match('...') ? this.parseSpreadElement() :\n\t                    this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                args.push(expr);\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t                this.expectCommaSeparator();\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        this.expect(')');\n\t        return args;\n\t    };\n\t    Parser.prototype.isIdentifierName = function (token) {\n\t        return token.type === 3 /* Identifier */ ||\n\t            token.type === 4 /* Keyword */ ||\n\t            token.type === 1 /* BooleanLiteral */ ||\n\t            token.type === 5 /* NullLiteral */;\n\t    };\n\t    Parser.prototype.parseIdentifierName = function () {\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        if (!this.isIdentifierName(token)) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t        return this.finalize(node, new Node.Identifier(token.value));\n\t    };\n\t    Parser.prototype.parseNewExpression = function () {\n\t        var node = this.createNode();\n\t        var id = this.parseIdentifierName();\n\t        assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t        var expr;\n\t        if (this.match('.')) {\n\t            this.nextToken();\n\t            if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t                var property = this.parseIdentifierName();\n\t                expr = new Node.MetaProperty(id, property);\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t        }\n\t        else {\n\t            var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t            var args = this.match('(') ? this.parseArguments() : [];\n\t            expr = new Node.NewExpression(callee, args);\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        return this.finalize(node, expr);\n\t    };\n\t    Parser.prototype.parseAsyncArgument = function () {\n\t        var arg = this.parseAssignmentExpression();\n\t        this.context.firstCoverInitializedNameError = null;\n\t        return arg;\n\t    };\n\t    Parser.prototype.parseAsyncArguments = function () {\n\t        this.expect('(');\n\t        var args = [];\n\t        if (!this.match(')')) {\n\t            while (true) {\n\t                var expr = this.match('...') ? this.parseSpreadElement() :\n\t                    this.isolateCoverGrammar(this.parseAsyncArgument);\n\t                args.push(expr);\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t                this.expectCommaSeparator();\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        this.expect(')');\n\t        return args;\n\t    };\n\t    Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t        var startToken = this.lookahead;\n\t        var maybeAsync = this.matchContextualKeyword('async');\n\t        var previousAllowIn = this.context.allowIn;\n\t        this.context.allowIn = true;\n\t        var expr;\n\t        if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t            expr = this.createNode();\n\t            this.nextToken();\n\t            expr = this.finalize(expr, new Node.Super());\n\t            if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t        }\n\t        else {\n\t            expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t        }\n\t        while (true) {\n\t            if (this.match('.')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('.');\n\t                var property = this.parseIdentifierName();\n\t                expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t            }\n\t            else if (this.match('(')) {\n\t                var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = false;\n\t                var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t                expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t                if (asyncArrow && this.match('=>')) {\n\t                    for (var i = 0; i < args.length; ++i) {\n\t                        this.reinterpretExpressionAsPattern(args[i]);\n\t                    }\n\t                    expr = {\n\t                        type: ArrowParameterPlaceHolder,\n\t                        params: args,\n\t                        async: true\n\t                    };\n\t                }\n\t            }\n\t            else if (this.match('[')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('[');\n\t                var property = this.isolateCoverGrammar(this.parseExpression);\n\t                this.expect(']');\n\t                expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t            }\n\t            else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t                var quasi = this.parseTemplateLiteral();\n\t                expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        this.context.allowIn = previousAllowIn;\n\t        return expr;\n\t    };\n\t    Parser.prototype.parseSuper = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('super');\n\t        if (!this.match('[') && !this.match('.')) {\n\t            this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        return this.finalize(node, new Node.Super());\n\t    };\n\t    Parser.prototype.parseLeftHandSideExpression = function () {\n\t        assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t        var node = this.startNode(this.lookahead);\n\t        var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t            this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t        while (true) {\n\t            if (this.match('[')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('[');\n\t                var property = this.isolateCoverGrammar(this.parseExpression);\n\t                this.expect(']');\n\t                expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t            }\n\t            else if (this.match('.')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('.');\n\t                var property = this.parseIdentifierName();\n\t                expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t            }\n\t            else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t                var quasi = this.parseTemplateLiteral();\n\t                expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-update-expressions\n\t    Parser.prototype.parseUpdateExpression = function () {\n\t        var expr;\n\t        var startToken = this.lookahead;\n\t        if (this.match('++') || this.match('--')) {\n\t            var node = this.startNode(startToken);\n\t            var token = this.nextToken();\n\t            expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t            if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t            }\n\t            if (!this.context.isAssignmentTarget) {\n\t                this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t            }\n\t            var prefix = true;\n\t            expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        else {\n\t            expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t            if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t                if (this.match('++') || this.match('--')) {\n\t                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t                        this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t                    }\n\t                    if (!this.context.isAssignmentTarget) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t                    }\n\t                    this.context.isAssignmentTarget = false;\n\t                    this.context.isBindingElement = false;\n\t                    var operator = this.nextToken().value;\n\t                    var prefix = false;\n\t                    expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t                }\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-unary-operators\n\t    Parser.prototype.parseAwaitExpression = function () {\n\t        var node = this.createNode();\n\t        this.nextToken();\n\t        var argument = this.parseUnaryExpression();\n\t        return this.finalize(node, new Node.AwaitExpression(argument));\n\t    };\n\t    Parser.prototype.parseUnaryExpression = function () {\n\t        var expr;\n\t        if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t            this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t            var node = this.startNode(this.lookahead);\n\t            var token = this.nextToken();\n\t            expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t            expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t            if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t                this.tolerateError(messages_1.Messages.StrictDelete);\n\t            }\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        else if (this.context.await && this.matchContextualKeyword('await')) {\n\t            expr = this.parseAwaitExpression();\n\t        }\n\t        else {\n\t            expr = this.parseUpdateExpression();\n\t        }\n\t        return expr;\n\t    };\n\t    Parser.prototype.parseExponentiationExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t        if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t            this.nextToken();\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t            var left = expr;\n\t            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t            expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-exp-operator\n\t    // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t    // https://tc39.github.io/ecma262/#sec-additive-operators\n\t    // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t    // https://tc39.github.io/ecma262/#sec-relational-operators\n\t    // https://tc39.github.io/ecma262/#sec-equality-operators\n\t    // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t    // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t    Parser.prototype.binaryPrecedence = function (token) {\n\t        var op = token.value;\n\t        var precedence;\n\t        if (token.type === 7 /* Punctuator */) {\n\t            precedence = this.operatorPrecedence[op] || 0;\n\t        }\n\t        else if (token.type === 4 /* Keyword */) {\n\t            precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t        }\n\t        else {\n\t            precedence = 0;\n\t        }\n\t        return precedence;\n\t    };\n\t    Parser.prototype.parseBinaryExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t        var token = this.lookahead;\n\t        var prec = this.binaryPrecedence(token);\n\t        if (prec > 0) {\n\t            this.nextToken();\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t            var markers = [startToken, this.lookahead];\n\t            var left = expr;\n\t            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t            var stack = [left, token.value, right];\n\t            var precedences = [prec];\n\t            while (true) {\n\t                prec = this.binaryPrecedence(this.lookahead);\n\t                if (prec <= 0) {\n\t                    break;\n\t                }\n\t                // Reduce: make a binary expression from the three topmost entries.\n\t                while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t                    right = stack.pop();\n\t                    var operator = stack.pop();\n\t                    precedences.pop();\n\t                    left = stack.pop();\n\t                    markers.pop();\n\t                    var node = this.startNode(markers[markers.length - 1]);\n\t                    stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t                }\n\t                // Shift.\n\t                stack.push(this.nextToken().value);\n\t                precedences.push(prec);\n\t                markers.push(this.lookahead);\n\t                stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t            }\n\t            // Final reduce to clean-up the stack.\n\t            var i = stack.length - 1;\n\t            expr = stack[i];\n\t            var lastMarker = markers.pop();\n\t            while (i > 1) {\n\t                var marker = markers.pop();\n\t                var lastLineStart = lastMarker && lastMarker.lineStart;\n\t                var node = this.startNode(marker, lastLineStart);\n\t                var operator = stack[i - 1];\n\t                expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t                i -= 2;\n\t                lastMarker = marker;\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t    Parser.prototype.parseConditionalExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t        if (this.match('?')) {\n\t            this.nextToken();\n\t            var previousAllowIn = this.context.allowIn;\n\t            this.context.allowIn = true;\n\t            var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t            this.context.allowIn = previousAllowIn;\n\t            this.expect(':');\n\t            var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t            expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t    Parser.prototype.checkPatternParam = function (options, param) {\n\t        switch (param.type) {\n\t            case syntax_1.Syntax.Identifier:\n\t                this.validateParam(options, param, param.name);\n\t                break;\n\t            case syntax_1.Syntax.RestElement:\n\t                this.checkPatternParam(options, param.argument);\n\t                break;\n\t            case syntax_1.Syntax.AssignmentPattern:\n\t                this.checkPatternParam(options, param.left);\n\t                break;\n\t            case syntax_1.Syntax.ArrayPattern:\n\t                for (var i = 0; i < param.elements.length; i++) {\n\t                    if (param.elements[i] !== null) {\n\t                        this.checkPatternParam(options, param.elements[i]);\n\t                    }\n\t                }\n\t                break;\n\t            case syntax_1.Syntax.ObjectPattern:\n\t                for (var i = 0; i < param.properties.length; i++) {\n\t                    this.checkPatternParam(options, param.properties[i].value);\n\t                }\n\t                break;\n\t            default:\n\t                break;\n\t        }\n\t        options.simple = options.simple && (param instanceof Node.Identifier);\n\t    };\n\t    Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t        var params = [expr];\n\t        var options;\n\t        var asyncArrow = false;\n\t        switch (expr.type) {\n\t            case syntax_1.Syntax.Identifier:\n\t                break;\n\t            case ArrowParameterPlaceHolder:\n\t                params = expr.params;\n\t                asyncArrow = expr.async;\n\t                break;\n\t            default:\n\t                return null;\n\t        }\n\t        options = {\n\t            simple: true,\n\t            paramSet: {}\n\t        };\n\t        for (var i = 0; i < params.length; ++i) {\n\t            var param = params[i];\n\t            if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t                if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t                    if (param.right.argument) {\n\t                        this.throwUnexpectedToken(this.lookahead);\n\t                    }\n\t                    param.right.type = syntax_1.Syntax.Identifier;\n\t                    param.right.name = 'yield';\n\t                    delete param.right.argument;\n\t                    delete param.right.delegate;\n\t                }\n\t            }\n\t            else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            this.checkPatternParam(options, param);\n\t            params[i] = param;\n\t        }\n\t        if (this.context.strict || !this.context.allowYield) {\n\t            for (var i = 0; i < params.length; ++i) {\n\t                var param = params[i];\n\t                if (param.type === syntax_1.Syntax.YieldExpression) {\n\t                    this.throwUnexpectedToken(this.lookahead);\n\t                }\n\t            }\n\t        }\n\t        if (options.message === messages_1.Messages.StrictParamDupe) {\n\t            var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t            this.throwUnexpectedToken(token, options.message);\n\t        }\n\t        return {\n\t            simple: options.simple,\n\t            params: params,\n\t            stricted: options.stricted,\n\t            firstRestricted: options.firstRestricted,\n\t            message: options.message\n\t        };\n\t    };\n\t    Parser.prototype.parseAssignmentExpression = function () {\n\t        var expr;\n\t        if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t            expr = this.parseYieldExpression();\n\t        }\n\t        else {\n\t            var startToken = this.lookahead;\n\t            var token = startToken;\n\t            expr = this.parseConditionalExpression();\n\t            if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t                if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t                    var arg = this.parsePrimaryExpression();\n\t                    this.reinterpretExpressionAsPattern(arg);\n\t                    expr = {\n\t                        type: ArrowParameterPlaceHolder,\n\t                        params: [arg],\n\t                        async: true\n\t                    };\n\t                }\n\t            }\n\t            if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t                // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                var isAsync = expr.async;\n\t                var list = this.reinterpretAsCoverFormalsList(expr);\n\t                if (list) {\n\t                    if (this.hasLineTerminator) {\n\t                        this.tolerateUnexpectedToken(this.lookahead);\n\t                    }\n\t                    this.context.firstCoverInitializedNameError = null;\n\t                    var previousStrict = this.context.strict;\n\t                    var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t                    this.context.allowStrictDirective = list.simple;\n\t                    var previousAllowYield = this.context.allowYield;\n\t                    var previousAwait = this.context.await;\n\t                    this.context.allowYield = true;\n\t                    this.context.await = isAsync;\n\t                    var node = this.startNode(startToken);\n\t                    this.expect('=>');\n\t                    var body = void 0;\n\t                    if (this.match('{')) {\n\t                        var previousAllowIn = this.context.allowIn;\n\t                        this.context.allowIn = true;\n\t                        body = this.parseFunctionSourceElements();\n\t                        this.context.allowIn = previousAllowIn;\n\t                    }\n\t                    else {\n\t                        body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    }\n\t                    var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t                    if (this.context.strict && list.firstRestricted) {\n\t                        this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t                    }\n\t                    if (this.context.strict && list.stricted) {\n\t                        this.tolerateUnexpectedToken(list.stricted, list.message);\n\t                    }\n\t                    expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t                        this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t                    this.context.strict = previousStrict;\n\t                    this.context.allowStrictDirective = previousAllowStrictDirective;\n\t                    this.context.allowYield = previousAllowYield;\n\t                    this.context.await = previousAwait;\n\t                }\n\t            }\n\t            else {\n\t                if (this.matchAssign()) {\n\t                    if (!this.context.isAssignmentTarget) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t                    }\n\t                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t                        var id = expr;\n\t                        if (this.scanner.isRestrictedWord(id.name)) {\n\t                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t                        }\n\t                        if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t                        }\n\t                    }\n\t                    if (!this.match('=')) {\n\t                        this.context.isAssignmentTarget = false;\n\t                        this.context.isBindingElement = false;\n\t                    }\n\t                    else {\n\t                        this.reinterpretExpressionAsPattern(expr);\n\t                    }\n\t                    token = this.nextToken();\n\t                    var operator = token.value;\n\t                    var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t                    this.context.firstCoverInitializedNameError = null;\n\t                }\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-comma-operator\n\t    Parser.prototype.parseExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t        if (this.match(',')) {\n\t            var expressions = [];\n\t            expressions.push(expr);\n\t            while (this.lookahead.type !== 2 /* EOF */) {\n\t                if (!this.match(',')) {\n\t                    break;\n\t                }\n\t                this.nextToken();\n\t                expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t            }\n\t            expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-block\n\t    Parser.prototype.parseStatementListItem = function () {\n\t        var statement;\n\t        this.context.isAssignmentTarget = true;\n\t        this.context.isBindingElement = true;\n\t        if (this.lookahead.type === 4 /* Keyword */) {\n\t            switch (this.lookahead.value) {\n\t                case 'export':\n\t                    if (!this.context.isModule) {\n\t                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t                    }\n\t                    statement = this.parseExportDeclaration();\n\t                    break;\n\t                case 'import':\n\t                    if (!this.context.isModule) {\n\t                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t                    }\n\t                    statement = this.parseImportDeclaration();\n\t                    break;\n\t                case 'const':\n\t                    statement = this.parseLexicalDeclaration({ inFor: false });\n\t                    break;\n\t                case 'function':\n\t                    statement = this.parseFunctionDeclaration();\n\t                    break;\n\t                case 'class':\n\t                    statement = this.parseClassDeclaration();\n\t                    break;\n\t                case 'let':\n\t                    statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t                    break;\n\t                default:\n\t                    statement = this.parseStatement();\n\t                    break;\n\t            }\n\t        }\n\t        else {\n\t            statement = this.parseStatement();\n\t        }\n\t        return statement;\n\t    };\n\t    Parser.prototype.parseBlock = function () {\n\t        var node = this.createNode();\n\t        this.expect('{');\n\t        var block = [];\n\t        while (true) {\n\t            if (this.match('}')) {\n\t                break;\n\t            }\n\t            block.push(this.parseStatementListItem());\n\t        }\n\t        this.expect('}');\n\t        return this.finalize(node, new Node.BlockStatement(block));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t    Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t        var node = this.createNode();\n\t        var params = [];\n\t        var id = this.parsePattern(params, kind);\n\t        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t            if (this.scanner.isRestrictedWord(id.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictVarName);\n\t            }\n\t        }\n\t        var init = null;\n\t        if (kind === 'const') {\n\t            if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t                if (this.match('=')) {\n\t                    this.nextToken();\n\t                    init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                }\n\t                else {\n\t                    this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t                }\n\t            }\n\t        }\n\t        else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t            this.expect('=');\n\t            init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t        }\n\t        return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t    };\n\t    Parser.prototype.parseBindingList = function (kind, options) {\n\t        var list = [this.parseLexicalBinding(kind, options)];\n\t        while (this.match(',')) {\n\t            this.nextToken();\n\t            list.push(this.parseLexicalBinding(kind, options));\n\t        }\n\t        return list;\n\t    };\n\t    Parser.prototype.isLexicalDeclaration = function () {\n\t        var state = this.scanner.saveState();\n\t        this.scanner.scanComments();\n\t        var next = this.scanner.lex();\n\t        this.scanner.restoreState(state);\n\t        return (next.type === 3 /* Identifier */) ||\n\t            (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t            (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t            (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t            (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t    };\n\t    Parser.prototype.parseLexicalDeclaration = function (options) {\n\t        var node = this.createNode();\n\t        var kind = this.nextToken().value;\n\t        assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t        var declarations = this.parseBindingList(kind, options);\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t    Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t        var node = this.createNode();\n\t        this.expect('...');\n\t        var arg = this.parsePattern(params, kind);\n\t        return this.finalize(node, new Node.RestElement(arg));\n\t    };\n\t    Parser.prototype.parseArrayPattern = function (params, kind) {\n\t        var node = this.createNode();\n\t        this.expect('[');\n\t        var elements = [];\n\t        while (!this.match(']')) {\n\t            if (this.match(',')) {\n\t                this.nextToken();\n\t                elements.push(null);\n\t            }\n\t            else {\n\t                if (this.match('...')) {\n\t                    elements.push(this.parseBindingRestElement(params, kind));\n\t                    break;\n\t                }\n\t                else {\n\t                    elements.push(this.parsePatternWithDefault(params, kind));\n\t                }\n\t                if (!this.match(']')) {\n\t                    this.expect(',');\n\t                }\n\t            }\n\t        }\n\t        this.expect(']');\n\t        return this.finalize(node, new Node.ArrayPattern(elements));\n\t    };\n\t    Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t        var node = this.createNode();\n\t        var computed = false;\n\t        var shorthand = false;\n\t        var method = false;\n\t        var key;\n\t        var value;\n\t        if (this.lookahead.type === 3 /* Identifier */) {\n\t            var keyToken = this.lookahead;\n\t            key = this.parseVariableIdentifier();\n\t            var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t            if (this.match('=')) {\n\t                params.push(keyToken);\n\t                shorthand = true;\n\t                this.nextToken();\n\t                var expr = this.parseAssignmentExpression();\n\t                value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t            }\n\t            else if (!this.match(':')) {\n\t                params.push(keyToken);\n\t                shorthand = true;\n\t                value = init;\n\t            }\n\t            else {\n\t                this.expect(':');\n\t                value = this.parsePatternWithDefault(params, kind);\n\t            }\n\t        }\n\t        else {\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            this.expect(':');\n\t            value = this.parsePatternWithDefault(params, kind);\n\t        }\n\t        return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t    };\n\t    Parser.prototype.parseObjectPattern = function (params, kind) {\n\t        var node = this.createNode();\n\t        var properties = [];\n\t        this.expect('{');\n\t        while (!this.match('}')) {\n\t            properties.push(this.parsePropertyPattern(params, kind));\n\t            if (!this.match('}')) {\n\t                this.expect(',');\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return this.finalize(node, new Node.ObjectPattern(properties));\n\t    };\n\t    Parser.prototype.parsePattern = function (params, kind) {\n\t        var pattern;\n\t        if (this.match('[')) {\n\t            pattern = this.parseArrayPattern(params, kind);\n\t        }\n\t        else if (this.match('{')) {\n\t            pattern = this.parseObjectPattern(params, kind);\n\t        }\n\t        else {\n\t            if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t                this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t            }\n\t            params.push(this.lookahead);\n\t            pattern = this.parseVariableIdentifier(kind);\n\t        }\n\t        return pattern;\n\t    };\n\t    Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t        var startToken = this.lookahead;\n\t        var pattern = this.parsePattern(params, kind);\n\t        if (this.match('=')) {\n\t            this.nextToken();\n\t            var previousAllowYield = this.context.allowYield;\n\t            this.context.allowYield = true;\n\t            var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t            this.context.allowYield = previousAllowYield;\n\t            pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t        }\n\t        return pattern;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-variable-statement\n\t    Parser.prototype.parseVariableIdentifier = function (kind) {\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t            if (this.context.strict) {\n\t                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t            }\n\t            else if (!this.context.allowYield) {\n\t                this.throwUnexpectedToken(token);\n\t            }\n\t        }\n\t        else if (token.type !== 3 /* Identifier */) {\n\t            if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t            }\n\t            else {\n\t                if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t                    this.throwUnexpectedToken(token);\n\t                }\n\t            }\n\t        }\n\t        else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t            this.tolerateUnexpectedToken(token);\n\t        }\n\t        return this.finalize(node, new Node.Identifier(token.value));\n\t    };\n\t    Parser.prototype.parseVariableDeclaration = function (options) {\n\t        var node = this.createNode();\n\t        var params = [];\n\t        var id = this.parsePattern(params, 'var');\n\t        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t            if (this.scanner.isRestrictedWord(id.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictVarName);\n\t            }\n\t        }\n\t        var init = null;\n\t        if (this.match('=')) {\n\t            this.nextToken();\n\t            init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t        }\n\t        else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t            this.expect('=');\n\t        }\n\t        return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t    };\n\t    Parser.prototype.parseVariableDeclarationList = function (options) {\n\t        var opt = { inFor: options.inFor };\n\t        var list = [];\n\t        list.push(this.parseVariableDeclaration(opt));\n\t        while (this.match(',')) {\n\t            this.nextToken();\n\t            list.push(this.parseVariableDeclaration(opt));\n\t        }\n\t        return list;\n\t    };\n\t    Parser.prototype.parseVariableStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('var');\n\t        var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-empty-statement\n\t    Parser.prototype.parseEmptyStatement = function () {\n\t        var node = this.createNode();\n\t        this.expect(';');\n\t        return this.finalize(node, new Node.EmptyStatement());\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-expression-statement\n\t    Parser.prototype.parseExpressionStatement = function () {\n\t        var node = this.createNode();\n\t        var expr = this.parseExpression();\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ExpressionStatement(expr));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-if-statement\n\t    Parser.prototype.parseIfClause = function () {\n\t        if (this.context.strict && this.matchKeyword('function')) {\n\t            this.tolerateError(messages_1.Messages.StrictFunction);\n\t        }\n\t        return this.parseStatement();\n\t    };\n\t    Parser.prototype.parseIfStatement = function () {\n\t        var node = this.createNode();\n\t        var consequent;\n\t        var alternate = null;\n\t        this.expectKeyword('if');\n\t        this.expect('(');\n\t        var test = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            consequent = this.parseIfClause();\n\t            if (this.matchKeyword('else')) {\n\t                this.nextToken();\n\t                alternate = this.parseIfClause();\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t    Parser.prototype.parseDoWhileStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('do');\n\t        var previousInIteration = this.context.inIteration;\n\t        this.context.inIteration = true;\n\t        var body = this.parseStatement();\n\t        this.context.inIteration = previousInIteration;\n\t        this.expectKeyword('while');\n\t        this.expect('(');\n\t        var test = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            if (this.match(';')) {\n\t                this.nextToken();\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-while-statement\n\t    Parser.prototype.parseWhileStatement = function () {\n\t        var node = this.createNode();\n\t        var body;\n\t        this.expectKeyword('while');\n\t        this.expect('(');\n\t        var test = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            var previousInIteration = this.context.inIteration;\n\t            this.context.inIteration = true;\n\t            body = this.parseStatement();\n\t            this.context.inIteration = previousInIteration;\n\t        }\n\t        return this.finalize(node, new Node.WhileStatement(test, body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-for-statement\n\t    // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t    Parser.prototype.parseForStatement = function () {\n\t        var init = null;\n\t        var test = null;\n\t        var update = null;\n\t        var forIn = true;\n\t        var left, right;\n\t        var node = this.createNode();\n\t        this.expectKeyword('for');\n\t        this.expect('(');\n\t        if (this.match(';')) {\n\t            this.nextToken();\n\t        }\n\t        else {\n\t            if (this.matchKeyword('var')) {\n\t                init = this.createNode();\n\t                this.nextToken();\n\t                var previousAllowIn = this.context.allowIn;\n\t                this.context.allowIn = false;\n\t                var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t                this.context.allowIn = previousAllowIn;\n\t                if (declarations.length === 1 && this.matchKeyword('in')) {\n\t                    var decl = declarations[0];\n\t                    if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t                        this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t                    }\n\t                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t                    this.nextToken();\n\t                    left = init;\n\t                    right = this.parseExpression();\n\t                    init = null;\n\t                }\n\t                else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t                    this.nextToken();\n\t                    left = init;\n\t                    right = this.parseAssignmentExpression();\n\t                    init = null;\n\t                    forIn = false;\n\t                }\n\t                else {\n\t                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t                    this.expect(';');\n\t                }\n\t            }\n\t            else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t                init = this.createNode();\n\t                var kind = this.nextToken().value;\n\t                if (!this.context.strict && this.lookahead.value === 'in') {\n\t                    init = this.finalize(init, new Node.Identifier(kind));\n\t                    this.nextToken();\n\t                    left = init;\n\t                    right = this.parseExpression();\n\t                    init = null;\n\t                }\n\t                else {\n\t                    var previousAllowIn = this.context.allowIn;\n\t                    this.context.allowIn = false;\n\t                    var declarations = this.parseBindingList(kind, { inFor: true });\n\t                    this.context.allowIn = previousAllowIn;\n\t                    if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t                        this.nextToken();\n\t                        left = init;\n\t                        right = this.parseExpression();\n\t                        init = null;\n\t                    }\n\t                    else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t                        this.nextToken();\n\t                        left = init;\n\t                        right = this.parseAssignmentExpression();\n\t                        init = null;\n\t                        forIn = false;\n\t                    }\n\t                    else {\n\t                        this.consumeSemicolon();\n\t                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t                    }\n\t                }\n\t            }\n\t            else {\n\t                var initStartToken = this.lookahead;\n\t                var previousAllowIn = this.context.allowIn;\n\t                this.context.allowIn = false;\n\t                init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t                this.context.allowIn = previousAllowIn;\n\t                if (this.matchKeyword('in')) {\n\t                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t                    }\n\t                    this.nextToken();\n\t                    this.reinterpretExpressionAsPattern(init);\n\t                    left = init;\n\t                    right = this.parseExpression();\n\t                    init = null;\n\t                }\n\t                else if (this.matchContextualKeyword('of')) {\n\t                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t                    }\n\t                    this.nextToken();\n\t                    this.reinterpretExpressionAsPattern(init);\n\t                    left = init;\n\t                    right = this.parseAssignmentExpression();\n\t                    init = null;\n\t                    forIn = false;\n\t                }\n\t                else {\n\t                    if (this.match(',')) {\n\t                        var initSeq = [init];\n\t                        while (this.match(',')) {\n\t                            this.nextToken();\n\t                            initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t                        }\n\t                        init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t                    }\n\t                    this.expect(';');\n\t                }\n\t            }\n\t        }\n\t        if (typeof left === 'undefined') {\n\t            if (!this.match(';')) {\n\t                test = this.parseExpression();\n\t            }\n\t            this.expect(';');\n\t            if (!this.match(')')) {\n\t                update = this.parseExpression();\n\t            }\n\t        }\n\t        var body;\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            var previousInIteration = this.context.inIteration;\n\t            this.context.inIteration = true;\n\t            body = this.isolateCoverGrammar(this.parseStatement);\n\t            this.context.inIteration = previousInIteration;\n\t        }\n\t        return (typeof left === 'undefined') ?\n\t            this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t            forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t                this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-continue-statement\n\t    Parser.prototype.parseContinueStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('continue');\n\t        var label = null;\n\t        if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t            var id = this.parseVariableIdentifier();\n\t            label = id;\n\t            var key = '$' + id.name;\n\t            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t                this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t            }\n\t        }\n\t        this.consumeSemicolon();\n\t        if (label === null && !this.context.inIteration) {\n\t            this.throwError(messages_1.Messages.IllegalContinue);\n\t        }\n\t        return this.finalize(node, new Node.ContinueStatement(label));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-break-statement\n\t    Parser.prototype.parseBreakStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('break');\n\t        var label = null;\n\t        if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t            var id = this.parseVariableIdentifier();\n\t            var key = '$' + id.name;\n\t            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t                this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t            }\n\t            label = id;\n\t        }\n\t        this.consumeSemicolon();\n\t        if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t            this.throwError(messages_1.Messages.IllegalBreak);\n\t        }\n\t        return this.finalize(node, new Node.BreakStatement(label));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-return-statement\n\t    Parser.prototype.parseReturnStatement = function () {\n\t        if (!this.context.inFunctionBody) {\n\t            this.tolerateError(messages_1.Messages.IllegalReturn);\n\t        }\n\t        var node = this.createNode();\n\t        this.expectKeyword('return');\n\t        var hasArgument = (!this.match(';') && !this.match('}') &&\n\t            !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t            this.lookahead.type === 8 /* StringLiteral */ ||\n\t            this.lookahead.type === 10 /* Template */;\n\t        var argument = hasArgument ? this.parseExpression() : null;\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ReturnStatement(argument));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-with-statement\n\t    Parser.prototype.parseWithStatement = function () {\n\t        if (this.context.strict) {\n\t            this.tolerateError(messages_1.Messages.StrictModeWith);\n\t        }\n\t        var node = this.createNode();\n\t        var body;\n\t        this.expectKeyword('with');\n\t        this.expect('(');\n\t        var object = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            body = this.parseStatement();\n\t        }\n\t        return this.finalize(node, new Node.WithStatement(object, body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-switch-statement\n\t    Parser.prototype.parseSwitchCase = function () {\n\t        var node = this.createNode();\n\t        var test;\n\t        if (this.matchKeyword('default')) {\n\t            this.nextToken();\n\t            test = null;\n\t        }\n\t        else {\n\t            this.expectKeyword('case');\n\t            test = this.parseExpression();\n\t        }\n\t        this.expect(':');\n\t        var consequent = [];\n\t        while (true) {\n\t            if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t                break;\n\t            }\n\t            consequent.push(this.parseStatementListItem());\n\t        }\n\t        return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t    };\n\t    Parser.prototype.parseSwitchStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('switch');\n\t        this.expect('(');\n\t        var discriminant = this.parseExpression();\n\t        this.expect(')');\n\t        var previousInSwitch = this.context.inSwitch;\n\t        this.context.inSwitch = true;\n\t        var cases = [];\n\t        var defaultFound = false;\n\t        this.expect('{');\n\t        while (true) {\n\t            if (this.match('}')) {\n\t                break;\n\t            }\n\t            var clause = this.parseSwitchCase();\n\t            if (clause.test === null) {\n\t                if (defaultFound) {\n\t                    this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t                }\n\t                defaultFound = true;\n\t            }\n\t            cases.push(clause);\n\t        }\n\t        this.expect('}');\n\t        this.context.inSwitch = previousInSwitch;\n\t        return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t    Parser.prototype.parseLabelledStatement = function () {\n\t        var node = this.createNode();\n\t        var expr = this.parseExpression();\n\t        var statement;\n\t        if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t            this.nextToken();\n\t            var id = expr;\n\t            var key = '$' + id.name;\n\t            if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t                this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t            }\n\t            this.context.labelSet[key] = true;\n\t            var body = void 0;\n\t            if (this.matchKeyword('class')) {\n\t                this.tolerateUnexpectedToken(this.lookahead);\n\t                body = this.parseClassDeclaration();\n\t            }\n\t            else if (this.matchKeyword('function')) {\n\t                var token = this.lookahead;\n\t                var declaration = this.parseFunctionDeclaration();\n\t                if (this.context.strict) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t                }\n\t                else if (declaration.generator) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t                }\n\t                body = declaration;\n\t            }\n\t            else {\n\t                body = this.parseStatement();\n\t            }\n\t            delete this.context.labelSet[key];\n\t            statement = new Node.LabeledStatement(id, body);\n\t        }\n\t        else {\n\t            this.consumeSemicolon();\n\t            statement = new Node.ExpressionStatement(expr);\n\t        }\n\t        return this.finalize(node, statement);\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-throw-statement\n\t    Parser.prototype.parseThrowStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('throw');\n\t        if (this.hasLineTerminator) {\n\t            this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t        }\n\t        var argument = this.parseExpression();\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ThrowStatement(argument));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-try-statement\n\t    Parser.prototype.parseCatchClause = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('catch');\n\t        this.expect('(');\n\t        if (this.match(')')) {\n\t            this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        var params = [];\n\t        var param = this.parsePattern(params);\n\t        var paramMap = {};\n\t        for (var i = 0; i < params.length; i++) {\n\t            var key = '$' + params[i].value;\n\t            if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t                this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t            }\n\t            paramMap[key] = true;\n\t        }\n\t        if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t            if (this.scanner.isRestrictedWord(param.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t            }\n\t        }\n\t        this.expect(')');\n\t        var body = this.parseBlock();\n\t        return this.finalize(node, new Node.CatchClause(param, body));\n\t    };\n\t    Parser.prototype.parseFinallyClause = function () {\n\t        this.expectKeyword('finally');\n\t        return this.parseBlock();\n\t    };\n\t    Parser.prototype.parseTryStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('try');\n\t        var block = this.parseBlock();\n\t        var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t        var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t        if (!handler && !finalizer) {\n\t            this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t        }\n\t        return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t    Parser.prototype.parseDebuggerStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('debugger');\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.DebuggerStatement());\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t    Parser.prototype.parseStatement = function () {\n\t        var statement;\n\t        switch (this.lookahead.type) {\n\t            case 1 /* BooleanLiteral */:\n\t            case 5 /* NullLiteral */:\n\t            case 6 /* NumericLiteral */:\n\t            case 8 /* StringLiteral */:\n\t            case 10 /* Template */:\n\t            case 9 /* RegularExpression */:\n\t                statement = this.parseExpressionStatement();\n\t                break;\n\t            case 7 /* Punctuator */:\n\t                var value = this.lookahead.value;\n\t                if (value === '{') {\n\t                    statement = this.parseBlock();\n\t                }\n\t                else if (value === '(') {\n\t                    statement = this.parseExpressionStatement();\n\t                }\n\t                else if (value === ';') {\n\t                    statement = this.parseEmptyStatement();\n\t                }\n\t                else {\n\t                    statement = this.parseExpressionStatement();\n\t                }\n\t                break;\n\t            case 3 /* Identifier */:\n\t                statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t                break;\n\t            case 4 /* Keyword */:\n\t                switch (this.lookahead.value) {\n\t                    case 'break':\n\t                        statement = this.parseBreakStatement();\n\t                        break;\n\t                    case 'continue':\n\t                        statement = this.parseContinueStatement();\n\t                        break;\n\t                    case 'debugger':\n\t                        statement = this.parseDebuggerStatement();\n\t                        break;\n\t                    case 'do':\n\t                        statement = this.parseDoWhileStatement();\n\t                        break;\n\t                    case 'for':\n\t                        statement = this.parseForStatement();\n\t                        break;\n\t                    case 'function':\n\t                        statement = this.parseFunctionDeclaration();\n\t                        break;\n\t                    case 'if':\n\t                        statement = this.parseIfStatement();\n\t                        break;\n\t                    case 'return':\n\t                        statement = this.parseReturnStatement();\n\t                        break;\n\t                    case 'switch':\n\t                        statement = this.parseSwitchStatement();\n\t                        break;\n\t                    case 'throw':\n\t                        statement = this.parseThrowStatement();\n\t                        break;\n\t                    case 'try':\n\t                        statement = this.parseTryStatement();\n\t                        break;\n\t                    case 'var':\n\t                        statement = this.parseVariableStatement();\n\t                        break;\n\t                    case 'while':\n\t                        statement = this.parseWhileStatement();\n\t                        break;\n\t                    case 'with':\n\t                        statement = this.parseWithStatement();\n\t                        break;\n\t                    default:\n\t                        statement = this.parseExpressionStatement();\n\t                        break;\n\t                }\n\t                break;\n\t            default:\n\t                statement = this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        return statement;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-function-definitions\n\t    Parser.prototype.parseFunctionSourceElements = function () {\n\t        var node = this.createNode();\n\t        this.expect('{');\n\t        var body = this.parseDirectivePrologues();\n\t        var previousLabelSet = this.context.labelSet;\n\t        var previousInIteration = this.context.inIteration;\n\t        var previousInSwitch = this.context.inSwitch;\n\t        var previousInFunctionBody = this.context.inFunctionBody;\n\t        this.context.labelSet = {};\n\t        this.context.inIteration = false;\n\t        this.context.inSwitch = false;\n\t        this.context.inFunctionBody = true;\n\t        while (this.lookahead.type !== 2 /* EOF */) {\n\t            if (this.match('}')) {\n\t                break;\n\t            }\n\t            body.push(this.parseStatementListItem());\n\t        }\n\t        this.expect('}');\n\t        this.context.labelSet = previousLabelSet;\n\t        this.context.inIteration = previousInIteration;\n\t        this.context.inSwitch = previousInSwitch;\n\t        this.context.inFunctionBody = previousInFunctionBody;\n\t        return this.finalize(node, new Node.BlockStatement(body));\n\t    };\n\t    Parser.prototype.validateParam = function (options, param, name) {\n\t        var key = '$' + name;\n\t        if (this.context.strict) {\n\t            if (this.scanner.isRestrictedWord(name)) {\n\t                options.stricted = param;\n\t                options.message = messages_1.Messages.StrictParamName;\n\t            }\n\t            if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t                options.stricted = param;\n\t                options.message = messages_1.Messages.StrictParamDupe;\n\t            }\n\t        }\n\t        else if (!options.firstRestricted) {\n\t            if (this.scanner.isRestrictedWord(name)) {\n\t                options.firstRestricted = param;\n\t                options.message = messages_1.Messages.StrictParamName;\n\t            }\n\t            else if (this.scanner.isStrictModeReservedWord(name)) {\n\t                options.firstRestricted = param;\n\t                options.message = messages_1.Messages.StrictReservedWord;\n\t            }\n\t            else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t                options.stricted = param;\n\t                options.message = messages_1.Messages.StrictParamDupe;\n\t            }\n\t        }\n\t        /* istanbul ignore next */\n\t        if (typeof Object.defineProperty === 'function') {\n\t            Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t        }\n\t        else {\n\t            options.paramSet[key] = true;\n\t        }\n\t    };\n\t    Parser.prototype.parseRestElement = function (params) {\n\t        var node = this.createNode();\n\t        this.expect('...');\n\t        var arg = this.parsePattern(params);\n\t        if (this.match('=')) {\n\t            this.throwError(messages_1.Messages.DefaultRestParameter);\n\t        }\n\t        if (!this.match(')')) {\n\t            this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t        }\n\t        return this.finalize(node, new Node.RestElement(arg));\n\t    };\n\t    Parser.prototype.parseFormalParameter = function (options) {\n\t        var params = [];\n\t        var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t        for (var i = 0; i < params.length; i++) {\n\t            this.validateParam(options, params[i], params[i].value);\n\t        }\n\t        options.simple = options.simple && (param instanceof Node.Identifier);\n\t        options.params.push(param);\n\t    };\n\t    Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t        var options;\n\t        options = {\n\t            simple: true,\n\t            params: [],\n\t            firstRestricted: firstRestricted\n\t        };\n\t        this.expect('(');\n\t        if (!this.match(')')) {\n\t            options.paramSet = {};\n\t            while (this.lookahead.type !== 2 /* EOF */) {\n\t                this.parseFormalParameter(options);\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t                this.expect(',');\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        this.expect(')');\n\t        return {\n\t            simple: options.simple,\n\t            params: options.params,\n\t            stricted: options.stricted,\n\t            firstRestricted: options.firstRestricted,\n\t            message: options.message\n\t        };\n\t    };\n\t    Parser.prototype.matchAsyncFunction = function () {\n\t        var match = this.matchContextualKeyword('async');\n\t        if (match) {\n\t            var state = this.scanner.saveState();\n\t            this.scanner.scanComments();\n\t            var next = this.scanner.lex();\n\t            this.scanner.restoreState(state);\n\t            match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t        }\n\t        return match;\n\t    };\n\t    Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t        var node = this.createNode();\n\t        var isAsync = this.matchContextualKeyword('async');\n\t        if (isAsync) {\n\t            this.nextToken();\n\t        }\n\t        this.expectKeyword('function');\n\t        var isGenerator = isAsync ? false : this.match('*');\n\t        if (isGenerator) {\n\t            this.nextToken();\n\t        }\n\t        var message;\n\t        var id = null;\n\t        var firstRestricted = null;\n\t        if (!identifierIsOptional || !this.match('(')) {\n\t            var token = this.lookahead;\n\t            id = this.parseVariableIdentifier();\n\t            if (this.context.strict) {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t                }\n\t            }\n\t            else {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictFunctionName;\n\t                }\n\t                else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictReservedWord;\n\t                }\n\t            }\n\t        }\n\t        var previousAllowAwait = this.context.await;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.await = isAsync;\n\t        this.context.allowYield = !isGenerator;\n\t        var formalParameters = this.parseFormalParameters(firstRestricted);\n\t        var params = formalParameters.params;\n\t        var stricted = formalParameters.stricted;\n\t        firstRestricted = formalParameters.firstRestricted;\n\t        if (formalParameters.message) {\n\t            message = formalParameters.message;\n\t        }\n\t        var previousStrict = this.context.strict;\n\t        var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t        this.context.allowStrictDirective = formalParameters.simple;\n\t        var body = this.parseFunctionSourceElements();\n\t        if (this.context.strict && firstRestricted) {\n\t            this.throwUnexpectedToken(firstRestricted, message);\n\t        }\n\t        if (this.context.strict && stricted) {\n\t            this.tolerateUnexpectedToken(stricted, message);\n\t        }\n\t        this.context.strict = previousStrict;\n\t        this.context.allowStrictDirective = previousAllowStrictDirective;\n\t        this.context.await = previousAllowAwait;\n\t        this.context.allowYield = previousAllowYield;\n\t        return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t            this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t    };\n\t    Parser.prototype.parseFunctionExpression = function () {\n\t        var node = this.createNode();\n\t        var isAsync = this.matchContextualKeyword('async');\n\t        if (isAsync) {\n\t            this.nextToken();\n\t        }\n\t        this.expectKeyword('function');\n\t        var isGenerator = isAsync ? false : this.match('*');\n\t        if (isGenerator) {\n\t            this.nextToken();\n\t        }\n\t        var message;\n\t        var id = null;\n\t        var firstRestricted;\n\t        var previousAllowAwait = this.context.await;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.await = isAsync;\n\t        this.context.allowYield = !isGenerator;\n\t        if (!this.match('(')) {\n\t            var token = this.lookahead;\n\t            id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t            if (this.context.strict) {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t                }\n\t            }\n\t            else {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictFunctionName;\n\t                }\n\t                else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictReservedWord;\n\t                }\n\t            }\n\t        }\n\t        var formalParameters = this.parseFormalParameters(firstRestricted);\n\t        var params = formalParameters.params;\n\t        var stricted = formalParameters.stricted;\n\t        firstRestricted = formalParameters.firstRestricted;\n\t        if (formalParameters.message) {\n\t            message = formalParameters.message;\n\t        }\n\t        var previousStrict = this.context.strict;\n\t        var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t        this.context.allowStrictDirective = formalParameters.simple;\n\t        var body = this.parseFunctionSourceElements();\n\t        if (this.context.strict && firstRestricted) {\n\t            this.throwUnexpectedToken(firstRestricted, message);\n\t        }\n\t        if (this.context.strict && stricted) {\n\t            this.tolerateUnexpectedToken(stricted, message);\n\t        }\n\t        this.context.strict = previousStrict;\n\t        this.context.allowStrictDirective = previousAllowStrictDirective;\n\t        this.context.await = previousAllowAwait;\n\t        this.context.allowYield = previousAllowYield;\n\t        return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t            this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t    Parser.prototype.parseDirective = function () {\n\t        var token = this.lookahead;\n\t        var node = this.createNode();\n\t        var expr = this.parseExpression();\n\t        var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t    };\n\t    Parser.prototype.parseDirectivePrologues = function () {\n\t        var firstRestricted = null;\n\t        var body = [];\n\t        while (true) {\n\t            var token = this.lookahead;\n\t            if (token.type !== 8 /* StringLiteral */) {\n\t                break;\n\t            }\n\t            var statement = this.parseDirective();\n\t            body.push(statement);\n\t            var directive = statement.directive;\n\t            if (typeof directive !== 'string') {\n\t                break;\n\t            }\n\t            if (directive === 'use strict') {\n\t                this.context.strict = true;\n\t                if (firstRestricted) {\n\t                    this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t                }\n\t                if (!this.context.allowStrictDirective) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t                }\n\t            }\n\t            else {\n\t                if (!firstRestricted && token.octal) {\n\t                    firstRestricted = token;\n\t                }\n\t            }\n\t        }\n\t        return body;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-method-definitions\n\t    Parser.prototype.qualifiedPropertyName = function (token) {\n\t        switch (token.type) {\n\t            case 3 /* Identifier */:\n\t            case 8 /* StringLiteral */:\n\t            case 1 /* BooleanLiteral */:\n\t            case 5 /* NullLiteral */:\n\t            case 6 /* NumericLiteral */:\n\t            case 4 /* Keyword */:\n\t                return true;\n\t            case 7 /* Punctuator */:\n\t                return token.value === '[';\n\t            default:\n\t                break;\n\t        }\n\t        return false;\n\t    };\n\t    Parser.prototype.parseGetterMethod = function () {\n\t        var node = this.createNode();\n\t        var isGenerator = false;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = !isGenerator;\n\t        var formalParameters = this.parseFormalParameters();\n\t        if (formalParameters.params.length > 0) {\n\t            this.tolerateError(messages_1.Messages.BadGetterArity);\n\t        }\n\t        var method = this.parsePropertyMethod(formalParameters);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t    };\n\t    Parser.prototype.parseSetterMethod = function () {\n\t        var node = this.createNode();\n\t        var isGenerator = false;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = !isGenerator;\n\t        var formalParameters = this.parseFormalParameters();\n\t        if (formalParameters.params.length !== 1) {\n\t            this.tolerateError(messages_1.Messages.BadSetterArity);\n\t        }\n\t        else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t            this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t        }\n\t        var method = this.parsePropertyMethod(formalParameters);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t    };\n\t    Parser.prototype.parseGeneratorMethod = function () {\n\t        var node = this.createNode();\n\t        var isGenerator = true;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = true;\n\t        var params = this.parseFormalParameters();\n\t        this.context.allowYield = false;\n\t        var method = this.parsePropertyMethod(params);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t    Parser.prototype.isStartOfExpression = function () {\n\t        var start = true;\n\t        var value = this.lookahead.value;\n\t        switch (this.lookahead.type) {\n\t            case 7 /* Punctuator */:\n\t                start = (value === '[') || (value === '(') || (value === '{') ||\n\t                    (value === '+') || (value === '-') ||\n\t                    (value === '!') || (value === '~') ||\n\t                    (value === '++') || (value === '--') ||\n\t                    (value === '/') || (value === '/='); // regular expression literal\n\t                break;\n\t            case 4 /* Keyword */:\n\t                start = (value === 'class') || (value === 'delete') ||\n\t                    (value === 'function') || (value === 'let') || (value === 'new') ||\n\t                    (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t                    (value === 'void') || (value === 'yield');\n\t                break;\n\t            default:\n\t                break;\n\t        }\n\t        return start;\n\t    };\n\t    Parser.prototype.parseYieldExpression = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('yield');\n\t        var argument = null;\n\t        var delegate = false;\n\t        if (!this.hasLineTerminator) {\n\t            var previousAllowYield = this.context.allowYield;\n\t            this.context.allowYield = false;\n\t            delegate = this.match('*');\n\t            if (delegate) {\n\t                this.nextToken();\n\t                argument = this.parseAssignmentExpression();\n\t            }\n\t            else if (this.isStartOfExpression()) {\n\t                argument = this.parseAssignmentExpression();\n\t            }\n\t            this.context.allowYield = previousAllowYield;\n\t        }\n\t        return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-class-definitions\n\t    Parser.prototype.parseClassElement = function (hasConstructor) {\n\t        var token = this.lookahead;\n\t        var node = this.createNode();\n\t        var kind = '';\n\t        var key = null;\n\t        var value = null;\n\t        var computed = false;\n\t        var method = false;\n\t        var isStatic = false;\n\t        var isAsync = false;\n\t        if (this.match('*')) {\n\t            this.nextToken();\n\t        }\n\t        else {\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            var id = key;\n\t            if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t                token = this.lookahead;\n\t                isStatic = true;\n\t                computed = this.match('[');\n\t                if (this.match('*')) {\n\t                    this.nextToken();\n\t                }\n\t                else {\n\t                    key = this.parseObjectPropertyKey();\n\t                }\n\t            }\n\t            if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t                var punctuator = this.lookahead.value;\n\t                if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t                    isAsync = true;\n\t                    token = this.lookahead;\n\t                    key = this.parseObjectPropertyKey();\n\t                    if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t                        this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t                    }\n\t                }\n\t            }\n\t        }\n\t        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t        if (token.type === 3 /* Identifier */) {\n\t            if (token.value === 'get' && lookaheadPropertyKey) {\n\t                kind = 'get';\n\t                computed = this.match('[');\n\t                key = this.parseObjectPropertyKey();\n\t                this.context.allowYield = false;\n\t                value = this.parseGetterMethod();\n\t            }\n\t            else if (token.value === 'set' && lookaheadPropertyKey) {\n\t                kind = 'set';\n\t                computed = this.match('[');\n\t                key = this.parseObjectPropertyKey();\n\t                value = this.parseSetterMethod();\n\t            }\n\t        }\n\t        else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t            kind = 'init';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            value = this.parseGeneratorMethod();\n\t            method = true;\n\t        }\n\t        if (!kind && key && this.match('(')) {\n\t            kind = 'init';\n\t            value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t            method = true;\n\t        }\n\t        if (!kind) {\n\t            this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        if (kind === 'init') {\n\t            kind = 'method';\n\t        }\n\t        if (!computed) {\n\t            if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t                this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t            }\n\t            if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t                if (kind !== 'method' || !method || (value && value.generator)) {\n\t                    this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t                }\n\t                if (hasConstructor.value) {\n\t                    this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t                }\n\t                else {\n\t                    hasConstructor.value = true;\n\t                }\n\t                kind = 'constructor';\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t    };\n\t    Parser.prototype.parseClassElementList = function () {\n\t        var body = [];\n\t        var hasConstructor = { value: false };\n\t        this.expect('{');\n\t        while (!this.match('}')) {\n\t            if (this.match(';')) {\n\t                this.nextToken();\n\t            }\n\t            else {\n\t                body.push(this.parseClassElement(hasConstructor));\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return body;\n\t    };\n\t    Parser.prototype.parseClassBody = function () {\n\t        var node = this.createNode();\n\t        var elementList = this.parseClassElementList();\n\t        return this.finalize(node, new Node.ClassBody(elementList));\n\t    };\n\t    Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t        var node = this.createNode();\n\t        var previousStrict = this.context.strict;\n\t        this.context.strict = true;\n\t        this.expectKeyword('class');\n\t        var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t        var superClass = null;\n\t        if (this.matchKeyword('extends')) {\n\t            this.nextToken();\n\t            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t        }\n\t        var classBody = this.parseClassBody();\n\t        this.context.strict = previousStrict;\n\t        return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t    };\n\t    Parser.prototype.parseClassExpression = function () {\n\t        var node = this.createNode();\n\t        var previousStrict = this.context.strict;\n\t        this.context.strict = true;\n\t        this.expectKeyword('class');\n\t        var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t        var superClass = null;\n\t        if (this.matchKeyword('extends')) {\n\t            this.nextToken();\n\t            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t        }\n\t        var classBody = this.parseClassBody();\n\t        this.context.strict = previousStrict;\n\t        return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-scripts\n\t    // https://tc39.github.io/ecma262/#sec-modules\n\t    Parser.prototype.parseModule = function () {\n\t        this.context.strict = true;\n\t        this.context.isModule = true;\n\t        this.scanner.isModule = true;\n\t        var node = this.createNode();\n\t        var body = this.parseDirectivePrologues();\n\t        while (this.lookahead.type !== 2 /* EOF */) {\n\t            body.push(this.parseStatementListItem());\n\t        }\n\t        return this.finalize(node, new Node.Module(body));\n\t    };\n\t    Parser.prototype.parseScript = function () {\n\t        var node = this.createNode();\n\t        var body = this.parseDirectivePrologues();\n\t        while (this.lookahead.type !== 2 /* EOF */) {\n\t            body.push(this.parseStatementListItem());\n\t        }\n\t        return this.finalize(node, new Node.Script(body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-imports\n\t    Parser.prototype.parseModuleSpecifier = function () {\n\t        var node = this.createNode();\n\t        if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t            this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t        }\n\t        var token = this.nextToken();\n\t        var raw = this.getTokenRaw(token);\n\t        return this.finalize(node, new Node.Literal(token.value, raw));\n\t    };\n\t    // import {<foo as bar>} ...;\n\t    Parser.prototype.parseImportSpecifier = function () {\n\t        var node = this.createNode();\n\t        var imported;\n\t        var local;\n\t        if (this.lookahead.type === 3 /* Identifier */) {\n\t            imported = this.parseVariableIdentifier();\n\t            local = imported;\n\t            if (this.matchContextualKeyword('as')) {\n\t                this.nextToken();\n\t                local = this.parseVariableIdentifier();\n\t            }\n\t        }\n\t        else {\n\t            imported = this.parseIdentifierName();\n\t            local = imported;\n\t            if (this.matchContextualKeyword('as')) {\n\t                this.nextToken();\n\t                local = this.parseVariableIdentifier();\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.nextToken());\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t    };\n\t    // {foo, bar as bas}\n\t    Parser.prototype.parseNamedImports = function () {\n\t        this.expect('{');\n\t        var specifiers = [];\n\t        while (!this.match('}')) {\n\t            specifiers.push(this.parseImportSpecifier());\n\t            if (!this.match('}')) {\n\t                this.expect(',');\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return specifiers;\n\t    };\n\t    // import <foo> ...;\n\t    Parser.prototype.parseImportDefaultSpecifier = function () {\n\t        var node = this.createNode();\n\t        var local = this.parseIdentifierName();\n\t        return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t    };\n\t    // import <* as foo> ...;\n\t    Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t        var node = this.createNode();\n\t        this.expect('*');\n\t        if (!this.matchContextualKeyword('as')) {\n\t            this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t        }\n\t        this.nextToken();\n\t        var local = this.parseIdentifierName();\n\t        return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t    };\n\t    Parser.prototype.parseImportDeclaration = function () {\n\t        if (this.context.inFunctionBody) {\n\t            this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t        }\n\t        var node = this.createNode();\n\t        this.expectKeyword('import');\n\t        var src;\n\t        var specifiers = [];\n\t        if (this.lookahead.type === 8 /* StringLiteral */) {\n\t            // import 'foo';\n\t            src = this.parseModuleSpecifier();\n\t        }\n\t        else {\n\t            if (this.match('{')) {\n\t                // import {bar}\n\t                specifiers = specifiers.concat(this.parseNamedImports());\n\t            }\n\t            else if (this.match('*')) {\n\t                // import * as foo\n\t                specifiers.push(this.parseImportNamespaceSpecifier());\n\t            }\n\t            else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t                // import foo\n\t                specifiers.push(this.parseImportDefaultSpecifier());\n\t                if (this.match(',')) {\n\t                    this.nextToken();\n\t                    if (this.match('*')) {\n\t                        // import foo, * as foo\n\t                        specifiers.push(this.parseImportNamespaceSpecifier());\n\t                    }\n\t                    else if (this.match('{')) {\n\t                        // import foo, {bar}\n\t                        specifiers = specifiers.concat(this.parseNamedImports());\n\t                    }\n\t                    else {\n\t                        this.throwUnexpectedToken(this.lookahead);\n\t                    }\n\t                }\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.nextToken());\n\t            }\n\t            if (!this.matchContextualKeyword('from')) {\n\t                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t                this.throwError(message, this.lookahead.value);\n\t            }\n\t            this.nextToken();\n\t            src = this.parseModuleSpecifier();\n\t        }\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-exports\n\t    Parser.prototype.parseExportSpecifier = function () {\n\t        var node = this.createNode();\n\t        var local = this.parseIdentifierName();\n\t        var exported = local;\n\t        if (this.matchContextualKeyword('as')) {\n\t            this.nextToken();\n\t            exported = this.parseIdentifierName();\n\t        }\n\t        return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t    };\n\t    Parser.prototype.parseExportDeclaration = function () {\n\t        if (this.context.inFunctionBody) {\n\t            this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t        }\n\t        var node = this.createNode();\n\t        this.expectKeyword('export');\n\t        var exportDeclaration;\n\t        if (this.matchKeyword('default')) {\n\t            // export default ...\n\t            this.nextToken();\n\t            if (this.matchKeyword('function')) {\n\t                // export default function foo () {}\n\t                // export default function () {}\n\t                var declaration = this.parseFunctionDeclaration(true);\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t            else if (this.matchKeyword('class')) {\n\t                // export default class foo {}\n\t                var declaration = this.parseClassDeclaration(true);\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t            else if (this.matchContextualKeyword('async')) {\n\t                // export default async function f () {}\n\t                // export default async function () {}\n\t                // export default async x => x\n\t                var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t            else {\n\t                if (this.matchContextualKeyword('from')) {\n\t                    this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t                }\n\t                // export default {};\n\t                // export default [];\n\t                // export default (1 + 2);\n\t                var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t                    this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t                this.consumeSemicolon();\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t        }\n\t        else if (this.match('*')) {\n\t            // export * from 'foo';\n\t            this.nextToken();\n\t            if (!this.matchContextualKeyword('from')) {\n\t                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t                this.throwError(message, this.lookahead.value);\n\t            }\n\t            this.nextToken();\n\t            var src = this.parseModuleSpecifier();\n\t            this.consumeSemicolon();\n\t            exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t        }\n\t        else if (this.lookahead.type === 4 /* Keyword */) {\n\t            // export var f = 1;\n\t            var declaration = void 0;\n\t            switch (this.lookahead.value) {\n\t                case 'let':\n\t                case 'const':\n\t                    declaration = this.parseLexicalDeclaration({ inFor: false });\n\t                    break;\n\t                case 'var':\n\t                case 'class':\n\t                case 'function':\n\t                    declaration = this.parseStatementListItem();\n\t                    break;\n\t                default:\n\t                    this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t        }\n\t        else if (this.matchAsyncFunction()) {\n\t            var declaration = this.parseFunctionDeclaration();\n\t            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t        }\n\t        else {\n\t            var specifiers = [];\n\t            var source = null;\n\t            var isExportFromIdentifier = false;\n\t            this.expect('{');\n\t            while (!this.match('}')) {\n\t                isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t                specifiers.push(this.parseExportSpecifier());\n\t                if (!this.match('}')) {\n\t                    this.expect(',');\n\t                }\n\t            }\n\t            this.expect('}');\n\t            if (this.matchContextualKeyword('from')) {\n\t                // export {default} from 'foo';\n\t                // export {foo} from 'foo';\n\t                this.nextToken();\n\t                source = this.parseModuleSpecifier();\n\t                this.consumeSemicolon();\n\t            }\n\t            else if (isExportFromIdentifier) {\n\t                // export {default}; // missing fromClause\n\t                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t                this.throwError(message, this.lookahead.value);\n\t            }\n\t            else {\n\t                // export {foo};\n\t                this.consumeSemicolon();\n\t            }\n\t            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t        }\n\t        return exportDeclaration;\n\t    };\n\t    return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t    /* istanbul ignore if */\n\t    if (!condition) {\n\t        throw new Error('ASSERT: ' + message);\n\t    }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t    function ErrorHandler() {\n\t        this.errors = [];\n\t        this.tolerant = false;\n\t    }\n\t    ErrorHandler.prototype.recordError = function (error) {\n\t        this.errors.push(error);\n\t    };\n\t    ErrorHandler.prototype.tolerate = function (error) {\n\t        if (this.tolerant) {\n\t            this.recordError(error);\n\t        }\n\t        else {\n\t            throw error;\n\t        }\n\t    };\n\t    ErrorHandler.prototype.constructError = function (msg, column) {\n\t        var error = new Error(msg);\n\t        try {\n\t            throw error;\n\t        }\n\t        catch (base) {\n\t            /* istanbul ignore else */\n\t            if (Object.create && Object.defineProperty) {\n\t                error = Object.create(base);\n\t                Object.defineProperty(error, 'column', { value: column });\n\t            }\n\t        }\n\t        /* istanbul ignore next */\n\t        return error;\n\t    };\n\t    ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t        var msg = 'Line ' + line + ': ' + description;\n\t        var error = this.constructError(msg, col);\n\t        error.index = index;\n\t        error.lineNumber = line;\n\t        error.description = description;\n\t        return error;\n\t    };\n\t    ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t        throw this.createError(index, line, col, description);\n\t    };\n\t    ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t        var error = this.createError(index, line, col, description);\n\t        if (this.tolerant) {\n\t            this.recordError(error);\n\t        }\n\t        else {\n\t            throw error;\n\t        }\n\t    };\n\t    return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t    BadGetterArity: 'Getter must not have any formal parameters',\n\t    BadSetterArity: 'Setter must have exactly one formal parameter',\n\t    BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t    ConstructorIsAsync: 'Class constructor may not be an async method',\n\t    ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t    DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t    DefaultRestParameter: 'Unexpected token =',\n\t    DuplicateBinding: 'Duplicate binding %0',\n\t    DuplicateConstructor: 'A class may only have one constructor',\n\t    DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t    ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t    GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t    IllegalBreak: 'Illegal break statement',\n\t    IllegalContinue: 'Illegal continue statement',\n\t    IllegalExportDeclaration: 'Unexpected token',\n\t    IllegalImportDeclaration: 'Unexpected token',\n\t    IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t    IllegalReturn: 'Illegal return statement',\n\t    InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t    InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t    InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t    InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t    InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t    InvalidModuleSpecifier: 'Unexpected token',\n\t    InvalidRegExp: 'Invalid regular expression',\n\t    LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t    MissingFromClause: 'Unexpected token',\n\t    MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t    NewlineAfterThrow: 'Illegal newline after throw',\n\t    NoAsAfterImportNamespace: 'Unexpected token',\n\t    NoCatchOrFinally: 'Missing catch or finally after try',\n\t    ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t    Redeclaration: '%0 \\'%1\\' has already been declared',\n\t    StaticPrototype: 'Classes may not have static property named prototype',\n\t    StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t    StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t    StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t    StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t    StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t    StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t    StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t    StrictModeWith: 'Strict mode code may not include a with statement',\n\t    StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t    StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t    StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t    StrictReservedWord: 'Use of future reserved word in strict mode',\n\t    StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t    TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t    UnexpectedEOS: 'Unexpected end of input',\n\t    UnexpectedIdentifier: 'Unexpected identifier',\n\t    UnexpectedNumber: 'Unexpected number',\n\t    UnexpectedReserved: 'Unexpected reserved word',\n\t    UnexpectedString: 'Unexpected string',\n\t    UnexpectedTemplate: 'Unexpected quasi %0',\n\t    UnexpectedToken: 'Unexpected token %0',\n\t    UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t    UnknownLabel: 'Undefined label \\'%0\\'',\n\t    UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t    return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t    return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t    function Scanner(code, handler) {\n\t        this.source = code;\n\t        this.errorHandler = handler;\n\t        this.trackComment = false;\n\t        this.isModule = false;\n\t        this.length = code.length;\n\t        this.index = 0;\n\t        this.lineNumber = (code.length > 0) ? 1 : 0;\n\t        this.lineStart = 0;\n\t        this.curlyStack = [];\n\t    }\n\t    Scanner.prototype.saveState = function () {\n\t        return {\n\t            index: this.index,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart\n\t        };\n\t    };\n\t    Scanner.prototype.restoreState = function (state) {\n\t        this.index = state.index;\n\t        this.lineNumber = state.lineNumber;\n\t        this.lineStart = state.lineStart;\n\t    };\n\t    Scanner.prototype.eof = function () {\n\t        return this.index >= this.length;\n\t    };\n\t    Scanner.prototype.throwUnexpectedToken = function (message) {\n\t        if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t        return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t    };\n\t    Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t        if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t        this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-comments\n\t    Scanner.prototype.skipSingleLineComment = function (offset) {\n\t        var comments = [];\n\t        var start, loc;\n\t        if (this.trackComment) {\n\t            comments = [];\n\t            start = this.index - offset;\n\t            loc = {\n\t                start: {\n\t                    line: this.lineNumber,\n\t                    column: this.index - this.lineStart - offset\n\t                },\n\t                end: {}\n\t            };\n\t        }\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            ++this.index;\n\t            if (character_1.Character.isLineTerminator(ch)) {\n\t                if (this.trackComment) {\n\t                    loc.end = {\n\t                        line: this.lineNumber,\n\t                        column: this.index - this.lineStart - 1\n\t                    };\n\t                    var entry = {\n\t                        multiLine: false,\n\t                        slice: [start + offset, this.index - 1],\n\t                        range: [start, this.index - 1],\n\t                        loc: loc\n\t                    };\n\t                    comments.push(entry);\n\t                }\n\t                if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t                    ++this.index;\n\t                }\n\t                ++this.lineNumber;\n\t                this.lineStart = this.index;\n\t                return comments;\n\t            }\n\t        }\n\t        if (this.trackComment) {\n\t            loc.end = {\n\t                line: this.lineNumber,\n\t                column: this.index - this.lineStart\n\t            };\n\t            var entry = {\n\t                multiLine: false,\n\t                slice: [start + offset, this.index],\n\t                range: [start, this.index],\n\t                loc: loc\n\t            };\n\t            comments.push(entry);\n\t        }\n\t        return comments;\n\t    };\n\t    Scanner.prototype.skipMultiLineComment = function () {\n\t        var comments = [];\n\t        var start, loc;\n\t        if (this.trackComment) {\n\t            comments = [];\n\t            start = this.index - 2;\n\t            loc = {\n\t                start: {\n\t                    line: this.lineNumber,\n\t                    column: this.index - this.lineStart - 2\n\t                },\n\t                end: {}\n\t            };\n\t        }\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            if (character_1.Character.isLineTerminator(ch)) {\n\t                if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t                    ++this.index;\n\t                }\n\t                ++this.lineNumber;\n\t                ++this.index;\n\t                this.lineStart = this.index;\n\t            }\n\t            else if (ch === 0x2A) {\n\t                // Block comment ends with '*/'.\n\t                if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t                    this.index += 2;\n\t                    if (this.trackComment) {\n\t                        loc.end = {\n\t                            line: this.lineNumber,\n\t                            column: this.index - this.lineStart\n\t                        };\n\t                        var entry = {\n\t                            multiLine: true,\n\t                            slice: [start + 2, this.index - 2],\n\t                            range: [start, this.index],\n\t                            loc: loc\n\t                        };\n\t                        comments.push(entry);\n\t                    }\n\t                    return comments;\n\t                }\n\t                ++this.index;\n\t            }\n\t            else {\n\t                ++this.index;\n\t            }\n\t        }\n\t        // Ran off the end of the file - the whole thing is a comment\n\t        if (this.trackComment) {\n\t            loc.end = {\n\t                line: this.lineNumber,\n\t                column: this.index - this.lineStart\n\t            };\n\t            var entry = {\n\t                multiLine: true,\n\t                slice: [start + 2, this.index],\n\t                range: [start, this.index],\n\t                loc: loc\n\t            };\n\t            comments.push(entry);\n\t        }\n\t        this.tolerateUnexpectedToken();\n\t        return comments;\n\t    };\n\t    Scanner.prototype.scanComments = function () {\n\t        var comments;\n\t        if (this.trackComment) {\n\t            comments = [];\n\t        }\n\t        var start = (this.index === 0);\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            if (character_1.Character.isWhiteSpace(ch)) {\n\t                ++this.index;\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch)) {\n\t                ++this.index;\n\t                if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t                    ++this.index;\n\t                }\n\t                ++this.lineNumber;\n\t                this.lineStart = this.index;\n\t                start = true;\n\t            }\n\t            else if (ch === 0x2F) {\n\t                ch = this.source.charCodeAt(this.index + 1);\n\t                if (ch === 0x2F) {\n\t                    this.index += 2;\n\t                    var comment = this.skipSingleLineComment(2);\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                    start = true;\n\t                }\n\t                else if (ch === 0x2A) {\n\t                    this.index += 2;\n\t                    var comment = this.skipMultiLineComment();\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            else if (start && ch === 0x2D) {\n\t                // U+003E is '>'\n\t                if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t                    // '-->' is a single-line comment\n\t                    this.index += 3;\n\t                    var comment = this.skipSingleLineComment(3);\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            else if (ch === 0x3C && !this.isModule) {\n\t                if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t                    this.index += 4; // `<!--`\n\t                    var comment = this.skipSingleLineComment(4);\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return comments;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t    Scanner.prototype.isFutureReservedWord = function (id) {\n\t        switch (id) {\n\t            case 'enum':\n\t            case 'export':\n\t            case 'import':\n\t            case 'super':\n\t                return true;\n\t            default:\n\t                return false;\n\t        }\n\t    };\n\t    Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t        switch (id) {\n\t            case 'implements':\n\t            case 'interface':\n\t            case 'package':\n\t            case 'private':\n\t            case 'protected':\n\t            case 'public':\n\t            case 'static':\n\t            case 'yield':\n\t            case 'let':\n\t                return true;\n\t            default:\n\t                return false;\n\t        }\n\t    };\n\t    Scanner.prototype.isRestrictedWord = function (id) {\n\t        return id === 'eval' || id === 'arguments';\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-keywords\n\t    Scanner.prototype.isKeyword = function (id) {\n\t        switch (id.length) {\n\t            case 2:\n\t                return (id === 'if') || (id === 'in') || (id === 'do');\n\t            case 3:\n\t                return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t                    (id === 'try') || (id === 'let');\n\t            case 4:\n\t                return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t                    (id === 'void') || (id === 'with') || (id === 'enum');\n\t            case 5:\n\t                return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t                    (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t                    (id === 'class') || (id === 'super');\n\t            case 6:\n\t                return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t                    (id === 'switch') || (id === 'export') || (id === 'import');\n\t            case 7:\n\t                return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t            case 8:\n\t                return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t            case 10:\n\t                return (id === 'instanceof');\n\t            default:\n\t                return false;\n\t        }\n\t    };\n\t    Scanner.prototype.codePointAt = function (i) {\n\t        var cp = this.source.charCodeAt(i);\n\t        if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t            var second = this.source.charCodeAt(i + 1);\n\t            if (second >= 0xDC00 && second <= 0xDFFF) {\n\t                var first = cp;\n\t                cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t            }\n\t        }\n\t        return cp;\n\t    };\n\t    Scanner.prototype.scanHexEscape = function (prefix) {\n\t        var len = (prefix === 'u') ? 4 : 2;\n\t        var code = 0;\n\t        for (var i = 0; i < len; ++i) {\n\t            if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t                code = code * 16 + hexValue(this.source[this.index++]);\n\t            }\n\t            else {\n\t                return null;\n\t            }\n\t        }\n\t        return String.fromCharCode(code);\n\t    };\n\t    Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t        var ch = this.source[this.index];\n\t        var code = 0;\n\t        // At least, one hex digit is required.\n\t        if (ch === '}') {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        while (!this.eof()) {\n\t            ch = this.source[this.index++];\n\t            if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t                break;\n\t            }\n\t            code = code * 16 + hexValue(ch);\n\t        }\n\t        if (code > 0x10FFFF || ch !== '}') {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return character_1.Character.fromCodePoint(code);\n\t    };\n\t    Scanner.prototype.getIdentifier = function () {\n\t        var start = this.index++;\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            if (ch === 0x5C) {\n\t                // Blackslash (U+005C) marks Unicode escape sequence.\n\t                this.index = start;\n\t                return this.getComplexIdentifier();\n\t            }\n\t            else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t                // Need to handle surrogate pairs.\n\t                this.index = start;\n\t                return this.getComplexIdentifier();\n\t            }\n\t            if (character_1.Character.isIdentifierPart(ch)) {\n\t                ++this.index;\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return this.source.slice(start, this.index);\n\t    };\n\t    Scanner.prototype.getComplexIdentifier = function () {\n\t        var cp = this.codePointAt(this.index);\n\t        var id = character_1.Character.fromCodePoint(cp);\n\t        this.index += id.length;\n\t        // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t        var ch;\n\t        if (cp === 0x5C) {\n\t            if (this.source.charCodeAt(this.index) !== 0x75) {\n\t                this.throwUnexpectedToken();\n\t            }\n\t            ++this.index;\n\t            if (this.source[this.index] === '{') {\n\t                ++this.index;\n\t                ch = this.scanUnicodeCodePointEscape();\n\t            }\n\t            else {\n\t                ch = this.scanHexEscape('u');\n\t                if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t                    this.throwUnexpectedToken();\n\t                }\n\t            }\n\t            id = ch;\n\t        }\n\t        while (!this.eof()) {\n\t            cp = this.codePointAt(this.index);\n\t            if (!character_1.Character.isIdentifierPart(cp)) {\n\t                break;\n\t            }\n\t            ch = character_1.Character.fromCodePoint(cp);\n\t            id += ch;\n\t            this.index += ch.length;\n\t            // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t            if (cp === 0x5C) {\n\t                id = id.substr(0, id.length - 1);\n\t                if (this.source.charCodeAt(this.index) !== 0x75) {\n\t                    this.throwUnexpectedToken();\n\t                }\n\t                ++this.index;\n\t                if (this.source[this.index] === '{') {\n\t                    ++this.index;\n\t                    ch = this.scanUnicodeCodePointEscape();\n\t                }\n\t                else {\n\t                    ch = this.scanHexEscape('u');\n\t                    if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t                        this.throwUnexpectedToken();\n\t                    }\n\t                }\n\t                id += ch;\n\t            }\n\t        }\n\t        return id;\n\t    };\n\t    Scanner.prototype.octalToDecimal = function (ch) {\n\t        // \\0 is not octal escape sequence\n\t        var octal = (ch !== '0');\n\t        var code = octalValue(ch);\n\t        if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t            octal = true;\n\t            code = code * 8 + octalValue(this.source[this.index++]);\n\t            // 3 digits are only allowed when string starts\n\t            // with 0, 1, 2, 3\n\t            if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t                code = code * 8 + octalValue(this.source[this.index++]);\n\t            }\n\t        }\n\t        return {\n\t            code: code,\n\t            octal: octal\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t    Scanner.prototype.scanIdentifier = function () {\n\t        var type;\n\t        var start = this.index;\n\t        // Backslash (U+005C) starts an escaped character.\n\t        var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t        // There is no keyword or literal with only one character.\n\t        // Thus, it must be an identifier.\n\t        if (id.length === 1) {\n\t            type = 3 /* Identifier */;\n\t        }\n\t        else if (this.isKeyword(id)) {\n\t            type = 4 /* Keyword */;\n\t        }\n\t        else if (id === 'null') {\n\t            type = 5 /* NullLiteral */;\n\t        }\n\t        else if (id === 'true' || id === 'false') {\n\t            type = 1 /* BooleanLiteral */;\n\t        }\n\t        else {\n\t            type = 3 /* Identifier */;\n\t        }\n\t        if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t            var restore = this.index;\n\t            this.index = start;\n\t            this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t            this.index = restore;\n\t        }\n\t        return {\n\t            type: type,\n\t            value: id,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-punctuators\n\t    Scanner.prototype.scanPunctuator = function () {\n\t        var start = this.index;\n\t        // Check for most common single-character punctuators.\n\t        var str = this.source[this.index];\n\t        switch (str) {\n\t            case '(':\n\t            case '{':\n\t                if (str === '{') {\n\t                    this.curlyStack.push('{');\n\t                }\n\t                ++this.index;\n\t                break;\n\t            case '.':\n\t                ++this.index;\n\t                if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t                    // Spread operator: ...\n\t                    this.index += 2;\n\t                    str = '...';\n\t                }\n\t                break;\n\t            case '}':\n\t                ++this.index;\n\t                this.curlyStack.pop();\n\t                break;\n\t            case ')':\n\t            case ';':\n\t            case ',':\n\t            case '[':\n\t            case ']':\n\t            case ':':\n\t            case '?':\n\t            case '~':\n\t                ++this.index;\n\t                break;\n\t            default:\n\t                // 4-character punctuator.\n\t                str = this.source.substr(this.index, 4);\n\t                if (str === '>>>=') {\n\t                    this.index += 4;\n\t                }\n\t                else {\n\t                    // 3-character punctuators.\n\t                    str = str.substr(0, 3);\n\t                    if (str === '===' || str === '!==' || str === '>>>' ||\n\t                        str === '<<=' || str === '>>=' || str === '**=') {\n\t                        this.index += 3;\n\t                    }\n\t                    else {\n\t                        // 2-character punctuators.\n\t                        str = str.substr(0, 2);\n\t                        if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t                            str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t                            str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t                            str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t                            str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t                            this.index += 2;\n\t                        }\n\t                        else {\n\t                            // 1-character punctuators.\n\t                            str = this.source[this.index];\n\t                            if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t                                ++this.index;\n\t                            }\n\t                        }\n\t                    }\n\t                }\n\t        }\n\t        if (this.index === start) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 7 /* Punctuator */,\n\t            value: str,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t    Scanner.prototype.scanHexLiteral = function (start) {\n\t        var num = '';\n\t        while (!this.eof()) {\n\t            if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t                break;\n\t            }\n\t            num += this.source[this.index++];\n\t        }\n\t        if (num.length === 0) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseInt('0x' + num, 16),\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.scanBinaryLiteral = function (start) {\n\t        var num = '';\n\t        var ch;\n\t        while (!this.eof()) {\n\t            ch = this.source[this.index];\n\t            if (ch !== '0' && ch !== '1') {\n\t                break;\n\t            }\n\t            num += this.source[this.index++];\n\t        }\n\t        if (num.length === 0) {\n\t            // only 0b or 0B\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (!this.eof()) {\n\t            ch = this.source.charCodeAt(this.index);\n\t            /* istanbul ignore else */\n\t            if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t                this.throwUnexpectedToken();\n\t            }\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseInt(num, 2),\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t        var num = '';\n\t        var octal = false;\n\t        if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t            octal = true;\n\t            num = '0' + this.source[this.index++];\n\t        }\n\t        else {\n\t            ++this.index;\n\t        }\n\t        while (!this.eof()) {\n\t            if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t                break;\n\t            }\n\t            num += this.source[this.index++];\n\t        }\n\t        if (!octal && num.length === 0) {\n\t            // only 0o or 0O\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseInt(num, 8),\n\t            octal: octal,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.isImplicitOctalLiteral = function () {\n\t        // Implicit octal, unless there is a non-octal digit.\n\t        // (Annex B.1.1 on Numeric Literals)\n\t        for (var i = this.index + 1; i < this.length; ++i) {\n\t            var ch = this.source[i];\n\t            if (ch === '8' || ch === '9') {\n\t                return false;\n\t            }\n\t            if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                return true;\n\t            }\n\t        }\n\t        return true;\n\t    };\n\t    Scanner.prototype.scanNumericLiteral = function () {\n\t        var start = this.index;\n\t        var ch = this.source[start];\n\t        assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t        var num = '';\n\t        if (ch !== '.') {\n\t            num = this.source[this.index++];\n\t            ch = this.source[this.index];\n\t            // Hex number starts with '0x'.\n\t            // Octal number starts with '0'.\n\t            // Octal number in ES6 starts with '0o'.\n\t            // Binary number in ES6 starts with '0b'.\n\t            if (num === '0') {\n\t                if (ch === 'x' || ch === 'X') {\n\t                    ++this.index;\n\t                    return this.scanHexLiteral(start);\n\t                }\n\t                if (ch === 'b' || ch === 'B') {\n\t                    ++this.index;\n\t                    return this.scanBinaryLiteral(start);\n\t                }\n\t                if (ch === 'o' || ch === 'O') {\n\t                    return this.scanOctalLiteral(ch, start);\n\t                }\n\t                if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                    if (this.isImplicitOctalLiteral()) {\n\t                        return this.scanOctalLiteral(ch, start);\n\t                    }\n\t                }\n\t            }\n\t            while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                num += this.source[this.index++];\n\t            }\n\t            ch = this.source[this.index];\n\t        }\n\t        if (ch === '.') {\n\t            num += this.source[this.index++];\n\t            while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                num += this.source[this.index++];\n\t            }\n\t            ch = this.source[this.index];\n\t        }\n\t        if (ch === 'e' || ch === 'E') {\n\t            num += this.source[this.index++];\n\t            ch = this.source[this.index];\n\t            if (ch === '+' || ch === '-') {\n\t                num += this.source[this.index++];\n\t            }\n\t            if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                    num += this.source[this.index++];\n\t                }\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken();\n\t            }\n\t        }\n\t        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseFloat(num),\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t    Scanner.prototype.scanStringLiteral = function () {\n\t        var start = this.index;\n\t        var quote = this.source[start];\n\t        assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t        ++this.index;\n\t        var octal = false;\n\t        var str = '';\n\t        while (!this.eof()) {\n\t            var ch = this.source[this.index++];\n\t            if (ch === quote) {\n\t                quote = '';\n\t                break;\n\t            }\n\t            else if (ch === '\\\\') {\n\t                ch = this.source[this.index++];\n\t                if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                    switch (ch) {\n\t                        case 'u':\n\t                            if (this.source[this.index] === '{') {\n\t                                ++this.index;\n\t                                str += this.scanUnicodeCodePointEscape();\n\t                            }\n\t                            else {\n\t                                var unescaped_1 = this.scanHexEscape(ch);\n\t                                if (unescaped_1 === null) {\n\t                                    this.throwUnexpectedToken();\n\t                                }\n\t                                str += unescaped_1;\n\t                            }\n\t                            break;\n\t                        case 'x':\n\t                            var unescaped = this.scanHexEscape(ch);\n\t                            if (unescaped === null) {\n\t                                this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t                            }\n\t                            str += unescaped;\n\t                            break;\n\t                        case 'n':\n\t                            str += '\\n';\n\t                            break;\n\t                        case 'r':\n\t                            str += '\\r';\n\t                            break;\n\t                        case 't':\n\t                            str += '\\t';\n\t                            break;\n\t                        case 'b':\n\t                            str += '\\b';\n\t                            break;\n\t                        case 'f':\n\t                            str += '\\f';\n\t                            break;\n\t                        case 'v':\n\t                            str += '\\x0B';\n\t                            break;\n\t                        case '8':\n\t                        case '9':\n\t                            str += ch;\n\t                            this.tolerateUnexpectedToken();\n\t                            break;\n\t                        default:\n\t                            if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                                var octToDec = this.octalToDecimal(ch);\n\t                                octal = octToDec.octal || octal;\n\t                                str += String.fromCharCode(octToDec.code);\n\t                            }\n\t                            else {\n\t                                str += ch;\n\t                            }\n\t                            break;\n\t                    }\n\t                }\n\t                else {\n\t                    ++this.lineNumber;\n\t                    if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t                        ++this.index;\n\t                    }\n\t                    this.lineStart = this.index;\n\t                }\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                break;\n\t            }\n\t            else {\n\t                str += ch;\n\t            }\n\t        }\n\t        if (quote !== '') {\n\t            this.index = start;\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 8 /* StringLiteral */,\n\t            value: str,\n\t            octal: octal,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t    Scanner.prototype.scanTemplate = function () {\n\t        var cooked = '';\n\t        var terminated = false;\n\t        var start = this.index;\n\t        var head = (this.source[start] === '`');\n\t        var tail = false;\n\t        var rawOffset = 2;\n\t        ++this.index;\n\t        while (!this.eof()) {\n\t            var ch = this.source[this.index++];\n\t            if (ch === '`') {\n\t                rawOffset = 1;\n\t                tail = true;\n\t                terminated = true;\n\t                break;\n\t            }\n\t            else if (ch === '$') {\n\t                if (this.source[this.index] === '{') {\n\t                    this.curlyStack.push('${');\n\t                    ++this.index;\n\t                    terminated = true;\n\t                    break;\n\t                }\n\t                cooked += ch;\n\t            }\n\t            else if (ch === '\\\\') {\n\t                ch = this.source[this.index++];\n\t                if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                    switch (ch) {\n\t                        case 'n':\n\t                            cooked += '\\n';\n\t                            break;\n\t                        case 'r':\n\t                            cooked += '\\r';\n\t                            break;\n\t                        case 't':\n\t                            cooked += '\\t';\n\t                            break;\n\t                        case 'u':\n\t                            if (this.source[this.index] === '{') {\n\t                                ++this.index;\n\t                                cooked += this.scanUnicodeCodePointEscape();\n\t                            }\n\t                            else {\n\t                                var restore = this.index;\n\t                                var unescaped_2 = this.scanHexEscape(ch);\n\t                                if (unescaped_2 !== null) {\n\t                                    cooked += unescaped_2;\n\t                                }\n\t                                else {\n\t                                    this.index = restore;\n\t                                    cooked += ch;\n\t                                }\n\t                            }\n\t                            break;\n\t                        case 'x':\n\t                            var unescaped = this.scanHexEscape(ch);\n\t                            if (unescaped === null) {\n\t                                this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t                            }\n\t                            cooked += unescaped;\n\t                            break;\n\t                        case 'b':\n\t                            cooked += '\\b';\n\t                            break;\n\t                        case 'f':\n\t                            cooked += '\\f';\n\t                            break;\n\t                        case 'v':\n\t                            cooked += '\\v';\n\t                            break;\n\t                        default:\n\t                            if (ch === '0') {\n\t                                if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                                    // Illegal: \\01 \\02 and so on\n\t                                    this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t                                }\n\t                                cooked += '\\0';\n\t                            }\n\t                            else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                                // Illegal: \\1 \\2\n\t                                this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t                            }\n\t                            else {\n\t                                cooked += ch;\n\t                            }\n\t                            break;\n\t                    }\n\t                }\n\t                else {\n\t                    ++this.lineNumber;\n\t                    if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t                        ++this.index;\n\t                    }\n\t                    this.lineStart = this.index;\n\t                }\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                ++this.lineNumber;\n\t                if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t                    ++this.index;\n\t                }\n\t                this.lineStart = this.index;\n\t                cooked += '\\n';\n\t            }\n\t            else {\n\t                cooked += ch;\n\t            }\n\t        }\n\t        if (!terminated) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (!head) {\n\t            this.curlyStack.pop();\n\t        }\n\t        return {\n\t            type: 10 /* Template */,\n\t            value: this.source.slice(start + 1, this.index - rawOffset),\n\t            cooked: cooked,\n\t            head: head,\n\t            tail: tail,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t    Scanner.prototype.testRegExp = function (pattern, flags) {\n\t        // The BMP character to use as a replacement for astral symbols when\n\t        // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t        // approximation.\n\t        // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t        // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t        // pattern that would not be detected by this substitution.\n\t        var astralSubstitute = '\\uFFFF';\n\t        var tmp = pattern;\n\t        var self = this;\n\t        if (flags.indexOf('u') >= 0) {\n\t            tmp = tmp\n\t                .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t                var codePoint = parseInt($1 || $2, 16);\n\t                if (codePoint > 0x10FFFF) {\n\t                    self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t                }\n\t                if (codePoint <= 0xFFFF) {\n\t                    return String.fromCharCode(codePoint);\n\t                }\n\t                return astralSubstitute;\n\t            })\n\t                .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t        }\n\t        // First, detect invalid regular expressions.\n\t        try {\n\t            RegExp(tmp);\n\t        }\n\t        catch (e) {\n\t            this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t        }\n\t        // Return a regular expression object for this pattern-flag pair, or\n\t        // `null` in case the current environment doesn't support the flags it\n\t        // uses.\n\t        try {\n\t            return new RegExp(pattern, flags);\n\t        }\n\t        catch (exception) {\n\t            /* istanbul ignore next */\n\t            return null;\n\t        }\n\t    };\n\t    Scanner.prototype.scanRegExpBody = function () {\n\t        var ch = this.source[this.index];\n\t        assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t        var str = this.source[this.index++];\n\t        var classMarker = false;\n\t        var terminated = false;\n\t        while (!this.eof()) {\n\t            ch = this.source[this.index++];\n\t            str += ch;\n\t            if (ch === '\\\\') {\n\t                ch = this.source[this.index++];\n\t                // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t                if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                    this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t                }\n\t                str += ch;\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t            }\n\t            else if (classMarker) {\n\t                if (ch === ']') {\n\t                    classMarker = false;\n\t                }\n\t            }\n\t            else {\n\t                if (ch === '/') {\n\t                    terminated = true;\n\t                    break;\n\t                }\n\t                else if (ch === '[') {\n\t                    classMarker = true;\n\t                }\n\t            }\n\t        }\n\t        if (!terminated) {\n\t            this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t        }\n\t        // Exclude leading and trailing slash.\n\t        return str.substr(1, str.length - 2);\n\t    };\n\t    Scanner.prototype.scanRegExpFlags = function () {\n\t        var str = '';\n\t        var flags = '';\n\t        while (!this.eof()) {\n\t            var ch = this.source[this.index];\n\t            if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t                break;\n\t            }\n\t            ++this.index;\n\t            if (ch === '\\\\' && !this.eof()) {\n\t                ch = this.source[this.index];\n\t                if (ch === 'u') {\n\t                    ++this.index;\n\t                    var restore = this.index;\n\t                    var char = this.scanHexEscape('u');\n\t                    if (char !== null) {\n\t                        flags += char;\n\t                        for (str += '\\\\u'; restore < this.index; ++restore) {\n\t                            str += this.source[restore];\n\t                        }\n\t                    }\n\t                    else {\n\t                        this.index = restore;\n\t                        flags += 'u';\n\t                        str += '\\\\u';\n\t                    }\n\t                    this.tolerateUnexpectedToken();\n\t                }\n\t                else {\n\t                    str += '\\\\';\n\t                    this.tolerateUnexpectedToken();\n\t                }\n\t            }\n\t            else {\n\t                flags += ch;\n\t                str += ch;\n\t            }\n\t        }\n\t        return flags;\n\t    };\n\t    Scanner.prototype.scanRegExp = function () {\n\t        var start = this.index;\n\t        var pattern = this.scanRegExpBody();\n\t        var flags = this.scanRegExpFlags();\n\t        var value = this.testRegExp(pattern, flags);\n\t        return {\n\t            type: 9 /* RegularExpression */,\n\t            value: '',\n\t            pattern: pattern,\n\t            flags: flags,\n\t            regex: value,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.lex = function () {\n\t        if (this.eof()) {\n\t            return {\n\t                type: 2 /* EOF */,\n\t                value: '',\n\t                lineNumber: this.lineNumber,\n\t                lineStart: this.lineStart,\n\t                start: this.index,\n\t                end: this.index\n\t            };\n\t        }\n\t        var cp = this.source.charCodeAt(this.index);\n\t        if (character_1.Character.isIdentifierStart(cp)) {\n\t            return this.scanIdentifier();\n\t        }\n\t        // Very common: ( and ) and ;\n\t        if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t            return this.scanPunctuator();\n\t        }\n\t        // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t        if (cp === 0x27 || cp === 0x22) {\n\t            return this.scanStringLiteral();\n\t        }\n\t        // Dot (.) U+002E can also start a floating-point number, hence the need\n\t        // to check the next character.\n\t        if (cp === 0x2E) {\n\t            if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t                return this.scanNumericLiteral();\n\t            }\n\t            return this.scanPunctuator();\n\t        }\n\t        if (character_1.Character.isDecimalDigit(cp)) {\n\t            return this.scanNumericLiteral();\n\t        }\n\t        // Template literals start with ` (U+0060) for template head\n\t        // or } (U+007D) for template middle or template tail.\n\t        if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t            return this.scanTemplate();\n\t        }\n\t        // Possible identifier start in a surrogate pair.\n\t        if (cp >= 0xD800 && cp < 0xDFFF) {\n\t            if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t                return this.scanIdentifier();\n\t            }\n\t        }\n\t        return this.scanPunctuator();\n\t    };\n\t    return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t    quot: '\\u0022',\n\t    amp: '\\u0026',\n\t    apos: '\\u0027',\n\t    gt: '\\u003E',\n\t    nbsp: '\\u00A0',\n\t    iexcl: '\\u00A1',\n\t    cent: '\\u00A2',\n\t    pound: '\\u00A3',\n\t    curren: '\\u00A4',\n\t    yen: '\\u00A5',\n\t    brvbar: '\\u00A6',\n\t    sect: '\\u00A7',\n\t    uml: '\\u00A8',\n\t    copy: '\\u00A9',\n\t    ordf: '\\u00AA',\n\t    laquo: '\\u00AB',\n\t    not: '\\u00AC',\n\t    shy: '\\u00AD',\n\t    reg: '\\u00AE',\n\t    macr: '\\u00AF',\n\t    deg: '\\u00B0',\n\t    plusmn: '\\u00B1',\n\t    sup2: '\\u00B2',\n\t    sup3: '\\u00B3',\n\t    acute: '\\u00B4',\n\t    micro: '\\u00B5',\n\t    para: '\\u00B6',\n\t    middot: '\\u00B7',\n\t    cedil: '\\u00B8',\n\t    sup1: '\\u00B9',\n\t    ordm: '\\u00BA',\n\t    raquo: '\\u00BB',\n\t    frac14: '\\u00BC',\n\t    frac12: '\\u00BD',\n\t    frac34: '\\u00BE',\n\t    iquest: '\\u00BF',\n\t    Agrave: '\\u00C0',\n\t    Aacute: '\\u00C1',\n\t    Acirc: '\\u00C2',\n\t    Atilde: '\\u00C3',\n\t    Auml: '\\u00C4',\n\t    Aring: '\\u00C5',\n\t    AElig: '\\u00C6',\n\t    Ccedil: '\\u00C7',\n\t    Egrave: '\\u00C8',\n\t    Eacute: '\\u00C9',\n\t    Ecirc: '\\u00CA',\n\t    Euml: '\\u00CB',\n\t    Igrave: '\\u00CC',\n\t    Iacute: '\\u00CD',\n\t    Icirc: '\\u00CE',\n\t    Iuml: '\\u00CF',\n\t    ETH: '\\u00D0',\n\t    Ntilde: '\\u00D1',\n\t    Ograve: '\\u00D2',\n\t    Oacute: '\\u00D3',\n\t    Ocirc: '\\u00D4',\n\t    Otilde: '\\u00D5',\n\t    Ouml: '\\u00D6',\n\t    times: '\\u00D7',\n\t    Oslash: '\\u00D8',\n\t    Ugrave: '\\u00D9',\n\t    Uacute: '\\u00DA',\n\t    Ucirc: '\\u00DB',\n\t    Uuml: '\\u00DC',\n\t    Yacute: '\\u00DD',\n\t    THORN: '\\u00DE',\n\t    szlig: '\\u00DF',\n\t    agrave: '\\u00E0',\n\t    aacute: '\\u00E1',\n\t    acirc: '\\u00E2',\n\t    atilde: '\\u00E3',\n\t    auml: '\\u00E4',\n\t    aring: '\\u00E5',\n\t    aelig: '\\u00E6',\n\t    ccedil: '\\u00E7',\n\t    egrave: '\\u00E8',\n\t    eacute: '\\u00E9',\n\t    ecirc: '\\u00EA',\n\t    euml: '\\u00EB',\n\t    igrave: '\\u00EC',\n\t    iacute: '\\u00ED',\n\t    icirc: '\\u00EE',\n\t    iuml: '\\u00EF',\n\t    eth: '\\u00F0',\n\t    ntilde: '\\u00F1',\n\t    ograve: '\\u00F2',\n\t    oacute: '\\u00F3',\n\t    ocirc: '\\u00F4',\n\t    otilde: '\\u00F5',\n\t    ouml: '\\u00F6',\n\t    divide: '\\u00F7',\n\t    oslash: '\\u00F8',\n\t    ugrave: '\\u00F9',\n\t    uacute: '\\u00FA',\n\t    ucirc: '\\u00FB',\n\t    uuml: '\\u00FC',\n\t    yacute: '\\u00FD',\n\t    thorn: '\\u00FE',\n\t    yuml: '\\u00FF',\n\t    OElig: '\\u0152',\n\t    oelig: '\\u0153',\n\t    Scaron: '\\u0160',\n\t    scaron: '\\u0161',\n\t    Yuml: '\\u0178',\n\t    fnof: '\\u0192',\n\t    circ: '\\u02C6',\n\t    tilde: '\\u02DC',\n\t    Alpha: '\\u0391',\n\t    Beta: '\\u0392',\n\t    Gamma: '\\u0393',\n\t    Delta: '\\u0394',\n\t    Epsilon: '\\u0395',\n\t    Zeta: '\\u0396',\n\t    Eta: '\\u0397',\n\t    Theta: '\\u0398',\n\t    Iota: '\\u0399',\n\t    Kappa: '\\u039A',\n\t    Lambda: '\\u039B',\n\t    Mu: '\\u039C',\n\t    Nu: '\\u039D',\n\t    Xi: '\\u039E',\n\t    Omicron: '\\u039F',\n\t    Pi: '\\u03A0',\n\t    Rho: '\\u03A1',\n\t    Sigma: '\\u03A3',\n\t    Tau: '\\u03A4',\n\t    Upsilon: '\\u03A5',\n\t    Phi: '\\u03A6',\n\t    Chi: '\\u03A7',\n\t    Psi: '\\u03A8',\n\t    Omega: '\\u03A9',\n\t    alpha: '\\u03B1',\n\t    beta: '\\u03B2',\n\t    gamma: '\\u03B3',\n\t    delta: '\\u03B4',\n\t    epsilon: '\\u03B5',\n\t    zeta: '\\u03B6',\n\t    eta: '\\u03B7',\n\t    theta: '\\u03B8',\n\t    iota: '\\u03B9',\n\t    kappa: '\\u03BA',\n\t    lambda: '\\u03BB',\n\t    mu: '\\u03BC',\n\t    nu: '\\u03BD',\n\t    xi: '\\u03BE',\n\t    omicron: '\\u03BF',\n\t    pi: '\\u03C0',\n\t    rho: '\\u03C1',\n\t    sigmaf: '\\u03C2',\n\t    sigma: '\\u03C3',\n\t    tau: '\\u03C4',\n\t    upsilon: '\\u03C5',\n\t    phi: '\\u03C6',\n\t    chi: '\\u03C7',\n\t    psi: '\\u03C8',\n\t    omega: '\\u03C9',\n\t    thetasym: '\\u03D1',\n\t    upsih: '\\u03D2',\n\t    piv: '\\u03D6',\n\t    ensp: '\\u2002',\n\t    emsp: '\\u2003',\n\t    thinsp: '\\u2009',\n\t    zwnj: '\\u200C',\n\t    zwj: '\\u200D',\n\t    lrm: '\\u200E',\n\t    rlm: '\\u200F',\n\t    ndash: '\\u2013',\n\t    mdash: '\\u2014',\n\t    lsquo: '\\u2018',\n\t    rsquo: '\\u2019',\n\t    sbquo: '\\u201A',\n\t    ldquo: '\\u201C',\n\t    rdquo: '\\u201D',\n\t    bdquo: '\\u201E',\n\t    dagger: '\\u2020',\n\t    Dagger: '\\u2021',\n\t    bull: '\\u2022',\n\t    hellip: '\\u2026',\n\t    permil: '\\u2030',\n\t    prime: '\\u2032',\n\t    Prime: '\\u2033',\n\t    lsaquo: '\\u2039',\n\t    rsaquo: '\\u203A',\n\t    oline: '\\u203E',\n\t    frasl: '\\u2044',\n\t    euro: '\\u20AC',\n\t    image: '\\u2111',\n\t    weierp: '\\u2118',\n\t    real: '\\u211C',\n\t    trade: '\\u2122',\n\t    alefsym: '\\u2135',\n\t    larr: '\\u2190',\n\t    uarr: '\\u2191',\n\t    rarr: '\\u2192',\n\t    darr: '\\u2193',\n\t    harr: '\\u2194',\n\t    crarr: '\\u21B5',\n\t    lArr: '\\u21D0',\n\t    uArr: '\\u21D1',\n\t    rArr: '\\u21D2',\n\t    dArr: '\\u21D3',\n\t    hArr: '\\u21D4',\n\t    forall: '\\u2200',\n\t    part: '\\u2202',\n\t    exist: '\\u2203',\n\t    empty: '\\u2205',\n\t    nabla: '\\u2207',\n\t    isin: '\\u2208',\n\t    notin: '\\u2209',\n\t    ni: '\\u220B',\n\t    prod: '\\u220F',\n\t    sum: '\\u2211',\n\t    minus: '\\u2212',\n\t    lowast: '\\u2217',\n\t    radic: '\\u221A',\n\t    prop: '\\u221D',\n\t    infin: '\\u221E',\n\t    ang: '\\u2220',\n\t    and: '\\u2227',\n\t    or: '\\u2228',\n\t    cap: '\\u2229',\n\t    cup: '\\u222A',\n\t    int: '\\u222B',\n\t    there4: '\\u2234',\n\t    sim: '\\u223C',\n\t    cong: '\\u2245',\n\t    asymp: '\\u2248',\n\t    ne: '\\u2260',\n\t    equiv: '\\u2261',\n\t    le: '\\u2264',\n\t    ge: '\\u2265',\n\t    sub: '\\u2282',\n\t    sup: '\\u2283',\n\t    nsub: '\\u2284',\n\t    sube: '\\u2286',\n\t    supe: '\\u2287',\n\t    oplus: '\\u2295',\n\t    otimes: '\\u2297',\n\t    perp: '\\u22A5',\n\t    sdot: '\\u22C5',\n\t    lceil: '\\u2308',\n\t    rceil: '\\u2309',\n\t    lfloor: '\\u230A',\n\t    rfloor: '\\u230B',\n\t    loz: '\\u25CA',\n\t    spades: '\\u2660',\n\t    clubs: '\\u2663',\n\t    hearts: '\\u2665',\n\t    diams: '\\u2666',\n\t    lang: '\\u27E8',\n\t    rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t    function Reader() {\n\t        this.values = [];\n\t        this.curly = this.paren = -1;\n\t    }\n\t    // A function following one of those tokens is an expression.\n\t    Reader.prototype.beforeFunctionExpression = function (t) {\n\t        return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t            'return', 'case', 'delete', 'throw', 'void',\n\t            // assignment operators\n\t            '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t            '&=', '|=', '^=', ',',\n\t            // binary/unary operators\n\t            '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t            '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t            '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t    };\n\t    // Determine if forward slash (/) is an operator or part of a regular expression\n\t    // https://github.com/mozilla/sweet.js/wiki/design\n\t    Reader.prototype.isRegexStart = function () {\n\t        var previous = this.values[this.values.length - 1];\n\t        var regex = (previous !== null);\n\t        switch (previous) {\n\t            case 'this':\n\t            case ']':\n\t                regex = false;\n\t                break;\n\t            case ')':\n\t                var keyword = this.values[this.paren - 1];\n\t                regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t                break;\n\t            case '}':\n\t                // Dividing a function by anything makes little sense,\n\t                // but we have to check for that.\n\t                regex = false;\n\t                if (this.values[this.curly - 3] === 'function') {\n\t                    // Anonymous function, e.g. function(){} /42\n\t                    var check = this.values[this.curly - 4];\n\t                    regex = check ? !this.beforeFunctionExpression(check) : false;\n\t                }\n\t                else if (this.values[this.curly - 4] === 'function') {\n\t                    // Named function, e.g. function f(){} /42/\n\t                    var check = this.values[this.curly - 5];\n\t                    regex = check ? !this.beforeFunctionExpression(check) : true;\n\t                }\n\t                break;\n\t            default:\n\t                break;\n\t        }\n\t        return regex;\n\t    };\n\t    Reader.prototype.push = function (token) {\n\t        if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t            if (token.value === '{') {\n\t                this.curly = this.values.length;\n\t            }\n\t            else if (token.value === '(') {\n\t                this.paren = this.values.length;\n\t            }\n\t            this.values.push(token.value);\n\t        }\n\t        else {\n\t            this.values.push(null);\n\t        }\n\t    };\n\t    return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t    function Tokenizer(code, config) {\n\t        this.errorHandler = new error_handler_1.ErrorHandler();\n\t        this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t        this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t        this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t        this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t        this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t        this.buffer = [];\n\t        this.reader = new Reader();\n\t    }\n\t    Tokenizer.prototype.errors = function () {\n\t        return this.errorHandler.errors;\n\t    };\n\t    Tokenizer.prototype.getNextToken = function () {\n\t        if (this.buffer.length === 0) {\n\t            var comments = this.scanner.scanComments();\n\t            if (this.scanner.trackComment) {\n\t                for (var i = 0; i < comments.length; ++i) {\n\t                    var e = comments[i];\n\t                    var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t                    var comment = {\n\t                        type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t                        value: value\n\t                    };\n\t                    if (this.trackRange) {\n\t                        comment.range = e.range;\n\t                    }\n\t                    if (this.trackLoc) {\n\t                        comment.loc = e.loc;\n\t                    }\n\t                    this.buffer.push(comment);\n\t                }\n\t            }\n\t            if (!this.scanner.eof()) {\n\t                var loc = void 0;\n\t                if (this.trackLoc) {\n\t                    loc = {\n\t                        start: {\n\t                            line: this.scanner.lineNumber,\n\t                            column: this.scanner.index - this.scanner.lineStart\n\t                        },\n\t                        end: {}\n\t                    };\n\t                }\n\t                var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t                var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t                this.reader.push(token);\n\t                var entry = {\n\t                    type: token_1.TokenName[token.type],\n\t                    value: this.scanner.source.slice(token.start, token.end)\n\t                };\n\t                if (this.trackRange) {\n\t                    entry.range = [token.start, token.end];\n\t                }\n\t                if (this.trackLoc) {\n\t                    loc.end = {\n\t                        line: this.scanner.lineNumber,\n\t                        column: this.scanner.index - this.scanner.lineStart\n\t                    };\n\t                    entry.loc = loc;\n\t                }\n\t                if (token.type === 9 /* RegularExpression */) {\n\t                    var pattern = token.pattern;\n\t                    var flags = token.flags;\n\t                    entry.regex = { pattern: pattern, flags: flags };\n\t                }\n\t                this.buffer.push(entry);\n\t            }\n\t        }\n\t        return this.buffer.shift();\n\t    };\n\t    return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;","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","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nexport default function(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  var size = 0;\n  this.each(function() { ++size; });\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","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","const createLoadedImage = (imageSrc) => new Promise((resolve) => {\n    const image = document.createElement(\"img\");\n    image.addEventListener(\"load\", () => resolve(image), { once: true });\n    image.src = imageSrc;\n});\nconst makeReactive = (object) => {\n    const reactiveObject = {};\n    Object.keys(object).forEach((key) => {\n        Object.defineProperty(reactiveObject, key, {\n            get() {\n                return object[key];\n            },\n            set(value) {\n                if (value == object[key]) {\n                    return;\n                }\n                requestAnimationFrame(FaviconOverlayManager.render);\n                return (object[key] = value);\n            },\n        });\n    });\n    return reactiveObject;\n};\nclass FaviconOverlay {\n    constructor(image) {\n        this._position = makeReactive({\n            x: 0,\n            y: 0,\n            centered: false,\n        });\n        this.image = image;\n    }\n    get position() {\n        return this._position;\n    }\n    set position(value) {\n        Object.assign(this._position, value);\n    }\n}\nexport class FaviconOverlayManager {\n    constructor(image) {\n        this.image = image;\n        throw new Error(\"THIS BLOWS UP! DONT DO IT!\");\n    }\n    static setFaviconOverlay(imageUrl) {\n        return createLoadedImage(imageUrl).then((overlayImage) => {\n            FaviconOverlayManager.overlays = [new FaviconOverlay(overlayImage)];\n            requestAnimationFrame(FaviconOverlayManager.render);\n        });\n    }\n    static resetFaviconOverlay() {\n        FaviconOverlayManager.overlays = [];\n        requestAnimationFrame(FaviconOverlayManager.render);\n    }\n    static get isInitialized() {\n        return Boolean(FaviconOverlayManager.canvas);\n    }\n    static get faviconUrl() {\n        const { faviconElement } = FaviconOverlayManager;\n        const url = faviconElement.dataset.originalHref;\n        if (url) {\n            return url;\n        }\n        return (faviconElement.dataset.originalHref = faviconElement.href);\n    }\n    static getOverlay(idx) {\n        return FaviconOverlayManager.overlays[idx];\n    }\n    static initialize({ faviconSelector = 'link[rel=\"icon\"]', } = {}) {\n        if (FaviconOverlayManager.isInitialized) {\n            return Promise.resolve();\n        }\n        FaviconOverlayManager.canvas = document.createElement(\"canvas\");\n        FaviconOverlayManager.faviconElement = document.querySelector(faviconSelector);\n        return createLoadedImage(FaviconOverlayManager.faviconUrl).then((image) => {\n            FaviconOverlayManager.canvas.width = image.width;\n            FaviconOverlayManager.canvas.height = image.height;\n            FaviconOverlayManager.faviconImage = image;\n        });\n    }\n    static render() {\n        const { overlays, faviconImage, faviconElement, canvas, } = FaviconOverlayManager;\n        if (!overlays.length) {\n            faviconElement.href = faviconElement.dataset.originalHref;\n            return;\n        }\n        const context = canvas.getContext(\"2d\");\n        context.clearRect(0, 0, faviconImage.width, faviconImage.height);\n        context.drawImage(faviconImage, 0, 0, faviconImage.width, faviconImage.height, 0, 0, faviconImage.width, faviconImage.height);\n        overlays.forEach((overlay) => {\n            let { x, y } = overlay.position;\n            if (overlay.position.centered) {\n                x -= overlay.image.width / 2;\n                y -= overlay.image.height / 2;\n            }\n            context.drawImage(overlay.image, 0, 0, overlay.image.width, overlay.image.height, x, y, overlay.image.width, overlay.image.height);\n        });\n        faviconElement.href = canvas.toDataURL();\n    }\n}\nFaviconOverlayManager.canvas = null;\nFaviconOverlayManager.faviconElement = null;\nFaviconOverlayManager.faviconImage = null;\nFaviconOverlayManager.overlays = [];\n","import { FaviconOverlayManager } from '@gitlab/favicon-overlay';\nimport { memoize } from 'lodash';\n\n// FaviconOverlayManager is a glorious singleton/static class. Let's start to encapsulate that with this helper.\nconst getDefaultFaviconManager = memoize(async () => {\n  await FaviconOverlayManager.initialize({ faviconSelector: '#favicon' });\n\n  return FaviconOverlayManager;\n});\n\nexport const setFaviconOverlay = async (path) => {\n  const manager = await getDefaultFaviconManager();\n\n  manager.setFaviconOverlay(path);\n};\n\nexport const resetFavicon = async () => {\n  const manager = await getDefaultFaviconManager();\n\n  manager.resetFaviconOverlay();\n};\n\n/**\n * Clears the cached memoization of the default manager.\n *\n * This is needed for determinism in tests.\n */\nexport const clearMemoizeCache = () => {\n  getDefaultFaviconManager.cache.clear();\n};\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ReadyToMergeMergeRequest\"},\"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\":\"detailedMergeStatus\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"autoMergeEnabled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shouldRemoveSourceBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"forceRemoveSourceBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"defaultMergeCommitMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"defaultSquashCommitMessage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"squash\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"squashOnMerge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"availableAutoMergeStrategies\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasCi\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeable\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeWhenPipelineSucceeds\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commitCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"diffHeadSha\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removeSourceBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"updateMergeRequest\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeError\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commitsWithoutMergeCommits\"},\"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\":\"sha\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shortId\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"message\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"headPipeline\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"active\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":624}};\n    doc.loc.source = {\"body\":\"fragment ReadyToMergeMergeRequest on MergeRequest {\\n  id\\n  detailedMergeStatus\\n  autoMergeEnabled\\n  shouldRemoveSourceBranch\\n  forceRemoveSourceBranch\\n  defaultMergeCommitMessage\\n  defaultSquashCommitMessage\\n  squash\\n  squashOnMerge\\n  availableAutoMergeStrategies\\n  hasCi\\n  mergeable\\n  mergeWhenPipelineSucceeds\\n  commitCount\\n  diffHeadSha\\n  userPermissions {\\n    canMerge\\n    removeSourceBranch\\n    updateMergeRequest\\n  }\\n  targetBranch\\n  mergeError\\n  commitsWithoutMergeCommits {\\n    nodes {\\n      id\\n      sha\\n      shortId\\n      title\\n      message\\n    }\\n  }\\n  headPipeline {\\n    id\\n    status\\n    path\\n    active\\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[\"ReadyToMergeMergeRequest\"] = oneQuery(doc, \"ReadyToMergeMergeRequest\");\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","import eventHubFactory from '~/helpers/event_hub_factory';\n\nexport default eventHubFactory();\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n(function (root, factory) {\n  var namespace = 'VirtualList';\n  /* istanbul ignore next */\n\n  if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object') {\n    module.exports = factory(namespace, require('vue'));\n  } else if (typeof define === 'function' && define.amd) {\n    define(['vue'], factory.bind(root, namespace));\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    exports[namespace] = factory(namespace, require('vue'));\n  } else {\n    root[namespace] = factory(namespace, root.Vue);\n  }\n})(this, function (namespace, Vue) {\n  /* istanbul ignore next */\n  if (_typeof(Vue) === 'object' && typeof Vue[\"default\"] === 'function') {\n    Vue = Vue[\"default\"];\n  }\n  /* istanbul ignore next */\n\n\n  var _debounce = function _debounce(func, wait, immediate) {\n    var timeout;\n    return function () {\n      var context = this;\n      var args = arguments;\n\n      var later = function later() {\n        timeout = null;\n\n        if (!immediate) {\n          func.apply(context, args);\n        }\n      };\n\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n\n      if (callNow) {\n        func.apply(context, args);\n      }\n    };\n  };\n\n  return Vue.component(namespace, {\n    props: {\n      size: {\n        type: Number,\n        required: true\n      },\n      remain: {\n        type: Number,\n        required: true\n      },\n      rtag: {\n        type: String,\n        \"default\": 'div'\n      },\n      wtag: {\n        type: String,\n        \"default\": 'div'\n      },\n      wclass: {\n        type: String,\n        \"default\": ''\n      },\n      wstyle: {\n        type: Object,\n        \"default\": function _default() {\n          return {};\n        }\n      },\n      pagemode: {\n        type: Boolean,\n        \"default\": false\n      },\n      scrollelement: {\n        type: typeof window === 'undefined' ? Object : HTMLElement,\n        \"default\": null\n      },\n      start: {\n        type: Number,\n        \"default\": 0\n      },\n      offset: {\n        type: Number,\n        \"default\": 0\n      },\n      variable: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      bench: {\n        type: Number,\n        \"default\": 0 // also equal to remain\n\n      },\n      debounce: {\n        type: Number,\n        \"default\": 0\n      },\n      totop: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      tobottom: {\n        type: [Function, Boolean],\n        \"default\": false\n      },\n      onscroll: {\n        type: [Function, Boolean],\n        // Boolean disables default behavior\n        \"default\": false\n      },\n      istable: {\n        type: Boolean,\n        \"default\": false\n      },\n      item: {\n        type: [Function, Object],\n        \"default\": null\n      },\n      itemcount: {\n        type: Number,\n        \"default\": 0\n      },\n      itemprops: {\n        type: Function,\n\n        /* istanbul ignore next */\n        \"default\": function _default() {}\n      }\n    },\n    // use changeProp to identify the prop change.\n    watch: {\n      size: function size() {\n        this.changeProp = 'size';\n      },\n      remain: function remain() {\n        this.changeProp = 'remain';\n      },\n      bench: function bench() {\n        this.changeProp = 'bench';\n        this.itemModeForceRender();\n      },\n      start: function start() {\n        this.changeProp = 'start';\n        this.itemModeForceRender();\n      },\n      offset: function offset() {\n        this.changeProp = 'offset';\n        this.itemModeForceRender();\n      },\n      itemcount: function itemcount() {\n        this.changeProp = 'itemcount';\n        this.itemModeForceRender();\n      },\n      scrollelement: function scrollelement(newScrollelement, oldScrollelement) {\n        if (this.pagemode) {\n          return;\n        }\n\n        if (oldScrollelement) {\n          this.removeScrollListener(oldScrollelement);\n        }\n\n        if (newScrollelement) {\n          this.addScrollListener(newScrollelement);\n        }\n      }\n    },\n    created: function created() {\n      var start = this.start >= this.remain ? this.start : 0;\n      var keeps = this.remain + (this.bench || this.remain);\n      var delta = Object.create(null);\n      delta.direction = ''; // current scroll direction, D: down, U: up.\n\n      delta.scrollTop = 0; // current scroll top, use to direction.\n\n      delta.start = start; // start index.\n\n      delta.end = start + keeps - 1; // end index.\n\n      delta.keeps = keeps; // nums keeping in real dom.\n\n      delta.total = 0; // all items count, update in filter.\n\n      delta.offsetAll = 0; // cache all the scrollable offset.\n\n      delta.paddingTop = 0; // container wrapper real padding-top.\n\n      delta.paddingBottom = 0; // container wrapper real padding-bottom.\n\n      delta.varCache = {}; // object to cache variable index height and scroll offset.\n\n      delta.varAverSize = 0; // average/estimate item height before variable be calculated.\n\n      delta.varLastCalcIndex = 0; // last calculated variable height/offset index, always increase.\n\n      this.delta = delta;\n    },\n    mounted: function mounted() {\n      if (this.pagemode) {\n        this.addScrollListener(window);\n      } else if (this.scrollelement) {\n        this.addScrollListener(this.scrollelement);\n      }\n\n      if (this.start) {\n        var start = this.getZone(this.start).start;\n        this.setScrollTop(this.variable ? this.getVarOffset(start) : start * this.size);\n      } else if (this.offset) {\n        this.setScrollTop(this.offset);\n      }\n    },\n    beforeDestroy: function beforeDestroy() {\n      if (this.pagemode) {\n        this.removeScrollListener(window);\n      } else if (this.scrollelement) {\n        this.removeScrollListener(this.scrollelement);\n      }\n    },\n    // check if delta should update when props change.\n    beforeUpdate: function beforeUpdate() {\n      var delta = this.delta;\n      delta.keeps = this.remain + (this.bench || this.remain);\n      var calcstart = this.changeProp === 'start' ? this.start : delta.start;\n      var zone = this.getZone(calcstart); // if start, size or offset change, update scroll position.\n\n      if (this.changeProp && ['start', 'size', 'offset'].includes(this.changeProp)) {\n        var scrollTop = this.changeProp === 'offset' ? this.offset : this.variable ? this.getVarOffset(zone.isLast ? delta.total : zone.start) : zone.isLast && delta.total - calcstart <= this.remain ? delta.total * this.size : calcstart * this.size;\n        this.$nextTick(this.setScrollTop.bind(this, scrollTop));\n      } // if points out difference, force update once again.\n\n\n      if (this.changeProp || delta.end !== zone.end || calcstart !== zone.start) {\n        this.changeProp = '';\n        delta.end = zone.end;\n        delta.start = zone.start;\n        this.forceRender();\n      }\n    },\n    methods: {\n      // add pagemode/scrollelement scroll event listener\n      addScrollListener: function addScrollListener(element) {\n        this.scrollHandler = this.debounce ? _debounce(this.onScroll.bind(this), this.debounce) : this.onScroll;\n        element.addEventListener('scroll', this.scrollHandler, false);\n      },\n      // remove pagemode/scrollelement scroll event listener\n      removeScrollListener: function removeScrollListener(element) {\n        element.removeEventListener('scroll', this.scrollHandler, false);\n      },\n      onScroll: function onScroll(event) {\n        var delta = this.delta;\n        var vsl = this.$refs.vsl;\n        var offset;\n\n        if (this.pagemode) {\n          var elemRect = this.$el.getBoundingClientRect();\n          offset = -elemRect.top;\n        } else if (this.scrollelement) {\n          var scrollelementRect = this.scrollelement.getBoundingClientRect();\n\n          var _elemRect = this.$el.getBoundingClientRect();\n\n          offset = scrollelementRect.top - _elemRect.top;\n        } else {\n          offset = vsl && (vsl.$el || vsl).scrollTop || 0;\n        }\n\n        delta.direction = offset > delta.scrollTop ? 'D' : 'U';\n        delta.scrollTop = offset;\n\n        if (delta.total > delta.keeps) {\n          this.updateZone(offset);\n        } else {\n          delta.end = delta.total - 1;\n        }\n\n        var offsetAll = delta.offsetAll;\n\n        if (this.onscroll) {\n          var param = Object.create(null);\n          param.offset = offset;\n          param.offsetAll = offsetAll;\n          param.start = delta.start;\n          param.end = delta.end;\n          this.onscroll(event, param);\n        }\n\n        if (!offset && delta.total) {\n          this.fireEvent('totop');\n        }\n\n        if (offset >= offsetAll) {\n          this.fireEvent('tobottom');\n        }\n      },\n      // update render zone by scroll offset.\n      updateZone: function updateZone(offset) {\n        var delta = this.delta;\n        var overs = this.variable ? this.getVarOvers(offset) : Math.floor(offset / this.size); // if scroll up, we'd better decrease it's numbers.\n\n        if (delta.direction === 'U') {\n          overs = overs - this.remain + 1;\n        }\n\n        var zone = this.getZone(overs);\n        var bench = this.bench || this.remain; // for better performance, if scroll passes items within the bench, do not update.\n        // and if it's close to the last item, render next zone immediately.\n\n        var shouldRenderNextZone = Math.abs(overs - delta.start - bench) === 1;\n\n        if (!shouldRenderNextZone && overs - delta.start <= bench && !zone.isLast && overs > delta.start) {\n          return;\n        } // make sure forceRender calls as less as possible.\n\n\n        if (shouldRenderNextZone || zone.start !== delta.start || zone.end !== delta.end) {\n          delta.end = zone.end;\n          delta.start = zone.start;\n          this.forceRender();\n        }\n      },\n      // return the right zone info based on `start/index`.\n      getZone: function getZone(index) {\n        var start, end;\n        var delta = this.delta;\n        index = parseInt(index, 10);\n        index = Math.max(0, index);\n        var lastStart = delta.total - delta.keeps;\n        var isLast = index <= delta.total && index >= lastStart || index > delta.total;\n\n        if (isLast) {\n          start = Math.max(0, lastStart);\n        } else {\n          start = index;\n        }\n\n        end = start + delta.keeps - 1;\n\n        if (delta.total && end > delta.total) {\n          end = delta.total - 1;\n        }\n\n        return {\n          end: end,\n          start: start,\n          isLast: isLast\n        };\n      },\n      // public method, force render ui list if needed.\n      // call this before the next rerender to get better performance.\n      forceRender: function forceRender() {\n        var _this = this;\n\n        window.requestAnimationFrame(function () {\n          _this.$forceUpdate();\n        });\n      },\n      // force render ui if using item-mode.\n      itemModeForceRender: function itemModeForceRender() {\n        if (this.item) {\n          this.forceRender();\n        }\n      },\n      // return the scroll of passed items count in variable.\n      getVarOvers: function getVarOvers(offset) {\n        var low = 0;\n        var middle = 0;\n        var middleOffset = 0;\n        var delta = this.delta;\n        var high = delta.total;\n\n        while (low <= high) {\n          middle = low + Math.floor((high - low) / 2);\n          middleOffset = this.getVarOffset(middle); // calculate the average variable height at first binary search.\n\n          if (!delta.varAverSize) {\n            delta.varAverSize = Math.floor(middleOffset / middle);\n          }\n\n          if (middleOffset === offset) {\n            return middle;\n          } else if (middleOffset < offset) {\n            low = middle + 1;\n          } else if (middleOffset > offset) {\n            high = middle - 1;\n          }\n        }\n\n        return low > 0 ? --low : 0;\n      },\n      // return a variable scroll offset from given index.\n      getVarOffset: function getVarOffset(index, nocache) {\n        var delta = this.delta;\n        var cache = delta.varCache[index];\n\n        if (!nocache && cache) {\n          return cache.offset;\n        }\n\n        var offset = 0;\n\n        for (var i = 0; i < index; i++) {\n          var size = this.getVarSize(i, nocache);\n          delta.varCache[i] = {\n            size: size,\n            offset: offset\n          };\n          offset += size;\n        }\n\n        delta.varLastCalcIndex = Math.max(delta.varLastCalcIndex, index - 1);\n        delta.varLastCalcIndex = Math.min(delta.varLastCalcIndex, delta.total - 1);\n        return offset;\n      },\n      // return a variable size (height) from given index.\n      getVarSize: function getVarSize(index, nocache) {\n        var cache = this.delta.varCache[index];\n\n        if (!nocache && cache) {\n          return cache.size;\n        }\n\n        if (typeof this.variable === 'function') {\n          return this.variable(index) || 0;\n        } else {\n          // when using item, it can only get current components height,\n          // need to be enhanced, or consider using variable-function instead\n          var slot = this.item ? this.$children[index] ? this.$children[index].$vnode : null : this.$slots[\"default\"][index];\n          var style = slot && slot.data && slot.data.style;\n\n          if (style && style.height) {\n            var shm = style.height.match(/^(.*)px$/);\n            return shm && +shm[1] || 0;\n          }\n        }\n\n        return 0;\n      },\n      // return the variable paddingTop based on current zone.\n      // @todo: if set a large `start` before variable was calculated,\n      // here will also case too much offset calculate when list is very large,\n      // consider use estimate paddingTop in this case just like `getVarPaddingBottom`.\n      getVarPaddingTop: function getVarPaddingTop() {\n        return this.getVarOffset(this.delta.start);\n      },\n      // return the variable paddingBottom based on the current zone.\n      getVarPaddingBottom: function getVarPaddingBottom() {\n        var delta = this.delta;\n        var last = delta.total - 1;\n\n        if (delta.total - delta.end <= delta.keeps || delta.varLastCalcIndex === last) {\n          return this.getVarOffset(last) - this.getVarOffset(delta.end);\n        } else {\n          // if unreached last zone or uncalculated real behind offset\n          // return the estimate paddingBottom and avoid too much calculations.\n          return (delta.total - delta.end) * (delta.varAverSize || this.size);\n        }\n      },\n      // return the variable all heights use to judge reach bottom.\n      getVarAllHeight: function getVarAllHeight() {\n        var delta = this.delta;\n\n        if (delta.total - delta.end <= delta.keeps || delta.varLastCalcIndex === delta.total - 1) {\n          return this.getVarOffset(delta.total);\n        } else {\n          return this.getVarOffset(delta.start) + (delta.total - delta.end) * (delta.varAverSize || this.size);\n        }\n      },\n      // public method, allow the parent update variable by index.\n      updateVariable: function updateVariable(index) {\n        // clear/update all the offsets and heights ahead of index.\n        this.getVarOffset(index, true);\n      },\n      // trigger a props event on parent.\n      fireEvent: function fireEvent(event) {\n        if (this[event]) {\n          this[event]();\n        }\n      },\n      // set manual scroll top.\n      setScrollTop: function setScrollTop(scrollTop) {\n        if (this.pagemode) {\n          window.scrollTo(0, scrollTop);\n        } else if (this.scrollelement) {\n          this.scrollelement.scrollTo(0, scrollTop);\n        } else {\n          var vsl = this.$refs.vsl;\n\n          if (vsl) {\n            (vsl.$el || vsl).scrollTop = scrollTop;\n          }\n        }\n      },\n      // filter the shown items based on `start` and `end`.\n      filter: function filter(h) {\n        var delta = this.delta;\n        var slots = this.$slots[\"default\"] || []; // item-mode should be decided from items prop.\n\n        if (this.item || this.$scopedSlots.item) {\n          delta.total = this.itemcount;\n\n          if (delta.keeps > delta.total) {\n            delta.end = delta.total - 1;\n          }\n        } else {\n          if (!slots.length) {\n            delta.start = 0;\n          }\n\n          delta.total = slots.length;\n        }\n\n        var paddingTop, paddingBottom, allHeight;\n        var hasPadding = delta.total > delta.keeps;\n\n        if (this.variable) {\n          allHeight = this.getVarAllHeight();\n          paddingTop = hasPadding ? this.getVarPaddingTop() : 0;\n          paddingBottom = hasPadding ? this.getVarPaddingBottom() : 0;\n        } else {\n          allHeight = this.size * delta.total;\n          paddingTop = this.size * (hasPadding ? delta.start : 0);\n          paddingBottom = this.size * (hasPadding ? delta.total - delta.keeps : 0) - paddingTop;\n        }\n\n        if (paddingBottom < this.size) {\n          paddingBottom = 0;\n        }\n\n        delta.paddingTop = paddingTop;\n        delta.paddingBottom = paddingBottom;\n        delta.offsetAll = allHeight - this.size * this.remain;\n        var renders = [];\n\n        for (var i = delta.start; i < delta.total && i <= Math.ceil(delta.end); i++) {\n          var slot = null;\n\n          if (this.$scopedSlots.item) {\n            slot = this.$scopedSlots.item(i);\n          } else if (this.item) {\n            slot = h(this.item, this.itemprops(i));\n          } else {\n            slot = slots[i];\n          }\n\n          renders.push(slot);\n        }\n\n        return renders;\n      }\n    },\n    render: function render(h) {\n      var dbc = this.debounce;\n      var list = this.filter(h);\n      var _this$delta = this.delta,\n          paddingTop = _this$delta.paddingTop,\n          paddingBottom = _this$delta.paddingBottom;\n      var istable = this.istable;\n      var wtag = istable ? 'div' : this.wtag;\n      var rtag = istable ? 'div' : this.rtag;\n\n      if (istable) {\n        list = [h('table', [h('tbody', list)])];\n      }\n\n      var renderList = h(wtag, {\n        style: Object.assign({\n          display: 'block',\n          'padding-top': paddingTop + 'px',\n          'padding-bottom': paddingBottom + 'px'\n        }, this.wstyle),\n        \"class\": this.wclass,\n        attrs: {\n          role: 'group'\n        }\n      }, list); // page mode just render list, no wrapper.\n\n      if (this.pagemode || this.scrollelement) {\n        return renderList;\n      }\n\n      return h(rtag, {\n        ref: 'vsl',\n        style: {\n          display: 'block',\n          'overflow-y': this.size >= this.remain ? 'auto' : 'initial',\n          height: this.size * this.remain + 'px'\n        },\n        on: {\n          '&scroll': dbc ? _debounce(this.onScroll.bind(this), dbc) : this.onScroll\n        }\n      }, [renderList]);\n    }\n  });\n});","import ClipboardJS from 'clipboard';\nimport { DEBOUNCE_DROPDOWN_DELAY } from '~/sidebar/components/labels/labels_select_widget/constants';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { s__ } from '~/locale';\nimport Sidebar from '~/right_sidebar';\nimport {\n  ISSUE_MR_CHANGE_ASSIGNEE,\n  ISSUE_MR_CHANGE_MILESTONE,\n  ISSUABLE_CHANGE_LABEL,\n  ISSUABLE_EDIT_DESCRIPTION,\n  MR_COPY_SOURCE_BRANCH_NAME,\n  ISSUABLE_COPY_REF,\n} from './keybindings';\n\nexport default class ShortcutsIssuable {\n  constructor(shortcuts) {\n    this.branchInMemoryButton = document.createElement('button');\n    this.branchClipboardInstance = new ClipboardJS(this.branchInMemoryButton);\n    this.branchClipboardInstance.on('success', () => {\n      toast(s__('GlobalShortcuts|Copied source branch name to clipboard.'));\n    });\n    this.branchClipboardInstance.on('error', () => {\n      toast(s__('GlobalShortcuts|Unable to copy the source branch name at this time.'));\n    });\n\n    this.refInMemoryButton = document.createElement('button');\n    this.refClipboardInstance = new ClipboardJS(this.refInMemoryButton);\n    this.refClipboardInstance.on('success', () => {\n      toast(s__('GlobalShortcuts|Copied reference to clipboard.'));\n    });\n    this.refClipboardInstance.on('error', () => {\n      toast(s__('GlobalShortcuts|Unable to copy the reference at this time.'));\n    });\n\n    shortcuts.addAll([\n      [ISSUE_MR_CHANGE_ASSIGNEE, () => ShortcutsIssuable.openSidebarDropdown('assignee')],\n      [ISSUE_MR_CHANGE_MILESTONE, () => ShortcutsIssuable.openSidebarDropdown('milestone')],\n      [ISSUABLE_CHANGE_LABEL, () => ShortcutsIssuable.openSidebarDropdown('labels')],\n      [ISSUABLE_EDIT_DESCRIPTION, ShortcutsIssuable.editIssue],\n      [MR_COPY_SOURCE_BRANCH_NAME, () => this.copyBranchName()],\n      [ISSUABLE_COPY_REF, () => this.copyIssuableRef()],\n    ]);\n  }\n\n  static editIssue() {\n    // Need to click the element as on issues, editing is inline\n    // on merge request, editing is on a different page\n    document.querySelector('.js-issuable-edit').click();\n\n    return false;\n  }\n\n  static openSidebarDropdown(name) {\n    Sidebar.instance.openDropdown(name);\n    // Wait for the sidebar to trigger('click') open\n    // so it doesn't cause our dropdown to close preemptively\n    setTimeout(() => {\n      const editBtn =\n        document.querySelector(`.block.${name} .shortcut-sidebar-dropdown-toggle`) ||\n        document.querySelector(`.block.${name} .edit-link`);\n      editBtn.click();\n    }, DEBOUNCE_DROPDOWN_DELAY);\n    return false;\n  }\n\n  async copyBranchName() {\n    const button = document.querySelector('.js-source-branch-copy');\n    const branchName = button?.dataset.clipboardText;\n\n    if (branchName) {\n      this.branchInMemoryButton.dataset.clipboardText = branchName;\n\n      this.branchInMemoryButton.dispatchEvent(new CustomEvent('click'));\n    }\n  }\n\n  async copyIssuableRef() {\n    const refButton = document.querySelector('.js-copy-reference');\n    const copiedRef = refButton?.dataset.clipboardText;\n\n    if (copiedRef) {\n      this.refInMemoryButton.dataset.clipboardText = copiedRef;\n\n      this.refInMemoryButton.dispatchEvent(new CustomEvent('click'));\n    }\n  }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-header-info\"},[(_vm.hasAuthor)?[(_vm.emailParticipant)?_c('span',{staticClass:\"note-header-author-name gl-font-bold\",attrs:{\"data-testid\":\"author-name\"},domProps:{\"textContent\":_vm._s(_vm.authorName)}}):_c('a',{ref:\"authorNameLink\",class:_vm.authorLinkClasses,attrs:{\"href\":_vm.authorHref,\"data-user-id\":_vm.authorId,\"data-username\":_vm.author.username}},[_c('span',{staticClass:\"note-header-author-name gl-font-bold\",attrs:{\"data-testid\":\"author-name\"},domProps:{\"textContent\":_vm._s(_vm.authorName)}})]),_vm._v(\" \"),(!_vm.isSystemNote && !_vm.emailParticipant)?_c('span',{staticClass:\"text-nowrap author-username gl-truncate\"},[_c('a',{ref:\"authorUsernameLink\",staticClass:\"author-username-link\",attrs:{\"href\":_vm.authorHref},on:{\"mouseenter\":_vm.handleUsernameMouseEnter,\"mouseleave\":_vm.handleUsernameMouseLeave}},[_c('span',{staticClass:\"note-headline-light gl-hidden md:gl-inline\"},[_vm._v(\"@\"+_vm._s(_vm.author.username))])]),_vm._v(\" \"),_vm._t(\"note-header-info\")],2):_vm._e(),_vm._v(\" \"),(_vm.emailParticipant)?_c('span',{staticClass:\"note-headline-light\"},[_vm._v(_vm._s(_vm.__('(external participant)')))]):_vm._e()]:_c('span',[_vm._v(_vm._s(_vm.__('A deleted user')))]),_vm._v(\" \"),_c('span',{staticClass:\"note-headline-light note-headline-meta\"},[_c('span',{staticClass:\"system-note-message\",attrs:{\"data-testid\":\"system-note-content\"}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.createdAt)?[_c('span',{ref:\"actionText\",staticClass:\"system-note-separator\"},[(_vm.actionText)?[_vm._v(_vm._s(_vm.actionText))]:_vm._e()],2),_vm._v(\" \"),(_vm.noteTimestampLink)?_c('a',{ref:\"noteTimestampLink\",staticClass:\"note-timestamp system-note-separator\",attrs:{\"href\":_vm.noteTimestampLink},on:{\"click\":_vm.updateTargetNoteHash}},[_c('time-ago-tooltip',{attrs:{\"time\":_vm.createdAt,\"tooltip-placement\":\"bottom\"}})],1):_c('time-ago-tooltip',{ref:\"noteTimestamp\",attrs:{\"time\":_vm.createdAt,\"tooltip-placement\":\"bottom\"}})]:_vm._e(),_vm._v(\" \"),(_vm.isImported)?[(_vm.isSystemNote)?_c('span',[_vm._v(\"·\")]):_vm._e(),_vm._v(\" \"),_c('imported-badge',{attrs:{\"text-only\":_vm.isSystemNote,\"importable-type\":_vm.importableType}})]:_vm._e(),_vm._v(\" \"),(_vm.isInternalNote)?_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip:tooltipcontainer.bottom\",arg:\"tooltipcontainer\",modifiers:{\"bottom\":true}}],staticClass:\"gl-ml-2\",attrs:{\"data-testid\":\"internal-note-indicator\",\"variant\":\"warning\",\"title\":_vm.internalNoteTooltip}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Internal note'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"extra-controls\"),_vm._v(\" \"),(_vm.showSpinner)?_c('gl-loading-icon',{ref:\"spinner\",staticClass:\"editing-spinner\",attrs:{\"size\":\"sm\",\"label\":_vm.__('Comment is being updated')}}):_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_header.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport { isGid, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPE_ACTIVITY, TYPE_COMMENT } from '~/import/constants';\nimport { s__ } from '~/locale';\nimport ImportedBadge from '~/vue_shared/components/imported_badge.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\n\nexport default {\n  components: {\n    ImportedBadge,\n    TimeAgoTooltip,\n    GlBadge,\n    GlLoadingIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    author: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    createdAt: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    actionText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    noteId: {\n      type: [String, Number],\n      required: false,\n      default: null,\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showSpinner: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    isInternalNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isImported: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isSystemNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    noteUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    emailParticipant: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      isUsernameLinkHovered: false,\n    };\n  },\n  computed: {\n    authorId() {\n      return getIdFromGraphQLId(this.author.id);\n    },\n    authorHref() {\n      return this.author.path || this.author.webUrl;\n    },\n    noteTimestampLink() {\n      if (this.noteUrl) return this.noteUrl;\n\n      if (this.noteId) {\n        let { noteId } = this;\n\n        if (isGid(noteId)) noteId = getIdFromGraphQLId(noteId);\n\n        return `#note_${noteId}`;\n      }\n\n      return undefined;\n    },\n    hasAuthor() {\n      return this.author && Object.keys(this.author).length;\n    },\n    isServiceDeskEmailParticipant() {\n      return (\n        !this.isInternalNote && this.author.username === 'support-bot' && this.emailParticipant\n      );\n    },\n    authorLinkClasses() {\n      return {\n        hover: this.isUsernameLinkHovered,\n        'text-underline': this.isUsernameLinkHovered,\n        'author-name-link': true,\n        'js-user-link': true,\n        'gl-overflow-hidden': true,\n        'gl-break-words': true,\n      };\n    },\n    authorName() {\n      return this.isServiceDeskEmailParticipant ? this.emailParticipant : this.author.name;\n    },\n    internalNoteTooltip() {\n      return s__('Notes|This internal note will always remain confidential');\n    },\n    importableType() {\n      return this.isSystemNote ? TYPE_ACTIVITY : TYPE_COMMENT;\n    },\n  },\n  methods: {\n    ...mapActions(['setTargetNoteHash']),\n    updateTargetNoteHash() {\n      if (this.$store) {\n        this.setTargetNoteHash(this.noteTimestampLink);\n      }\n    },\n    handleUsernameMouseEnter() {\n      this.$refs.authorNameLink.dispatchEvent(new Event('mouseenter'));\n      this.isUsernameLinkHovered = true;\n    },\n    handleUsernameMouseLeave() {\n      this.$refs.authorNameLink.dispatchEvent(new Event('mouseleave'));\n      this.isUsernameLinkHovered = false;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-header-info\">\n    <template v-if=\"hasAuthor\">\n      <span\n        v-if=\"emailParticipant\"\n        class=\"note-header-author-name gl-font-bold\"\n        data-testid=\"author-name\"\n        v-text=\"authorName\"\n      ></span>\n      <a\n        v-else\n        ref=\"authorNameLink\"\n        :href=\"authorHref\"\n        :class=\"authorLinkClasses\"\n        :data-user-id=\"authorId\"\n        :data-username=\"author.username\"\n      >\n        <span\n          class=\"note-header-author-name gl-font-bold\"\n          data-testid=\"author-name\"\n          v-text=\"authorName\"\n        ></span>\n      </a>\n      <span\n        v-if=\"!isSystemNote && !emailParticipant\"\n        class=\"text-nowrap author-username gl-truncate\"\n      >\n        <a\n          ref=\"authorUsernameLink\"\n          class=\"author-username-link\"\n          :href=\"authorHref\"\n          @mouseenter=\"handleUsernameMouseEnter\"\n          @mouseleave=\"handleUsernameMouseLeave\"\n          ><span class=\"note-headline-light gl-hidden md:gl-inline\">@{{ author.username }}</span>\n        </a>\n        <slot name=\"note-header-info\"></slot>\n      </span>\n      <span v-if=\"emailParticipant\" class=\"note-headline-light\">{{\n        __('(external participant)')\n      }}</span>\n    </template>\n    <span v-else>{{ __('A deleted user') }}</span>\n    <span class=\"note-headline-light note-headline-meta\">\n      <span class=\"system-note-message\" data-testid=\"system-note-content\">\n        <slot></slot>\n      </span>\n      <template v-if=\"createdAt\">\n        <span ref=\"actionText\" class=\"system-note-separator\">\n          <template v-if=\"actionText\">{{ actionText }}</template>\n        </span>\n        <a\n          v-if=\"noteTimestampLink\"\n          ref=\"noteTimestampLink\"\n          :href=\"noteTimestampLink\"\n          class=\"note-timestamp system-note-separator\"\n          @click=\"updateTargetNoteHash\"\n        >\n          <time-ago-tooltip :time=\"createdAt\" tooltip-placement=\"bottom\" />\n        </a>\n        <time-ago-tooltip v-else ref=\"noteTimestamp\" :time=\"createdAt\" tooltip-placement=\"bottom\" />\n      </template>\n\n      <template v-if=\"isImported\">\n        <span v-if=\"isSystemNote\">&middot;</span>\n        <imported-badge :text-only=\"isSystemNote\" :importable-type=\"importableType\" />\n      </template>\n\n      <gl-badge\n        v-if=\"isInternalNote\"\n        v-gl-tooltip:tooltipcontainer.bottom\n        data-testid=\"internal-note-indicator\"\n        variant=\"warning\"\n        class=\"gl-ml-2\"\n        :title=\"internalNoteTooltip\"\n      >\n        {{ __('Internal note') }}\n      </gl-badge>\n      <slot name=\"extra-controls\"></slot>\n      <gl-loading-icon\n        v-if=\"showSpinner\"\n        ref=\"spinner\"\n        size=\"sm\"\n        class=\"editing-spinner\"\n        :label=\"__('Comment is being updated')\"\n      />\n    </span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_header.vue?vue&type=template&id=d4c29394\"\nimport script from \"./note_header.vue?vue&type=script&lang=js\"\nexport * from \"./note_header.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","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","import { s__ } from '~/locale';\nimport sidebarEventHub from '~/sidebar/event_hub';\nimport userPermissionsQuery from '~/merge_requests/components/reviewers/queries/user_permissions.query.graphql';\n\nexport default {\n  apollo: {\n    userPermissions: {\n      query: userPermissionsQuery,\n      variables() {\n        return {\n          fullPath: this.mr.targetProjectFullPath,\n          iid: `${this.mr.iid}`,\n        };\n      },\n      update: (data) => data.project?.mergeRequest?.userPermissions || {},\n    },\n  },\n  data() {\n    return {\n      userPermissions: {},\n    };\n  },\n  computed: {\n    tertiaryActionsButtons() {\n      return [\n        this.userPermissions.adminMergeRequest &&\n          this.mr.mergeRequestApproversAvailable && {\n            text: s__('MergeChecks|Assign reviewers'),\n            onClick() {\n              sidebarEventHub.$emit('sidebar.toggleReviewerDrawer');\n            },\n          },\n      ].filter((x) => x);\n    },\n  },\n};\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","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","// 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 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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"snakeCaseNote\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"NoteID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"note\"},\"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\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"avatar_url\"},\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"web_url\"},\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"web_path\"},\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"body_html\"},\"name\":{\"kind\":\"Name\",\"value\":\"bodyHtml\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"created_at\"},\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"last_edited_at\"},\"name\":{\"kind\":\"Name\",\"value\":\"lastEditedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"last_edited_by\"},\"name\":{\"kind\":\"Name\",\"value\":\"lastEditedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"avatar_url\"},\"name\":{\"kind\":\"Name\",\"value\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"username\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"web_url\"},\"name\":{\"kind\":\"Name\",\"value\":\"webUrl\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"alias\":{\"kind\":\"Name\",\"value\":\"web_path\"},\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"internal\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"url\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":449}};\n    doc.loc.source = {\"body\":\"query snakeCaseNote($id: NoteID!) {\\n  note(id: $id) {\\n    id\\n    author {\\n      id\\n      avatar_url: avatarUrl\\n      name\\n      username\\n      web_url: webUrl\\n      web_path: webPath\\n    }\\n    body_html: bodyHtml\\n    created_at: createdAt\\n    last_edited_at: lastEditedAt\\n    last_edited_by: lastEditedBy {\\n      id\\n      avatar_url: avatarUrl\\n      name\\n      username\\n      web_url: webUrl\\n      web_path: webPath\\n    }\\n    internal\\n    url\\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[\"snakeCaseNote\"] = oneQuery(doc, \"snakeCaseNote\");\n        \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 (_vm.identityVerificationRequired && _vm.isVisible)?_c('gl-alert',{attrs:{\"title\":_vm.title,\"primary-button-text\":_vm.$options.i18n.buttonText,\"primary-button-link\":_vm.identityVerificationPath,\"variant\":\"danger\"},on:{\"dismiss\":_vm.dismissAlert}},[_vm._v(\"\\n  \"+_vm._s(_vm.$options.i18n.description)+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAlert } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nconst DEFAULT_TITLE = s__(\n  'IdentityVerification|Before you can run pipelines, we need to verify your account.',\n);\n\nexport default {\n  components: { GlAlert },\n  i18n: {\n    title: DEFAULT_TITLE,\n    description: s__(\n      `IdentityVerification|We won't ask you for this information again. It will never be used for marketing purposes.`,\n    ),\n    buttonText: s__('IdentityVerification|Verify my account'),\n  },\n  inject: ['identityVerificationRequired', 'identityVerificationPath'],\n  props: {\n    title: {\n      type: String,\n      required: false,\n      default: DEFAULT_TITLE,\n    },\n  },\n  data() {\n    return {\n      isVisible: true,\n    };\n  },\n  methods: {\n    dismissAlert() {\n      this.isVisible = false;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-alert\n    v-if=\"identityVerificationRequired && isVisible\"\n    :title=\"title\"\n    :primary-button-text=\"$options.i18n.buttonText\"\n    :primary-button-link=\"identityVerificationPath\"\n    variant=\"danger\"\n    @dismiss=\"dismissAlert\"\n  >\n    {{ $options.i18n.description }}\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!./pipeline_account_verification_alert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_account_verification_alert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pipeline_account_verification_alert.vue?vue&type=template&id=0eb1d98f\"\nimport script from \"./pipeline_account_verification_alert.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_account_verification_alert.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"gl-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","'use strict';\n\n\nfunction isNothing(subject) {\n  return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n  return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n  if (Array.isArray(sequence)) return sequence;\n  else if (isNothing(sequence)) return [];\n\n  return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n  var index, length, key, sourceKeys;\n\n  if (source) {\n    sourceKeys = Object.keys(source);\n\n    for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n      key = sourceKeys[index];\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\n\nfunction repeat(string, count) {\n  var result = '', cycle;\n\n  for (cycle = 0; cycle < count; cycle += 1) {\n    result += string;\n  }\n\n  return result;\n}\n\n\nfunction isNegativeZero(number) {\n  return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing      = isNothing;\nmodule.exports.isObject       = isObject;\nmodule.exports.toArray        = toArray;\nmodule.exports.repeat         = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend         = extend;\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","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 mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_navigator.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_navigator.vue?vue&type=script&lang=js\"","<script>\nimport { throttle } from 'lodash';\nimport {\n  keysFor,\n  MR_NEXT_UNRESOLVED_DISCUSSION,\n  MR_PREVIOUS_UNRESOLVED_DISCUSSION,\n} from '~/behaviors/shortcuts/keybindings';\nimport { Mousetrap } from '~/lib/mousetrap';\nimport eventHub from '~/notes/event_hub';\nimport discussionNavigation from '~/notes/mixins/discussion_navigation';\n\nexport default {\n  mixins: [discussionNavigation],\n  data() {\n    return {\n      jumpToNext: throttle(() => this.jumpToNextDiscussion({ behavior: 'auto' }), 200),\n      jumpToPrevious: throttle(() => this.jumpToPreviousDiscussion({ behavior: 'auto' }), 200),\n    };\n  },\n  created() {\n    eventHub.$on('jumpToFirstUnresolvedDiscussion', this.jumpToFirstUnresolvedDiscussion);\n  },\n  mounted() {\n    Mousetrap.bind(keysFor(MR_NEXT_UNRESOLVED_DISCUSSION), this.jumpToNext);\n    Mousetrap.bind(keysFor(MR_PREVIOUS_UNRESOLVED_DISCUSSION), this.jumpToPrevious);\n  },\n  beforeDestroy() {\n    Mousetrap.unbind(keysFor(MR_NEXT_UNRESOLVED_DISCUSSION));\n    Mousetrap.unbind(keysFor(MR_PREVIOUS_UNRESOLVED_DISCUSSION));\n\n    eventHub.$off('jumpToFirstUnresolvedDiscussion', this.jumpToFirstUnresolvedDiscussion);\n  },\n  render() {\n    return this.$scopedSlots.default?.();\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./discussion_navigator.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_navigator.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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 FETCH_LOADING = __('Checking approval status');\nexport const FETCH_ERROR = s__(\n  'mrWidget|An error occurred while retrieving approval data for this merge request.',\n);\nexport const APPROVE_ERROR = s__('mrWidget|An error occurred while submitting your approval.');\nexport const UNAPPROVE_ERROR = s__('mrWidget|An error occurred while removing your approval.');\nexport const APPROVED_BY_YOU_AND_OTHERS = s__('mrWidget|Approved by you and others');\nexport const APPROVED_BY_YOU = s__('mrWidget|Approved by you');\nexport const APPROVED_BY_OTHERS = s__('mrWidget|Approved by');\n","import mergeRequestApprovalStateUpdated from 'ee_else_ce/vue_merge_request_widget/components/approvals/queries/approvals.subscription.graphql';\nimport approvedByQuery from 'ee_else_ce/vue_merge_request_widget/components/approvals/queries/approvals.query.graphql';\n\nimport { createAlert } from '~/alert';\n\nimport { convertToGraphQLId } from '../../graphql_shared/utils';\nimport { TYPENAME_MERGE_REQUEST } from '../../graphql_shared/constants';\n\nimport { FETCH_ERROR } from '../components/approvals/messages';\n\nexport default {\n  apollo: {\n    approvals: {\n      query: approvedByQuery,\n      variables() {\n        return {\n          projectPath: this.mr.targetProjectFullPath,\n          iid: `${this.mr.iid}`,\n        };\n      },\n      update: (data) => data.project?.mergeRequest,\n      result({ data }) {\n        // This case can occur when backend returns an empty project due to expired session.\n        // See https://gitlab.com/gitlab-org/gitlab/-/issues/413627 for more information.\n        if (!data.project) {\n          // Needed to suppress several errors.\n          this.mr.setApprovals({});\n          return;\n        }\n\n        const { mergeRequest } = data.project;\n\n        this.disableCommittersApproval = data.project.mergeRequestsDisableCommittersApproval;\n\n        this.mr.setApprovals(mergeRequest);\n      },\n      error() {\n        createAlert({\n          message: FETCH_ERROR,\n        });\n      },\n      subscribeToMore: {\n        document: mergeRequestApprovalStateUpdated,\n        variables() {\n          return {\n            issuableId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.mr.id),\n          };\n        },\n        skip() {\n          return !this.mr?.id;\n        },\n        updateQuery(\n          _,\n          {\n            subscriptionData: {\n              data: { mergeRequestApprovalStateUpdated: queryResult },\n            },\n          },\n        ) {\n          if (queryResult) {\n            this.mr.setApprovals(queryResult);\n          }\n        },\n      },\n    },\n  },\n  data() {\n    return {\n      alerts: [],\n      approvals: null,\n      disableCommittersApproval: false,\n    };\n  },\n  methods: {\n    clearError() {\n      this.$emit('clearError');\n      this.hasApprovalAuthError = false;\n      this.alerts.forEach((alert) => alert.dismiss());\n      this.alerts = [];\n    },\n    refreshApprovals() {\n      return this.service.fetchApprovals().then((data) => {\n        this.mr.setApprovals(data);\n      });\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!./state_container.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./state_container.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport { STATUS_CLOSED, STATUS_MERGED } from '~/issues/constants';\nimport StatusIcon from './mr_widget_status_icon.vue';\nimport Actions from './action_buttons.vue';\n\nexport default {\n  components: {\n    GlButton,\n    StatusIcon,\n    Actions,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    isCollapsible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    collapseOnDesktop: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    collapsed: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    mr: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    status: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    actions: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    expandDetailsTooltip: {\n      required: false,\n      type: String,\n      default: __('Expand merge details'),\n    },\n    collapseDetailsTooltip: {\n      required: false,\n      type: String,\n      default: __('Collapse merge details'),\n    },\n  },\n  computed: {\n    wrapperClasses() {\n      if (this.status === STATUS_MERGED) return 'gl-bg-blue-50';\n      if (this.status === STATUS_CLOSED) return 'gl-bg-red-50';\n      return null;\n    },\n    hasActionsSlot() {\n      return this.$scopedSlots.actions?.()?.length;\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"mr-widget-body media gl-flex gl-items-center gl-py-4 gl-pl-5 gl-pr-4\"\n    :class=\"wrapperClasses\"\n    v-on=\"$listeners\"\n  >\n    <div v-if=\"isLoading\" class=\"mr-state-loader gl-w-full\">\n      <slot name=\"loading\">\n        <div class=\"gl-flex\">\n          <status-icon status=\"loading\" />\n          <div class=\"media-body gl-flex gl-items-center\">\n            <slot></slot>\n          </div>\n        </div>\n      </slot>\n    </div>\n    <template v-else>\n      <slot name=\"icon\">\n        <status-icon :status=\"status\" />\n      </slot>\n      <div class=\"gl-flex gl-w-full\">\n        <div\n          :class=\"{\n            'gl-flex gl-items-center': actions.length,\n            'gl-flex-wrap gl-items-center gl-gap-3 md:gl-flex': !actions.length,\n          }\"\n          class=\"media-body gl-leading-normal\"\n        >\n          <slot></slot>\n        </div>\n        <div\n          :class=\"{\n            'state-container-action-buttons gl-flex-wrap lg:gl-justify-end': !actions.length,\n            'gl-pt-3 md:gl-pt-0': hasActionsSlot,\n          }\"\n          class=\"gl-font-size-0 gl-flex gl-gap-3\"\n        >\n          <slot name=\"actions\">\n            <actions v-if=\"actions.length\" :tertiary-buttons=\"actions\" />\n          </slot>\n        </div>\n        <div\n          v-if=\"isCollapsible\"\n          :class=\"{ 'md:gl-hidden': !collapseOnDesktop }\"\n          class=\"gl-border-l gl-ml-3 gl-h-6 gl-pl-3\"\n        >\n          <gl-button\n            v-gl-tooltip\n            :title=\"collapsed ? expandDetailsTooltip : collapseDetailsTooltip\"\n            :aria-label=\"collapsed ? expandDetailsTooltip : collapseDetailsTooltip\"\n            :icon=\"collapsed ? 'chevron-lg-down' : 'chevron-lg-up'\"\n            category=\"tertiary\"\n            size=\"small\"\n            class=\"gl-align-top\"\n            data-testid=\"widget-toggle\"\n            @click=\"() => $emit('toggle')\"\n          />\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./state_container.vue?vue&type=template&id=6c08a7c1\"\nimport script from \"./state_container.vue?vue&type=script&lang=js\"\nexport * from \"./state_container.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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._g({staticClass:\"mr-widget-body media gl-flex gl-items-center gl-py-4 gl-pl-5 gl-pr-4\",class:_vm.wrapperClasses},_vm.$listeners),[(_vm.isLoading)?_c('div',{staticClass:\"mr-state-loader gl-w-full\"},[_vm._t(\"loading\",function(){return [_c('div',{staticClass:\"gl-flex\"},[_c('status-icon',{attrs:{\"status\":\"loading\"}}),_vm._v(\" \"),_c('div',{staticClass:\"media-body gl-flex gl-items-center\"},[_vm._t(\"default\")],2)],1)]})],2):[_vm._t(\"icon\",function(){return [_c('status-icon',{attrs:{\"status\":_vm.status}})]}),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-w-full\"},[_c('div',{staticClass:\"media-body gl-leading-normal\",class:{\n          'gl-flex gl-items-center': _vm.actions.length,\n          'gl-flex-wrap gl-items-center gl-gap-3 md:gl-flex': !_vm.actions.length,\n        }},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"gl-font-size-0 gl-flex gl-gap-3\",class:{\n          'state-container-action-buttons gl-flex-wrap lg:gl-justify-end': !_vm.actions.length,\n          'gl-pt-3 md:gl-pt-0': _vm.hasActionsSlot,\n        }},[_vm._t(\"actions\",function(){return [(_vm.actions.length)?_c('actions',{attrs:{\"tertiary-buttons\":_vm.actions}}):_vm._e()]})],2),_vm._v(\" \"),(_vm.isCollapsible)?_c('div',{staticClass:\"gl-border-l gl-ml-3 gl-h-6 gl-pl-3\",class:{ 'md:gl-hidden': !_vm.collapseOnDesktop }},[_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-align-top\",attrs:{\"title\":_vm.collapsed ? _vm.expandDetailsTooltip : _vm.collapseDetailsTooltip,\"aria-label\":_vm.collapsed ? _vm.expandDetailsTooltip : _vm.collapseDetailsTooltip,\"icon\":_vm.collapsed ? 'chevron-lg-down' : 'chevron-lg-up',\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"widget-toggle\"},on:{\"click\":() => _vm.$emit('toggle')}})],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!./policy_approval_settings_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!./policy_approval_settings_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLink, GlPopover, GlSprintf } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport { isMergeRequestSettingOverridden } from 'ee/security_orchestration/components/policy_editor/scan_result/lib';\n\nexport default {\n  i18n: {\n    title: s__('SecurityOrchestration|Policy override'),\n    popoverTextGeneric: s__(\n      'SecurityOrchestration|Default approval settings on this merge request have been overridden by policies based on their rules.',\n    ),\n    popoverTextSingle: s__(\n      'SecurityOrchestration|Default approval settings on this merge request have been overridden by policy %{policyName} based on its rules.',\n    ),\n    popoverTextMultiple: s__(\n      'SecurityOrchestration|Default approval settings on this merge request have been overridden by the following policies based on their rules:',\n    ),\n  },\n  name: 'PolicyApprovalSettingsIcon',\n  components: {\n    GlIcon,\n    GlLink,\n    GlPopover,\n    GlSprintf,\n  },\n  props: {\n    policies: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  computed: {\n    policiesWithMergeRequestSettingsOverride() {\n      return (this.policies || []).filter(({ settings = {} }) =>\n        Object.entries(settings).some(([setting, value]) =>\n          isMergeRequestSettingOverridden(setting, value),\n        ),\n      );\n    },\n    // TODO: Temporary to handle policies without details\n    // Remove when backfill from https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173714 is finished\n    showPolicyDetails() {\n      return (this.policies || []).every(\n        (policy) => Boolean(policy.name) && Boolean(policy.editPath),\n      );\n    },\n    hasPoliciesOverridingApprovalSettings() {\n      return this.policiesWithMergeRequestSettingsOverride.length > 0;\n    },\n    hasMultiplePolicies() {\n      return this.policiesWithMergeRequestSettingsOverride.length > 1;\n    },\n  },\n};\n</script>\n\n<template>\n  <div v-if=\"hasPoliciesOverridingApprovalSettings\">\n    <gl-popover\n      :title=\"$options.i18n.title\"\n      target=\"policy-override-warning-icon\"\n      show-close-button\n    >\n      <template v-if=\"showPolicyDetails\">\n        <template v-if=\"hasMultiplePolicies\">\n          {{ $options.i18n.popoverTextMultiple }}\n          <ul class=\"gl-pl-5\">\n            <li v-for=\"(policy, index) in policiesWithMergeRequestSettingsOverride\" :key=\"index\">\n              <gl-link\n                :href=\"policy.editPath\"\n                target=\"_blank\"\n                :data-testid=\"`policy-item-${index}`\"\n              >\n                {{ policy.name }}\n              </gl-link>\n            </li>\n          </ul>\n        </template>\n        <template v-else>\n          <gl-sprintf :message=\"$options.i18n.popoverTextSingle\">\n            <template #policyName>\n              <gl-link :href=\"policiesWithMergeRequestSettingsOverride[0].editPath\" target=\"_blank\">\n                {{ policiesWithMergeRequestSettingsOverride[0].name }}\n              </gl-link>\n            </template>\n          </gl-sprintf>\n        </template>\n      </template>\n      <template v-else>\n        {{ $options.i18n.popoverTextGeneric }}\n      </template>\n    </gl-popover>\n\n    <gl-icon id=\"policy-override-warning-icon\" name=\"warning\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./policy_approval_settings_icon.vue?vue&type=template&id=44927e8c\"\nimport script from \"./policy_approval_settings_icon.vue?vue&type=script&lang=js\"\nexport * from \"./policy_approval_settings_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","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.hasPoliciesOverridingApprovalSettings)?_c('div',[_c('gl-popover',{attrs:{\"title\":_vm.$options.i18n.title,\"target\":\"policy-override-warning-icon\",\"show-close-button\":\"\"}},[(_vm.showPolicyDetails)?[(_vm.hasMultiplePolicies)?[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.popoverTextMultiple)+\"\\n        \"),_c('ul',{staticClass:\"gl-pl-5\"},_vm._l((_vm.policiesWithMergeRequestSettingsOverride),function(policy,index){return _c('li',{key:index},[_c('gl-link',{attrs:{\"href\":policy.editPath,\"target\":\"_blank\",\"data-testid\":`policy-item-${index}`}},[_vm._v(\"\\n              \"+_vm._s(policy.name)+\"\\n            \")])],1)}),0)]:[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.popoverTextSingle},scopedSlots:_vm._u([{key:\"policyName\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.policiesWithMergeRequestSettingsOverride[0].editPath,\"target\":\"_blank\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.policiesWithMergeRequestSettingsOverride[0].name)+\"\\n            \")])]},proxy:true}],null,false,4075357879)})]]:[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.popoverTextGeneric)+\"\\n    \")]],2),_vm._v(\" \"),_c('gl-icon',{attrs:{\"id\":\"policy-override-warning-icon\",\"name\":\"warning\"}})],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!./approvals_summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvals_summary.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlPopover } from '@gitlab/ui';\nimport PolicyApprovalSettingsIcon from 'ee_component/vue_merge_request_widget/components/approvals/policy_approval_settings_icon.vue';\nimport { toNounSeriesText } from '~/lib/utils/grammar';\nimport { n__, sprintf } from '~/locale';\nimport {\n  APPROVED_BY_YOU_AND_OTHERS,\n  APPROVED_BY_YOU,\n  APPROVED_BY_OTHERS,\n} from '~/vue_merge_request_widget/components/approvals/messages';\nimport UserAvatarList from '~/vue_shared/components/user_avatar/user_avatar_list.vue';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { getApprovalRuleNamesLeft } from 'ee_else_ce/vue_merge_request_widget/mappers';\n\nexport default {\n  components: {\n    GlLink,\n    GlPopover,\n    UserAvatarList,\n    PolicyApprovalSettingsIcon,\n  },\n  props: {\n    multipleApprovalRulesAvailable: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    approvalState: {\n      type: Object,\n      required: true,\n    },\n    disableCommittersApproval: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isUserAvatarListExpanded: false,\n    };\n  },\n  computed: {\n    approvers() {\n      return this.approvalState.approvedBy?.nodes || [];\n    },\n    approved() {\n      return this.approvalState.approved || this.approvalState.approvedBy?.nodes.length > 0;\n    },\n    approvalsLeft() {\n      return this.approvalState.approvalsLeft || 0;\n    },\n    rulesLeft() {\n      return getApprovalRuleNamesLeft(\n        this.multipleApprovalRulesAvailable,\n        (this.approvalState.approvalState?.rules || []).filter((r) => !r.approved),\n      );\n    },\n    approvalLeftMessage() {\n      if (this.rulesLeft.length) {\n        return sprintf(\n          n__(\n            'Requires %{count} approval from %{names}.',\n            'Requires %{count} approvals from %{names}.',\n            this.approvalsLeft,\n          ),\n          {\n            names: toNounSeriesText(this.rulesLeft),\n            count: this.approvalsLeft,\n          },\n          false,\n        );\n      }\n\n      if (!this.approved) {\n        return n__(\n          'Requires %d approval from eligible users.',\n          'Requires %d approvals from eligible users.',\n          this.approvalsLeft,\n        );\n      }\n\n      return '';\n    },\n    message() {\n      if (this.approvedByMe && this.approvedByOthers) {\n        return APPROVED_BY_YOU_AND_OTHERS;\n      }\n\n      if (this.approvedByMe) {\n        return APPROVED_BY_YOU;\n      }\n\n      if (this.approved) {\n        return APPROVED_BY_OTHERS;\n      }\n\n      return '';\n    },\n    hasApprovers() {\n      return Boolean(this.approvers.length);\n    },\n    approvedByMe() {\n      if (!this.currentUserId) {\n        return false;\n      }\n      return this.approvers.some(\n        (approver) => getIdFromGraphQLId(approver.id) === this.currentUserId,\n      );\n    },\n    approvedByOthers() {\n      if (!this.currentUserId) {\n        return false;\n      }\n      return this.approvers.some(\n        (approver) => getIdFromGraphQLId(approver.id) !== this.currentUserId,\n      );\n    },\n    currentUserHasCommitted() {\n      if (!this.currentUserId) return false;\n\n      return this.approvalState.committers?.nodes?.some(\n        (user) => getIdFromGraphQLId(user.id) === this.currentUserId,\n      );\n    },\n    currentUserId() {\n      return gon.current_user_id;\n    },\n    policiesOverridingApprovalSettings() {\n      return this.approvalState.policiesOverridingApprovalSettings;\n    },\n  },\n  methods: {\n    onUserAvatarListExpanded() {\n      this.isUserAvatarListExpanded = true;\n    },\n    onUserAvatarListCollapsed() {\n      this.isUserAvatarListExpanded = false;\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"gl-flex gl-flex-wrap gl-items-center gl-gap-2\"\n    data-testid=\"approvals-summary-content\"\n  >\n    <span v-if=\"approvalLeftMessage\" class=\"gl-font-bold\">{{ approvalLeftMessage }}</span>\n    <template v-if=\"hasApprovers\">\n      <span v-if=\"approvalLeftMessage\">{{ message }}</span>\n      <span v-else class=\"gl-font-bold\">{{ message }}</span>\n      <user-avatar-list\n        class=\"gl-inline-block\"\n        :class=\"{ 'gl-pt-1': isUserAvatarListExpanded }\"\n        :img-size=\"24\"\n        :items=\"approvers\"\n        @expanded=\"onUserAvatarListExpanded\"\n        @collapsed=\"onUserAvatarListCollapsed\"\n      />\n    </template>\n    <policy-approval-settings-icon :policies=\"policiesOverridingApprovalSettings\" />\n    <template v-if=\"disableCommittersApproval && currentUserHasCommitted\">\n      <gl-link id=\"cant-approve-popover\" data-testid=\"commit-cant-approve\" class=\"gl-cursor-help\">{{\n        __(\"Why can't I approve?\")\n      }}</gl-link>\n      <gl-popover target=\"cant-approve-popover\">\n        {{ __(\"You can't approve because you added one or more commits to this merge request.\") }}\n      </gl-popover>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./approvals_summary.vue?vue&type=template&id=01112af4\"\nimport script from \"./approvals_summary.vue?vue&type=script&lang=js\"\nexport * from \"./approvals_summary.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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\",attrs:{\"data-testid\":\"approvals-summary-content\"}},[(_vm.approvalLeftMessage)?_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(_vm.approvalLeftMessage))]):_vm._e(),_vm._v(\" \"),(_vm.hasApprovers)?[(_vm.approvalLeftMessage)?_c('span',[_vm._v(_vm._s(_vm.message))]):_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(_vm.message))]),_vm._v(\" \"),_c('user-avatar-list',{staticClass:\"gl-inline-block\",class:{ 'gl-pt-1': _vm.isUserAvatarListExpanded },attrs:{\"img-size\":24,\"items\":_vm.approvers},on:{\"expanded\":_vm.onUserAvatarListExpanded,\"collapsed\":_vm.onUserAvatarListCollapsed}})]:_vm._e(),_vm._v(\" \"),_c('policy-approval-settings-icon',{attrs:{\"policies\":_vm.policiesOverridingApprovalSettings}}),_vm._v(\" \"),(_vm.disableCommittersApproval && _vm.currentUserHasCommitted)?[_c('gl-link',{staticClass:\"gl-cursor-help\",attrs:{\"id\":\"cant-approve-popover\",\"data-testid\":\"commit-cant-approve\"}},[_vm._v(_vm._s(_vm.__(\"Why can't I approve?\")))]),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":\"cant-approve-popover\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.__(\"You can't approve because you added one or more commits to this merge request.\"))+\"\\n    \")])]:_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!./approvals_summary_optional.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvals_summary_optional.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlLink } from '@gitlab/ui';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\n\nexport default {\n  components: {\n    GlLink,\n    HelpIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    canApprove: {\n      type: Boolean,\n      required: true,\n    },\n    helpPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-items-center\">\n    <span class=\"gl-text-subtle\">{{ s__('mrWidget|Approval is optional') }}</span>\n    <gl-link\n      v-if=\"canApprove && helpPath\"\n      v-gl-tooltip\n      :href=\"helpPath\"\n      :title=\"__('About this feature')\"\n      target=\"_blank\"\n      class=\"gl-flex gl-items-center gl-justify-center\"\n    >\n      <help-icon class=\"gl-ml-3\" />\n    </gl-link>\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!./approvals.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvals.vue?vue&type=script&lang=js\"","<script>\nimport { GlForm, GlButton, GlSprintf } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport csrf from '~/lib/utils/csrf';\nimport { STATUS_MERGED } from '~/issues/constants';\nimport { BV_SHOW_MODAL } from '~/lib/utils/constants';\nimport { HTTP_STATUS_UNAUTHORIZED } from '~/lib/utils/http_status';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { s__, __, sprintf } from '~/locale';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport approvalsMixin from '../../mixins/approvals';\nimport StateContainer from '../state_container.vue';\nimport { INVALID_RULES_DOCS_PATH } from '../../constants';\nimport ApprovalsSummary from './approvals_summary.vue';\nimport ApprovalsSummaryOptional from './approvals_summary_optional.vue';\nimport { FETCH_LOADING, APPROVE_ERROR, UNAPPROVE_ERROR } from './messages';\n\nexport default {\n  name: 'MRWidgetApprovals',\n  components: {\n    ApprovalsSummary,\n    ApprovalsSummaryOptional,\n    StateContainer,\n    GlButton,\n    GlSprintf,\n    GlForm,\n  },\n  csrf,\n  mixins: [approvalsMixin, glFeatureFlagsMixin()],\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    service: {\n      type: Object,\n      required: true,\n    },\n    isOptionalDefault: {\n      type: Boolean,\n      required: false,\n      default: null,\n    },\n    approveDefault: {\n      type: Function,\n      required: false,\n      default: null,\n    },\n    modalId: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    requirePasswordToApprove: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    collapsed: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    hasAllApprovals: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    actionButtons: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  data() {\n    return {\n      hasApprovalAuthError: false,\n      isApproving: false,\n      userPermissions: {},\n    };\n  },\n  computed: {\n    isLoading() {\n      return this.$apollo.queries.approvals.loading || !this.approvals;\n    },\n    isBasic() {\n      return this.mr.approvalsWidgetType === 'base';\n    },\n    isApproved() {\n      return this.hasAllApprovals;\n    },\n    isOptional() {\n      return this.isOptionalDefault !== null ? this.isOptionalDefault : !this.approvedBy.length;\n    },\n    hasAction() {\n      return Boolean(this.action);\n    },\n    invalidRules() {\n      return this.approvals.approvalState?.rules?.filter((rule) => rule.invalid) || [];\n    },\n    invalidApprovedRules() {\n      return this.invalidRules.filter((rule) => rule.allowMergeWhenInvalid);\n    },\n    invalidFailedRules() {\n      return this.invalidRules.filter((rule) => !rule.allowMergeWhenInvalid);\n    },\n    hasInvalidRules() {\n      return this.mr.mergeRequestApproversAvailable && this.invalidRules.length;\n    },\n    hasInvalidApprovedRules() {\n      return this.mr.mergeRequestApproversAvailable && this.invalidApprovedRules.length;\n    },\n    hasInvalidFailedRules() {\n      return this.mr.mergeRequestApproversAvailable && this.invalidFailedRules.length;\n    },\n    approvedBy() {\n      return this.approvals.approvedBy?.nodes || [];\n    },\n    userHasApproved() {\n      return this.approvedBy.some(\n        (approver) => getIdFromGraphQLId(approver.id) === gon.current_user_id,\n      );\n    },\n    userCanApprove() {\n      return Boolean(this.approvals.userPermissions.canApprove);\n    },\n    showApprove() {\n      return !this.userHasApproved && this.userCanApprove && this.mr.isOpen;\n    },\n    showUnapprove() {\n      return this.userHasApproved && !this.userCanApprove && this.mr.state !== STATUS_MERGED;\n    },\n    showApproveButton() {\n      return (!this.requireSamlAuthToApprove || this.showUnapprove) && this.action;\n    },\n    approvalText() {\n      // Repeating a text of this to keep i18n easier to do (vs, construcing a compound string)\n      if (this.requireSamlAuthToApprove) {\n        return this.isApproved && this.approvedBy.length > 0\n          ? s__('mrWidget|Approve additionally with SAML')\n          : s__('mrWidget|Approve with SAML');\n      }\n\n      return this.isApproved && this.approvedBy.length > 0\n        ? s__('mrWidget|Approve additionally')\n        : s__('mrWidget|Approve');\n    },\n    action() {\n      // Use the default approve action, only if we aren't using the auth component for it\n      if (this.showApprove) {\n        return {\n          text: this.approvalText,\n          category: this.isApproved ? 'secondary' : 'primary',\n          variant: 'confirm',\n          action: () => this.approve(),\n        };\n      }\n      if (this.showUnapprove) {\n        return {\n          text: s__('mrWidget|Revoke approval'),\n          variant: 'default',\n          action: () => this.unapprove(),\n        };\n      }\n\n      return null;\n    },\n    pluralizedApprovedRuleText() {\n      return this.invalidApprovedRules.length > 1\n        ? this.$options.i18n.invalidRulesPlural\n        : this.$options.i18n.invalidRuleSingular;\n    },\n    pluralizedFailedRuleText() {\n      return this.invalidFailedRules.length > 1\n        ? this.$options.i18n.invalidFailedRulesPlural\n        : this.$options.i18n.invalidFailedRuleSingular;\n    },\n    pluralizedRuleText() {\n      return [\n        this.hasInvalidFailedRules\n          ? sprintf(this.pluralizedFailedRuleText, { rules: this.invalidFailedRules.length })\n          : null,\n        this.hasInvalidApprovedRules\n          ? sprintf(this.pluralizedApprovedRuleText, { rules: this.invalidApprovedRules.length })\n          : null,\n      ]\n        .filter((text) => Boolean(text))\n        .join(', ')\n        .concat('.');\n    },\n    samlApprovalPath() {\n      return this.mr.samlApprovalPath;\n    },\n    requireSamlAuthToApprove() {\n      return this.mr.requireSamlAuthToApprove;\n    },\n  },\n  methods: {\n    approve() {\n      if (this.requirePasswordToApprove) {\n        this.$root.$emit(BV_SHOW_MODAL, this.modalId);\n        return;\n      }\n      this.updateApproval(\n        () => this.service.approveMergeRequest(),\n        () =>\n          this.alerts.push(\n            createAlert({\n              message: APPROVE_ERROR,\n            }),\n          ),\n      );\n    },\n    approveWithSamlAuth() {\n      // Intentionally direct to SAML Identity Provider for renewed authorization even if SSO session exists\n      this.$refs.form.$el.submit();\n    },\n    approveWithAuth(data) {\n      this.updateApproval(\n        () => this.service.approveMergeRequestWithAuth(data),\n        (error) => {\n          if (error?.response?.status === HTTP_STATUS_UNAUTHORIZED) {\n            this.hasApprovalAuthError = true;\n            return;\n          }\n          this.alerts.push(\n            createAlert({\n              message: APPROVE_ERROR,\n            }),\n          );\n        },\n      );\n    },\n    unapprove() {\n      this.updateApproval(\n        () => this.service.unapproveMergeRequest(),\n        () =>\n          this.alerts.push(\n            createAlert({\n              message: UNAPPROVE_ERROR,\n            }),\n          ),\n      );\n    },\n    updateApproval(serviceFn, errFn) {\n      this.isApproving = true;\n      this.clearError();\n      return serviceFn()\n        .then(() => {\n          // TODO: Remove this line when we move to Apollo subscriptions\n          this.$apollo.queries.approvals.refetch();\n        })\n        .catch(errFn)\n        .then(() => {\n          this.isApproving = false;\n        });\n    },\n  },\n  FETCH_LOADING,\n  linkToInvalidRules: INVALID_RULES_DOCS_PATH,\n  i18n: {\n    invalidRuleSingular: s__('mrWidget|%{rules} invalid rule has been approved automatically'),\n    invalidRulesPlural: s__('mrWidget|%{rules} invalid rules have been approved automatically'),\n    invalidFailedRuleSingular: s__(\n      \"mrWidget|%{dangerStart}%{rules} rule can't be approved%{dangerEnd}\",\n    ),\n    invalidFailedRulesPlural: s__(\n      \"mrWidget|%{dangerStart}%{rules} rules can't be approved%{dangerEnd}\",\n    ),\n    learnMore: __('Learn more.'),\n  },\n};\n</script>\n<template>\n  <div v-if=\"approvals\" class=\"js-mr-approvals mr-section-container\">\n    <state-container\n      :is-loading=\"isLoading\"\n      :mr=\"mr\"\n      status=\"approval\"\n      is-collapsible\n      collapse-on-desktop\n      :collapsed=\"collapsed\"\n      :expand-details-tooltip=\"__('Expand eligible approvers')\"\n      :collapse-details-tooltip=\"__('Collapse eligible approvers')\"\n      :actions=\"actionButtons\"\n      @toggle=\"() => $emit('toggle')\"\n    >\n      <template v-if=\"isLoading\">{{ $options.FETCH_LOADING }}</template>\n      <template v-else>\n        <div class=\"gl-flex gl-flex-col\">\n          <div\n            class=\"gl-flex gl-flex-col gl-flex-wrap gl-items-baseline gl-gap-3 sm:gl-flex-row sm:gl-items-center\"\n          >\n            <div v-if=\"requireSamlAuthToApprove && showApprove\">\n              <gl-form\n                ref=\"form\"\n                :action=\"samlApprovalPath\"\n                method=\"post\"\n                data-testid=\"approve-form\"\n              >\n                <gl-button\n                  v-if=\"action\"\n                  :variant=\"action.variant\"\n                  size=\"small\"\n                  :category=\"action.category\"\n                  :loading=\"isApproving\"\n                  data-testid=\"approve-button\"\n                  type=\"submit\"\n                >\n                  {{ action.text }}\n                </gl-button>\n                <input :value=\"$options.csrf.token\" type=\"hidden\" name=\"authenticity_token\" />\n              </gl-form>\n            </div>\n            <gl-button\n              v-if=\"showApproveButton\"\n              :variant=\"action.variant\"\n              size=\"small\"\n              :category=\"action.category\"\n              :loading=\"isApproving\"\n              data-testid=\"approve-button\"\n              @click=\"action.action\"\n            >\n              {{ action.text }}\n            </gl-button>\n            <approvals-summary-optional\n              v-if=\"isOptional\"\n              :can-approve=\"hasAction\"\n              :help-path=\"mr.approvalsHelpPath\"\n            />\n            <approvals-summary\n              v-else\n              :approval-state=\"approvals\"\n              :disable-committers-approval=\"disableCommittersApproval\"\n              :multiple-approval-rules-available=\"mr.multipleApprovalRulesAvailable\"\n            />\n          </div>\n          <div v-if=\"hasInvalidRules\" class=\"gl-mt-2 gl-text-subtle\" data-testid=\"invalid-rules\">\n            <gl-sprintf :message=\"pluralizedRuleText\">\n              <template #danger=\"{ content }\">\n                <span class=\"gl-font-bold gl-text-danger\">{{ content }}</span>\n              </template>\n            </gl-sprintf>\n          </div>\n        </div>\n        <slot\n          :is-approving=\"isApproving\"\n          :approve-with-auth=\"approveWithAuth\"\n          :has-approval-auth-error=\"hasApprovalAuthError\"\n        ></slot>\n      </template>\n    </state-container>\n    <slot name=\"footer\"></slot>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./approvals_summary_optional.vue?vue&type=template&id=98283a3c\"\nimport script from \"./approvals_summary_optional.vue?vue&type=script&lang=js\"\nexport * from \"./approvals_summary_optional.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('span',{staticClass:\"gl-text-subtle\"},[_vm._v(_vm._s(_vm.s__('mrWidget|Approval is optional')))]),_vm._v(\" \"),(_vm.canApprove && _vm.helpPath)?_c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-flex gl-items-center gl-justify-center\",attrs:{\"href\":_vm.helpPath,\"title\":_vm.__('About this feature'),\"target\":\"_blank\"}},[_c('help-icon',{staticClass:\"gl-ml-3\"})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./approvals.vue?vue&type=template&id=b4bf8706\"\nimport script from \"./approvals.vue?vue&type=script&lang=js\"\nexport * from \"./approvals.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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.approvals)?_c('div',{staticClass:\"js-mr-approvals mr-section-container\"},[_c('state-container',{attrs:{\"is-loading\":_vm.isLoading,\"mr\":_vm.mr,\"status\":\"approval\",\"is-collapsible\":\"\",\"collapse-on-desktop\":\"\",\"collapsed\":_vm.collapsed,\"expand-details-tooltip\":_vm.__('Expand eligible approvers'),\"collapse-details-tooltip\":_vm.__('Collapse eligible approvers'),\"actions\":_vm.actionButtons},on:{\"toggle\":() => _vm.$emit('toggle')}},[(_vm.isLoading)?[_vm._v(_vm._s(_vm.$options.FETCH_LOADING))]:[_c('div',{staticClass:\"gl-flex gl-flex-col\"},[_c('div',{staticClass:\"gl-flex gl-flex-col gl-flex-wrap gl-items-baseline gl-gap-3 sm:gl-flex-row sm:gl-items-center\"},[(_vm.requireSamlAuthToApprove && _vm.showApprove)?_c('div',[_c('gl-form',{ref:\"form\",attrs:{\"action\":_vm.samlApprovalPath,\"method\":\"post\",\"data-testid\":\"approve-form\"}},[(_vm.action)?_c('gl-button',{attrs:{\"variant\":_vm.action.variant,\"size\":\"small\",\"category\":_vm.action.category,\"loading\":_vm.isApproving,\"data-testid\":\"approve-button\",\"type\":\"submit\"}},[_vm._v(\"\\n                \"+_vm._s(_vm.action.text)+\"\\n              \")]):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"authenticity_token\"},domProps:{\"value\":_vm.$options.csrf.token}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.showApproveButton)?_c('gl-button',{attrs:{\"variant\":_vm.action.variant,\"size\":\"small\",\"category\":_vm.action.category,\"loading\":_vm.isApproving,\"data-testid\":\"approve-button\"},on:{\"click\":_vm.action.action}},[_vm._v(\"\\n            \"+_vm._s(_vm.action.text)+\"\\n          \")]):_vm._e(),_vm._v(\" \"),(_vm.isOptional)?_c('approvals-summary-optional',{attrs:{\"can-approve\":_vm.hasAction,\"help-path\":_vm.mr.approvalsHelpPath}}):_c('approvals-summary',{attrs:{\"approval-state\":_vm.approvals,\"disable-committers-approval\":_vm.disableCommittersApproval,\"multiple-approval-rules-available\":_vm.mr.multipleApprovalRulesAvailable}})],1),_vm._v(\" \"),(_vm.hasInvalidRules)?_c('div',{staticClass:\"gl-mt-2 gl-text-subtle\",attrs:{\"data-testid\":\"invalid-rules\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.pluralizedRuleText},scopedSlots:_vm._u([{key:\"danger\",fn:function({ content }){return [_c('span',{staticClass:\"gl-font-bold gl-text-danger\"},[_vm._v(_vm._s(content))])]}}],null,false,56474572)})],1):_vm._e()]),_vm._v(\" \"),_vm._t(\"default\",null,{\"isApproving\":_vm.isApproving,\"approveWithAuth\":_vm.approveWithAuth,\"hasApprovalAuthError\":_vm.hasApprovalAuthError})]],2),_vm._v(\" \"),_vm._t(\"footer\")],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!./approvals_auth.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvals_auth.vue?vue&type=script&lang=js\"","<script>\nimport { GlFormGroup, GlFormInput, GlModal } from '@gitlab/ui';\nimport { __, s__ } from '~/locale';\n\nexport default {\n  components: {\n    GlFormGroup,\n    GlFormInput,\n    GlModal,\n  },\n  props: {\n    isApproving: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    hasError: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n    modalId: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      approvalPassword: '',\n    };\n  },\n  computed: {\n    actionPrimaryProps() {\n      return {\n        text: __('Approve'),\n        attributes: {\n          loading: this.isApproving,\n          variant: 'confirm',\n        },\n      };\n    },\n    actionCancelProps() {\n      return {\n        text: __('Cancel'),\n      };\n    },\n    inputState() {\n      return this.hasError ? false : null;\n    },\n    invalidFeedback() {\n      return this.hasError ? s__('mrWidget|Approval password is invalid.') : null;\n    },\n  },\n  methods: {\n    approve(event) {\n      event.preventDefault();\n      this.$emit('approve', this.approvalPassword);\n    },\n    onHide() {\n      this.approvalPassword = '';\n      this.$emit('hide');\n    },\n    onShow() {\n      setTimeout(() => {\n        this.$refs.approvalPasswordInput.$el.focus();\n      }, 0);\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-modal\n    :modal-id=\"modalId\"\n    :title=\"__('Enter your password to approve')\"\n    :action-primary=\"actionPrimaryProps\"\n    :action-cancel=\"actionCancelProps\"\n    modal-class=\"js-mr-approvals-modal\"\n    @ok=\"approve\"\n    @hide=\"onHide\"\n    @show=\"onShow\"\n  >\n    <form @submit.prevent=\"approve\">\n      <p>\n        {{\n          s__(\n            'mrWidget|To approve this merge request, please enter your password. This project requires all approvals to be authenticated.',\n          )\n        }}\n      </p>\n      <gl-form-group\n        :label=\"s__('mrWidget|Your password')\"\n        label-for=\"approvalPasswordInput\"\n        :invalid-feedback=\"invalidFeedback\"\n        class=\"gl-mb-0\"\n      >\n        <gl-form-input\n          id=\"approvalPasswordInput\"\n          ref=\"approvalPasswordInput\"\n          v-model=\"approvalPassword\"\n          type=\"password\"\n          autocomplete=\"current-password\"\n          :placeholder=\"__('Password')\"\n          :state=\"inputState\"\n        />\n      </gl-form-group>\n    </form>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./approvals_auth.vue?vue&type=template&id=62dbdb6f\"\nimport script from \"./approvals_auth.vue?vue&type=script&lang=js\"\nexport * from \"./approvals_auth.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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.__('Enter your password to approve'),\"action-primary\":_vm.actionPrimaryProps,\"action-cancel\":_vm.actionCancelProps,\"modal-class\":\"js-mr-approvals-modal\"},on:{\"ok\":_vm.approve,\"hide\":_vm.onHide,\"show\":_vm.onShow}},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.approve.apply(null, arguments)}}},[_c('p',[_vm._v(\"\\n      \"+_vm._s(_vm.s__(\n          'mrWidget|To approve this merge request, please enter your password. This project requires all approvals to be authenticated.',\n        ))+\"\\n    \")]),_vm._v(\" \"),_c('gl-form-group',{staticClass:\"gl-mb-0\",attrs:{\"label\":_vm.s__('mrWidget|Your password'),\"label-for\":\"approvalPasswordInput\",\"invalid-feedback\":_vm.invalidFeedback}},[_c('gl-form-input',{ref:\"approvalPasswordInput\",attrs:{\"id\":\"approvalPasswordInput\",\"type\":\"password\",\"autocomplete\":\"current-password\",\"placeholder\":_vm.__('Password'),\"state\":_vm.inputState},model:{value:(_vm.approvalPassword),callback:function ($$v) {_vm.approvalPassword=$$v},expression:\"approvalPassword\"}})],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!./approval_check_popover.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approval_check_popover.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlPopover, GlIcon } from '@gitlab/ui';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\n\nexport default {\n  name: 'ApprovalCheckPopover',\n  components: {\n    GlLink,\n    GlPopover,\n    GlIcon,\n    HelpIcon,\n  },\n  props: {\n    documentationLink: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    documentationText: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    title: {\n      type: String,\n      required: true,\n    },\n    text: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    popoverId: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <span class=\"js-help gl-ml-2 gl-inline-flex\">\n    <help-icon :id=\"popoverId\" class=\"author-link\" :aria-label=\"__('help')\" />\n    <gl-popover :target=\"popoverId\" placement=\"top\" :title=\"title\">\n      <div class=\"gl-mb-3\">{{ text }}</div>\n      <gl-link v-if=\"documentationLink\" target=\"_blank\" :href=\"documentationLink\">\n        <span class=\"gl-align-middle\">{{ documentationText }}</span>\n        <gl-icon name=\"external-link\" class=\"gl-align-middle\" />\n      </gl-link>\n    </gl-popover>\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!./approval_check_rule_popover.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approval_check_rule_popover.vue?vue&type=script&lang=js\"","<script>\nimport { COVERAGE_CHECK_NAME, APPROVAL_RULE_CONFIGS } from '../../constants';\nimport ApprovalCheckPopover from './approval_check_popover.vue';\n\nexport default {\n  name: 'ApprovalCheckRulePopover',\n  components: {\n    ApprovalCheckPopover,\n  },\n  props: {\n    rule: {\n      type: Object,\n      required: true,\n    },\n    codeCoverageCheckHelpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    showCoverageCheckPopover() {\n      return this.rule.name === COVERAGE_CHECK_NAME;\n    },\n    approvalRuleConfig() {\n      return APPROVAL_RULE_CONFIGS[this.rule.name];\n    },\n    documentationLink() {\n      /*\n       * The docs for these two rules have the same url & anchor\n       * We get the path from a rails view helper\n       */\n      if (this.showCoverageCheckPopover) {\n        return this.codeCoverageCheckHelpPagePath;\n      }\n      return '';\n    },\n    popoverTriggerId() {\n      return `reportInfo-${this.rule.name}`;\n    },\n  },\n};\n</script>\n\n<template>\n  <approval-check-popover\n    v-if=\"showCoverageCheckPopover\"\n    :popover-id=\"popoverTriggerId\"\n    :title=\"approvalRuleConfig.title\"\n    :text=\"approvalRuleConfig.popoverText\"\n    :documentation-link=\"documentationLink\"\n    :documentation-text=\"approvalRuleConfig.documentationText\"\n  />\n</template>\n","import { render, staticRenderFns } from \"./approval_check_popover.vue?vue&type=template&id=7a5b853d\"\nimport script from \"./approval_check_popover.vue?vue&type=script&lang=js\"\nexport * from \"./approval_check_popover.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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:\"js-help gl-ml-2 gl-inline-flex\"},[_c('help-icon',{staticClass:\"author-link\",attrs:{\"id\":_vm.popoverId,\"aria-label\":_vm.__('help')}}),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":_vm.popoverId,\"placement\":\"top\",\"title\":_vm.title}},[_c('div',{staticClass:\"gl-mb-3\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),(_vm.documentationLink)?_c('gl-link',{attrs:{\"target\":\"_blank\",\"href\":_vm.documentationLink}},[_c('span',{staticClass:\"gl-align-middle\"},[_vm._v(_vm._s(_vm.documentationText))]),_vm._v(\" \"),_c('gl-icon',{staticClass:\"gl-align-middle\",attrs:{\"name\":\"external-link\"}})],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./approval_check_rule_popover.vue?vue&type=template&id=6fb68442\"\nimport script from \"./approval_check_rule_popover.vue?vue&type=script&lang=js\"\nexport * from \"./approval_check_rule_popover.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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.showCoverageCheckPopover)?_c('approval-check-popover',{attrs:{\"popover-id\":_vm.popoverTriggerId,\"title\":_vm.approvalRuleConfig.title,\"text\":_vm.approvalRuleConfig.popoverText,\"documentation-link\":_vm.documentationLink,\"documentation-text\":_vm.approvalRuleConfig.documentationText}}):_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!./approved_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!./approved_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlIcon,\n  },\n  props: {\n    isApproved: {\n      type: Boolean,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <gl-icon v-if=\"isApproved\" name=\"mobile-issue-close\" variant=\"success\" :size=\"16\" />\n    <div v-else class=\"square s16\"></div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./approved_icon.vue?vue&type=template&id=22cc35e9\"\nimport script from \"./approved_icon.vue?vue&type=script&lang=js\"\nexport * from \"./approved_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.isApproved)?_c('gl-icon',{attrs:{\"name\":\"mobile-issue-close\",\"variant\":\"success\",\"size\":16}}):_c('div',{staticClass:\"square s16\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlIcon, GlPopover, GlLink, GlSprintf } from '@gitlab/ui';\nimport { __, s__, sprintf } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nconst i18n = {\n  autoApproved: s__('Approvals|Auto approved'),\n  actionRequired: s__('Approvals|Action required'),\n  optional: __('Optional'),\n  help: __('help'),\n  countOfTotal: s__('Approvals|%{count} of %{total}'),\n  popover: {\n    autoApproved: {\n      title: s__('Approvals|Rule automatically approved'),\n      text: s__(\n        'Approvals|It looks like there was a conflict between the rules for approving this Merge Request and the users who were eligible to approve it. As a result, the system has automatically approved it to keep things moving.',\n      ),\n      suggestion1: s__(\n        'Approvals|Verify your %{eligibleApproverLinkStart}eligible approvers%{eligibleApproverLinkEnd} and %{approvalSettingsLinkStart}approval settings%{approvalSettingsLinkEnd} agree with each other.',\n      ),\n    },\n    actionRequired: {\n      title: s__('Approvals|Rule cannot be approved'),\n      text: s__(\n        'Approvals|The number of people who need to approve this is more than those who are allowed to. Please ask the project owner to update %{securityPolicy}.',\n      ),\n      suggestion1: s__(\n        'Approvals|Verify the number of %{linkStart}eligible security approvers%{linkEnd} matches the required approvers for the security policy.',\n      ),\n      suggestion2: s__(\n        'Approvals|Verify your %{linkStart}approval settings%{linkEnd} do not conflict with this rule.',\n      ),\n    },\n  },\n};\n\nexport default {\n  components: {\n    GlIcon,\n    GlPopover,\n    GlLink,\n    GlSprintf,\n  },\n  props: {\n    rule: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    pendingApprovalsText() {\n      if (this.isAutoApproved) {\n        return i18n.autoApproved;\n      }\n      if (this.isActionRequired) {\n        return i18n.actionRequired;\n      }\n      if (!this.rule.approvalsRequired) {\n        return i18n.optional;\n      }\n      return sprintf(i18n.countOfTotal, {\n        count: this.rule.approvedBy.nodes.length,\n        total: this.rule.approvalsRequired,\n      });\n    },\n    hasInvalidRules() {\n      return this.rule.invalid;\n    },\n    isAutoApproved() {\n      return this.hasInvalidRules && this.rule.allowMergeWhenInvalid;\n    },\n    isActionRequired() {\n      return this.hasInvalidRules && !this.rule.allowMergeWhenInvalid;\n    },\n    invalidRulesClasses() {\n      return { 'gl-text-danger': this.isActionRequired, 'gl-text-subtle': this.isAutoApproved };\n    },\n  },\n  i18n,\n  rulesDocsPath: helpPagePath('user/project/merge_requests/approvals/rules.html', {\n    anchor: 'eligible-approvers',\n  }),\n  settingsDocsPath: helpPagePath('user/project/merge_requests/approvals/settings', {\n    anchor: 'edit-merge-request-approval-settings',\n  }),\n};\n</script>\n\n<template>\n  <span>\n    <span v-if=\"hasInvalidRules\" class=\"vertical-align-text-top js-help\">\n      <gl-icon\n        :id=\"rule.name\"\n        name=\"status_warning\"\n        class=\"gl-cursor-help\"\n        :class=\"invalidRulesClasses\"\n        :aria-label=\"$options.i18n.help\"\n        :size=\"14\"\n      />\n      <gl-popover\n        v-if=\"isAutoApproved\"\n        :target=\"rule.name\"\n        placement=\"top\"\n        :title=\"$options.i18n.popover.autoApproved.title\"\n        data-testid=\"popover-auto-approved\"\n      >\n        {{ $options.i18n.popover.autoApproved.text }}\n        <ul class=\"gl-my-2 gl-ml-6 gl-pl-0\">\n          <li>\n            <gl-sprintf :message=\"$options.i18n.popover.autoApproved.suggestion1\">\n              <template #eligibleApproverLink=\"{ content }\">\n                <gl-link :href=\"$options.rulesDocsPath\" class=\"gl-text-sm\" target=\"_blank\">\n                  {{ content }}\n                </gl-link>\n              </template>\n              <template #approvalSettingsLink=\"{ content }\">\n                <gl-link :href=\"$options.settingsDocsPath\" class=\"gl-text-sm\" target=\"_blank\">\n                  {{ content }}\n                </gl-link>\n              </template>\n            </gl-sprintf>\n          </li>\n        </ul>\n      </gl-popover>\n      <gl-popover\n        v-if=\"isActionRequired\"\n        :target=\"rule.name\"\n        placement=\"top\"\n        :title=\"$options.i18n.popover.actionRequired.title\"\n        data-testid=\"popover-action-required\"\n      >\n        <gl-sprintf :message=\"$options.i18n.popover.actionRequired.text\">\n          <template #securityPolicy>{{ rule.name }}</template>\n        </gl-sprintf>\n        <ul class=\"gl-my-2 gl-ml-6 gl-pl-0\">\n          <li>\n            <gl-sprintf :message=\"$options.i18n.popover.actionRequired.suggestion1\">\n              <template #link=\"{ content }\">\n                <gl-link :href=\"$options.rulesDocsPath\" class=\"gl-text-sm\" target=\"_blank\">\n                  {{ content }}\n                </gl-link>\n              </template>\n            </gl-sprintf>\n          </li>\n          <li>\n            <gl-sprintf :message=\"$options.i18n.popover.actionRequired.suggestion2\">\n              <template #link=\"{ content }\">\n                <gl-link :href=\"$options.settingsDocsPath\" class=\"gl-text-sm\" target=\"_blank\">\n                  {{ content }}\n                </gl-link>\n              </template>\n            </gl-sprintf>\n          </li>\n        </ul>\n      </gl-popover>\n    </span>\n    <span data-testid=\"approvals-text\" :class=\"invalidRulesClasses\">\n      {{ pendingApprovalsText }}\n    </span>\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!./number_of_approvals.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./number_of_approvals.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./number_of_approvals.vue?vue&type=template&id=5d5dff68\"\nimport script from \"./number_of_approvals.vue?vue&type=script&lang=js\"\nexport * from \"./number_of_approvals.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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',[(_vm.hasInvalidRules)?_c('span',{staticClass:\"vertical-align-text-top js-help\"},[_c('gl-icon',{staticClass:\"gl-cursor-help\",class:_vm.invalidRulesClasses,attrs:{\"id\":_vm.rule.name,\"name\":\"status_warning\",\"aria-label\":_vm.$options.i18n.help,\"size\":14}}),_vm._v(\" \"),(_vm.isAutoApproved)?_c('gl-popover',{attrs:{\"target\":_vm.rule.name,\"placement\":\"top\",\"title\":_vm.$options.i18n.popover.autoApproved.title,\"data-testid\":\"popover-auto-approved\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.popover.autoApproved.text)+\"\\n      \"),_c('ul',{staticClass:\"gl-my-2 gl-ml-6 gl-pl-0\"},[_c('li',[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.popover.autoApproved.suggestion1},scopedSlots:_vm._u([{key:\"eligibleApproverLink\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":_vm.$options.rulesDocsPath,\"target\":\"_blank\"}},[_vm._v(\"\\n                \"+_vm._s(content)+\"\\n              \")])]}},{key:\"approvalSettingsLink\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":_vm.$options.settingsDocsPath,\"target\":\"_blank\"}},[_vm._v(\"\\n                \"+_vm._s(content)+\"\\n              \")])]}}],null,false,1223161483)})],1)])]):_vm._e(),_vm._v(\" \"),(_vm.isActionRequired)?_c('gl-popover',{attrs:{\"target\":_vm.rule.name,\"placement\":\"top\",\"title\":_vm.$options.i18n.popover.actionRequired.title,\"data-testid\":\"popover-action-required\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.popover.actionRequired.text},scopedSlots:_vm._u([{key:\"securityPolicy\",fn:function(){return [_vm._v(_vm._s(_vm.rule.name))]},proxy:true}],null,false,454644417)}),_vm._v(\" \"),_c('ul',{staticClass:\"gl-my-2 gl-ml-6 gl-pl-0\"},[_c('li',[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.popover.actionRequired.suggestion1},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":_vm.$options.rulesDocsPath,\"target\":\"_blank\"}},[_vm._v(\"\\n                \"+_vm._s(content)+\"\\n              \")])]}}],null,false,686071221)})],1),_vm._v(\" \"),_c('li',[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.popover.actionRequired.suggestion2},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":_vm.$options.settingsDocsPath,\"target\":\"_blank\"}},[_vm._v(\"\\n                \"+_vm._s(content)+\"\\n              \")])]}}],null,false,2048366893)})],1)])],1):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('span',{class:_vm.invalidRulesClasses,attrs:{\"data-testid\":\"approvals-text\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.pendingApprovalsText)+\"\\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!./approvals_users_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!./approvals_users_list.vue?vue&type=script&lang=js\"","<script>\nimport UserAvatarList from '~/vue_shared/components/user_avatar/user_avatar_list.vue';\n\nexport default {\n  components: {\n    UserAvatarList,\n  },\n  props: {\n    label: {\n      type: String,\n      required: true,\n    },\n    users: {\n      type: Array,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <span class=\"gl-text-sm gl-text-subtle\">{{ label }}</span>\n    <user-avatar-list class=\"gl-ml-2\" :items=\"users\" :img-size=\"16\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./approvals_users_list.vue?vue&type=template&id=8c6656b4\"\nimport script from \"./approvals_users_list.vue?vue&type=script&lang=js\"\nexport * from \"./approvals_users_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',[_c('span',{staticClass:\"gl-text-sm gl-text-subtle\"},[_vm._v(_vm._s(_vm.label))]),_vm._v(\" \"),_c('user-avatar-list',{staticClass:\"gl-ml-2\",attrs:{\"items\":_vm.users,\"img-size\":16}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { sprintf, __, n__, s__ } from '~/locale';\n\nexport const convertRulesToStrings = (rules) => {\n  const reportTypes = rules.map((rule) => rule.reportType || '');\n  const strings = [...new Set(reportTypes)].map((reportType) => {\n    switch (reportType) {\n      case 'SCAN_FINDING':\n        return s__(\n          'SecurityOrchestration|a security scanner found vulnerabilities matching the criteria',\n        );\n      case 'LICENSE_SCANNING':\n        return s__('SecurityOrchestration|a license scanner found license violations');\n      case 'ANY_MERGE_REQUEST':\n        return s__(\n          'SecurityOrchestration|a merge request has been opened against a protected branch',\n        );\n      default:\n        return s__('SecurityOrchestration|a security policy has been violated');\n    }\n  });\n\n  let rulesString = '';\n  if (strings.length === 1) {\n    [rulesString] = strings;\n  } else if (strings.length > 1) {\n    const last = strings.pop();\n    rulesString = strings.join(__(', ')) + __(' and ') + last;\n  }\n\n  return rulesString;\n};\n\nexport const createSecurityPolicyRuleHelpText = (scanResultPolicies) => {\n  const applicableRules = scanResultPolicies.filter((policy) => policy.approvalsRequired);\n\n  if (!applicableRules.length) return '';\n\n  const approvals = applicableRules[0].approvalsRequired;\n  const rulesString = convertRulesToStrings(applicableRules);\n\n  return sprintf(\n    n__(\n      'This policy needs %{approvals} approval because %{rules}',\n      'This policy needs %{approvals} approvals because %{rules}',\n      approvals,\n    ),\n    { approvals, rules: rulesString },\n  );\n};\n","<script>\nimport { GlSkeletonLoader, GlTooltipDirective } from '@gitlab/ui';\nimport { uniqueId, orderBy } from 'lodash';\nimport ApprovalCheckRulePopover from 'ee/approvals/components/mr_widget_approval_check/approval_check_rule_popover.vue';\nimport EmptyRuleApprovers from 'ee/approvals/components/rules/empty_rule_approvers.vue';\nimport { RULE_TYPE_CODE_OWNER, RULE_TYPE_ANY_APPROVER } from 'ee/approvals/constants';\nimport { sprintf, __, s__ } from '~/locale';\nimport UserAvatarList from '~/vue_shared/components/user_avatar/user_avatar_list.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport ApprovedIcon from './approved_icon.vue';\nimport NumberOfApprovals from './number_of_approvals.vue';\nimport ApprovalsUsersList from './approvals_users_list.vue';\nimport approvalRulesQuery from './queries/approval_rules.query.graphql';\nimport mergeRequestApprovalStateUpdated from './queries/approval_rules.subscription.graphql';\nimport { createSecurityPolicyRuleHelpText } from './utils';\n\nconst INCLUDE_APPROVERS = 1;\nconst DO_NOT_INCLUDE_APPROVERS = 2;\n\nexport default {\n  apollo: {\n    mergeRequest: {\n      query: approvalRulesQuery,\n      variables() {\n        return {\n          projectPath: this.projectPath,\n          iid: this.iid,\n        };\n      },\n      update: (data) => data?.project?.mergeRequest,\n      subscribeToMore: {\n        document: mergeRequestApprovalStateUpdated,\n        variables() {\n          return {\n            issuableId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.mergeRequest.id),\n          };\n        },\n        skip() {\n          return !this.mergeRequest?.id;\n        },\n        updateQuery(\n          _,\n          {\n            subscriptionData: {\n              data: { mergeRequestApprovalStateUpdated: queryResult },\n            },\n          },\n        ) {\n          if (queryResult) {\n            this.mergeRequest = queryResult;\n          }\n        },\n      },\n    },\n  },\n  components: {\n    GlSkeletonLoader,\n    UserAvatarList,\n    ApprovedIcon,\n    ApprovalCheckRulePopover,\n    EmptyRuleApprovers,\n    NumberOfApprovals,\n    ApprovalsUsersList,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  props: {\n    projectPath: {\n      type: String,\n      required: true,\n    },\n    iid: {\n      type: String,\n      required: true,\n    },\n    codeCoverageCheckHelpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    eligibleApproversDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      mergeRequest: null,\n    };\n  },\n  computed: {\n    sections() {\n      const approvalRules = this.mergeRequest.approvalState.rules;\n\n      return [\n        {\n          id: uniqueId(),\n          title: '',\n          rules: approvalRules.filter((rule) => rule.type.toLowerCase() !== RULE_TYPE_CODE_OWNER),\n        },\n        {\n          id: uniqueId(),\n          title: __('Code Owners'),\n          rules: orderBy(\n            approvalRules\n              .filter((rule) => rule.type.toLowerCase() === RULE_TYPE_CODE_OWNER)\n              .map((rule) => ({ ...rule, nameClass: 'gl-font-monospace gl-break-all' })),\n            [(o) => o.section === 'codeowners', 'name', 'section'],\n            ['desc', 'asc', 'asc'],\n          ),\n        },\n      ].filter((x) => x.rules.length);\n    },\n  },\n  methods: {\n    getTooltipText(rule) {\n      if (!rule?.scanResultPolicies) return '';\n      return createSecurityPolicyRuleHelpText(rule.scanResultPolicies);\n    },\n    summaryText(rule) {\n      return rule.approvalsRequired === 0\n        ? this.summaryOptionalText(rule)\n        : this.summaryRequiredText(rule);\n    },\n    summaryRequiredText(rule) {\n      return sprintf(__('%{count} of %{required} approvals from %{name}'), {\n        count: rule.approvedBy.nodes.length,\n        required: rule.approvalsRequired,\n        name: rule.name,\n      });\n    },\n    summaryOptionalText(rule) {\n      return sprintf(__('%{count} approvals from %{name}'), {\n        count: rule.approvedBy.nodes.length,\n        name: rule.name,\n      });\n    },\n    sectionNameLabel(rule) {\n      return sprintf(s__('Approvals|Section: %{section}'), { section: rule.section });\n    },\n    numberOfColumns(rule) {\n      return rule.type.toLowerCase() === this.$options.ruleTypeAnyApprover\n        ? DO_NOT_INCLUDE_APPROVERS\n        : INCLUDE_APPROVERS;\n    },\n  },\n  i18n: {\n    commentedBy: s__('MRApprovals|Commented by'),\n    approvedBy: s__('MRApprovals|Approved by'),\n  },\n  ruleTypeAnyApprover: RULE_TYPE_ANY_APPROVER,\n};\n</script>\n\n<template>\n  <table class=\"table gl-border-t gl-m-0 gl-border-t-section gl-bg-subtle\">\n    <thead class=\"thead-white text-nowrap\">\n      <tr class=\"gl-hidden gl-text-sm md:gl-table-row\">\n        <th class=\"!gl-bg-white\"></th>\n        <th class=\"gl-w-full !gl-bg-white !gl-pl-0\">{{ s__('MRApprovals|Approvers') }}</th>\n        <th class=\"gl-w-full !gl-bg-white\"></th>\n        <th class=\"gl-w-full !gl-bg-white\">{{ s__('MRApprovals|Approvals') }}</th>\n        <th class=\"gl-w-full !gl-bg-white\">{{ s__('MRApprovals|Commented by') }}</th>\n        <th class=\"gl-w-full !gl-bg-white\">{{ s__('MRApprovals|Approved by') }}</th>\n      </tr>\n    </thead>\n    <tbody v-if=\"$apollo.queries.mergeRequest.loading || !mergeRequest\" class=\"border-top-0\">\n      <tr>\n        <td></td>\n        <td class=\"!gl-pl-0\">\n          <div class=\"gl-flex\" style=\"width: 100px; height: 20px\">\n            <gl-skeleton-loader :width=\"100\" :height=\"20\">\n              <rect width=\"100\" height=\"20\" x=\"0\" y=\"0\" rx=\"4\" />\n            </gl-skeleton-loader>\n          </div>\n        </td>\n        <td></td>\n        <td>\n          <div class=\"gl-flex\" style=\"width: 50px; height: 20px\">\n            <gl-skeleton-loader :width=\"50\" :height=\"20\">\n              <rect width=\"50\" height=\"20\" x=\"0\" y=\"0\" rx=\"4\" />\n            </gl-skeleton-loader>\n          </div>\n        </td>\n        <td>\n          <div class=\"gl-flex\" style=\"width: 20px; height: 20px\">\n            <gl-skeleton-loader :width=\"20\" :height=\"20\">\n              <circle cx=\"10\" cy=\"10\" r=\"10\" />\n            </gl-skeleton-loader>\n          </div>\n        </td>\n        <td>\n          <div class=\"gl-flex\" style=\"width: 20px; height: 20px\">\n            <gl-skeleton-loader :width=\"20\" :height=\"20\">\n              <circle cx=\"10\" cy=\"10\" r=\"10\" />\n            </gl-skeleton-loader>\n          </div>\n        </td>\n      </tr>\n    </tbody>\n    <template v-else>\n      <tbody v-for=\"{ id, title, rules } in sections\" :key=\"id\" class=\"border-top-0\">\n        <tr v-if=\"title\" class=\"js-section-title gl-bg-white\">\n          <td class=\"w-0\"></td>\n          <td colspan=\"99\" class=\"!gl-pl-0 gl-text-sm gl-text-subtle\">\n            <strong>{{ title }}</strong>\n          </td>\n        </tr>\n        <tr v-for=\"rule in rules\" :key=\"rule.id\" data-testid=\"approval-rules-row\">\n          <td class=\"gl-min-w-9 !gl-pr-4\">\n            <approved-icon class=\"gl-pl-2\" :is-approved=\"rule.approved\" />\n          </td>\n          <td :colspan=\"numberOfColumns(rule)\" class=\"!gl-pl-0\">\n            <div class=\"js-name gl-hidden gl-items-center md:gl-flex\">\n              <empty-rule-approvers\n                v-if=\"rule.type.toLowerCase() === $options.ruleTypeAnyApprover\"\n                :eligible-approvers-docs-path=\"eligibleApproversDocsPath\"\n              />\n              <span v-else>\n                <span\n                  v-if=\"rule.section && rule.section !== 'codeowners'\"\n                  :aria-label=\"sectionNameLabel(rule)\"\n                  class=\"small gl-block gl-text-subtle\"\n                  data-testid=\"rule-section\"\n                >\n                  {{ rule.section }}\n                </span>\n                <span\n                  v-gl-tooltip.left\n                  :class=\"rule.nameClass\"\n                  :title=\"getTooltipText(rule)\"\n                  data-testid=\"approval-name\"\n                >\n                  {{ rule.name }}\n                </span>\n              </span>\n              <approval-check-rule-popover\n                :rule=\"rule\"\n                :code-coverage-check-help-page-path=\"codeCoverageCheckHelpPagePath\"\n              />\n            </div>\n            <div class=\"flex-column js-summary gl-flex md:gl-hidden\">\n              <empty-rule-approvers\n                v-if=\"rule.type.toLowerCase() === $options.ruleTypeAnyApprover\"\n                :eligible-approvers-docs-path=\"eligibleApproversDocsPath\"\n              />\n              <span v-else>{{ summaryText(rule) }}</span>\n              <user-avatar-list\n                v-if=\"!rule.fallback && rule.eligibleApprovers.length\"\n                class=\"gl-my-3\"\n                :items=\"rule.eligibleApprovers\"\n                :img-size=\"24\"\n                empty-text=\"\"\n              />\n              <approvals-users-list\n                v-if=\"rule.commentedBy.nodes.length > 0\"\n                :label=\"$options.i18n.commentedBy\"\n                :users=\"rule.commentedBy.nodes\"\n                class=\"gl-mb-3\"\n              />\n              <approvals-users-list\n                v-if=\"rule.approvedBy.nodes.length > 0\"\n                :label=\"$options.i18n.approvedBy\"\n                :users=\"rule.approvedBy.nodes\"\n                class=\"gl-mb-3\"\n              />\n            </div>\n          </td>\n          <td\n            v-if=\"rule.type.toLowerCase() !== $options.ruleTypeAnyApprover\"\n            class=\"js-approvers gl-hidden gl-min-w-20 md:gl-table-cell\"\n          >\n            <user-avatar-list\n              :items=\"rule.eligibleApprovers\"\n              :img-size=\"24\"\n              empty-text=\"\"\n              class=\"gl-flex gl-flex-wrap gl-gap-y-2\"\n            />\n          </td>\n          <td class=\"w-0 js-pending gl-hidden gl-whitespace-nowrap md:gl-table-cell\">\n            <number-of-approvals :rule=\"rule\" />\n          </td>\n          <td class=\"js-commented-by gl-hidden md:gl-table-cell\">\n            <user-avatar-list\n              :items=\"rule.commentedBy.nodes\"\n              :img-size=\"24\"\n              empty-text=\"\"\n              class=\"gl-flex gl-flex-wrap gl-gap-y-2\"\n            />\n          </td>\n          <td class=\"js-approved-by gl-hidden md:gl-table-cell\">\n            <user-avatar-list\n              :items=\"rule.approvedBy.nodes\"\n              :img-size=\"24\"\n              empty-text=\"\"\n              class=\"gl-flex gl-flex-wrap gl-gap-y-2\"\n            />\n          </td>\n        </tr>\n      </tbody>\n    </template>\n  </table>\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!./approvals_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!./approvals_list.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvals_footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvals_footer.vue?vue&type=script&lang=js\"","<script>\nimport ApprovalsList from './approvals_list.vue';\n\nexport default {\n  components: {\n    ApprovalsList,\n  },\n  props: {\n    codeCoverageCheckHelpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    eligibleApproversDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    projectPath: {\n      type: String,\n      required: true,\n    },\n    iid: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"mr-widget-extension gl-rounded-bl-base gl-rounded-br-base gl-border-t-0\"\n    data-testid=\"approvals-footer\"\n  >\n    <approvals-list\n      :code-coverage-check-help-page-path=\"codeCoverageCheckHelpPagePath\"\n      :eligible-approvers-docs-path=\"eligibleApproversDocsPath\"\n      :project-path=\"projectPath\"\n      :iid=\"iid\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./approvals_list.vue?vue&type=template&id=20b398f4\"\nimport script from \"./approvals_list.vue?vue&type=script&lang=js\"\nexport * from \"./approvals_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('table',{staticClass:\"table gl-border-t gl-m-0 gl-border-t-section gl-bg-subtle\"},[_c('thead',{staticClass:\"thead-white text-nowrap\"},[_c('tr',{staticClass:\"gl-hidden gl-text-sm md:gl-table-row\"},[_c('th',{staticClass:\"!gl-bg-white\"}),_vm._v(\" \"),_c('th',{staticClass:\"gl-w-full !gl-bg-white !gl-pl-0\"},[_vm._v(_vm._s(_vm.s__('MRApprovals|Approvers')))]),_vm._v(\" \"),_c('th',{staticClass:\"gl-w-full !gl-bg-white\"}),_vm._v(\" \"),_c('th',{staticClass:\"gl-w-full !gl-bg-white\"},[_vm._v(_vm._s(_vm.s__('MRApprovals|Approvals')))]),_vm._v(\" \"),_c('th',{staticClass:\"gl-w-full !gl-bg-white\"},[_vm._v(_vm._s(_vm.s__('MRApprovals|Commented by')))]),_vm._v(\" \"),_c('th',{staticClass:\"gl-w-full !gl-bg-white\"},[_vm._v(_vm._s(_vm.s__('MRApprovals|Approved by')))])])]),_vm._v(\" \"),(_vm.$apollo.queries.mergeRequest.loading || !_vm.mergeRequest)?_c('tbody',{staticClass:\"border-top-0\"},[_c('tr',[_c('td'),_vm._v(\" \"),_c('td',{staticClass:\"!gl-pl-0\"},[_c('div',{staticClass:\"gl-flex\",staticStyle:{\"width\":\"100px\",\"height\":\"20px\"}},[_c('gl-skeleton-loader',{attrs:{\"width\":100,\"height\":20}},[_c('rect',{attrs:{\"width\":\"100\",\"height\":\"20\",\"x\":\"0\",\"y\":\"0\",\"rx\":\"4\"}})])],1)]),_vm._v(\" \"),_c('td'),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"gl-flex\",staticStyle:{\"width\":\"50px\",\"height\":\"20px\"}},[_c('gl-skeleton-loader',{attrs:{\"width\":50,\"height\":20}},[_c('rect',{attrs:{\"width\":\"50\",\"height\":\"20\",\"x\":\"0\",\"y\":\"0\",\"rx\":\"4\"}})])],1)]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"gl-flex\",staticStyle:{\"width\":\"20px\",\"height\":\"20px\"}},[_c('gl-skeleton-loader',{attrs:{\"width\":20,\"height\":20}},[_c('circle',{attrs:{\"cx\":\"10\",\"cy\":\"10\",\"r\":\"10\"}})])],1)]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"gl-flex\",staticStyle:{\"width\":\"20px\",\"height\":\"20px\"}},[_c('gl-skeleton-loader',{attrs:{\"width\":20,\"height\":20}},[_c('circle',{attrs:{\"cx\":\"10\",\"cy\":\"10\",\"r\":\"10\"}})])],1)])])]):_vm._l((_vm.sections),function({ id, title, rules }){return _c('tbody',{key:id,staticClass:\"border-top-0\"},[(title)?_c('tr',{staticClass:\"js-section-title gl-bg-white\"},[_c('td',{staticClass:\"w-0\"}),_vm._v(\" \"),_c('td',{staticClass:\"!gl-pl-0 gl-text-sm gl-text-subtle\",attrs:{\"colspan\":\"99\"}},[_c('strong',[_vm._v(_vm._s(title))])])]):_vm._e(),_vm._v(\" \"),_vm._l((rules),function(rule){return _c('tr',{key:rule.id,attrs:{\"data-testid\":\"approval-rules-row\"}},[_c('td',{staticClass:\"gl-min-w-9 !gl-pr-4\"},[_c('approved-icon',{staticClass:\"gl-pl-2\",attrs:{\"is-approved\":rule.approved}})],1),_vm._v(\" \"),_c('td',{staticClass:\"!gl-pl-0\",attrs:{\"colspan\":_vm.numberOfColumns(rule)}},[_c('div',{staticClass:\"js-name gl-hidden gl-items-center md:gl-flex\"},[(rule.type.toLowerCase() === _vm.$options.ruleTypeAnyApprover)?_c('empty-rule-approvers',{attrs:{\"eligible-approvers-docs-path\":_vm.eligibleApproversDocsPath}}):_c('span',[(rule.section && rule.section !== 'codeowners')?_c('span',{staticClass:\"small gl-block gl-text-subtle\",attrs:{\"aria-label\":_vm.sectionNameLabel(rule),\"data-testid\":\"rule-section\"}},[_vm._v(\"\\n                \"+_vm._s(rule.section)+\"\\n              \")]):_vm._e(),_vm._v(\" \"),_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left\",modifiers:{\"left\":true}}],class:rule.nameClass,attrs:{\"title\":_vm.getTooltipText(rule),\"data-testid\":\"approval-name\"}},[_vm._v(\"\\n                \"+_vm._s(rule.name)+\"\\n              \")])]),_vm._v(\" \"),_c('approval-check-rule-popover',{attrs:{\"rule\":rule,\"code-coverage-check-help-page-path\":_vm.codeCoverageCheckHelpPagePath}})],1),_vm._v(\" \"),_c('div',{staticClass:\"flex-column js-summary gl-flex md:gl-hidden\"},[(rule.type.toLowerCase() === _vm.$options.ruleTypeAnyApprover)?_c('empty-rule-approvers',{attrs:{\"eligible-approvers-docs-path\":_vm.eligibleApproversDocsPath}}):_c('span',[_vm._v(_vm._s(_vm.summaryText(rule)))]),_vm._v(\" \"),(!rule.fallback && rule.eligibleApprovers.length)?_c('user-avatar-list',{staticClass:\"gl-my-3\",attrs:{\"items\":rule.eligibleApprovers,\"img-size\":24,\"empty-text\":\"\"}}):_vm._e(),_vm._v(\" \"),(rule.commentedBy.nodes.length > 0)?_c('approvals-users-list',{staticClass:\"gl-mb-3\",attrs:{\"label\":_vm.$options.i18n.commentedBy,\"users\":rule.commentedBy.nodes}}):_vm._e(),_vm._v(\" \"),(rule.approvedBy.nodes.length > 0)?_c('approvals-users-list',{staticClass:\"gl-mb-3\",attrs:{\"label\":_vm.$options.i18n.approvedBy,\"users\":rule.approvedBy.nodes}}):_vm._e()],1)]),_vm._v(\" \"),(rule.type.toLowerCase() !== _vm.$options.ruleTypeAnyApprover)?_c('td',{staticClass:\"js-approvers gl-hidden gl-min-w-20 md:gl-table-cell\"},[_c('user-avatar-list',{staticClass:\"gl-flex gl-flex-wrap gl-gap-y-2\",attrs:{\"items\":rule.eligibleApprovers,\"img-size\":24,\"empty-text\":\"\"}})],1):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"w-0 js-pending gl-hidden gl-whitespace-nowrap md:gl-table-cell\"},[_c('number-of-approvals',{attrs:{\"rule\":rule}})],1),_vm._v(\" \"),_c('td',{staticClass:\"js-commented-by gl-hidden md:gl-table-cell\"},[_c('user-avatar-list',{staticClass:\"gl-flex gl-flex-wrap gl-gap-y-2\",attrs:{\"items\":rule.commentedBy.nodes,\"img-size\":24,\"empty-text\":\"\"}})],1),_vm._v(\" \"),_c('td',{staticClass:\"js-approved-by gl-hidden md:gl-table-cell\"},[_c('user-avatar-list',{staticClass:\"gl-flex gl-flex-wrap gl-gap-y-2\",attrs:{\"items\":rule.approvedBy.nodes,\"img-size\":24,\"empty-text\":\"\"}})],1)])})],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!./approvals.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvals.vue?vue&type=script&lang=js\"","<script>\nimport Approvals from '~/vue_merge_request_widget/components/approvals/approvals.vue';\nimport approvalsMixin from '~/vue_merge_request_widget/mixins/approvals';\nimport assignReviewersActionButton from '../../mixins/assign_reviewers_action_button';\nimport ApprovalsAuth from './approvals_auth.vue';\nimport ApprovalsFooter from './approvals_footer.vue';\n\nexport default {\n  name: 'MRWidgetMultipleRuleApprovals',\n  components: {\n    Approvals,\n    ApprovalsAuth,\n    ApprovalsFooter,\n  },\n  mixins: [assignReviewersActionButton, approvalsMixin],\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    service: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      modalId: 'approvals-auth',\n      collapsed: true,\n    };\n  },\n  computed: {\n    isBasic() {\n      return this.mr.approvalsWidgetType === 'base';\n    },\n    approvedBy() {\n      return this.approvals?.approvedBy?.nodes || [];\n    },\n    approvalsRequired() {\n      return (!this.isBasic && this.approvals?.approvalsRequired) || 0;\n    },\n    isOptional() {\n      return !this.approvedBy.length && !this.approvalsRequired;\n    },\n    hasFooter() {\n      return Boolean(this.approvals);\n    },\n    requirePasswordToApprove() {\n      return !this.isBasic && this.mr.requirePasswordToApprove;\n    },\n    hasAllApprovals() {\n      return (this.approvals?.approvalsLeft || 0) === 0;\n    },\n  },\n  methods: {\n    toggleCollapsed() {\n      this.collapsed = !this.collapsed;\n    },\n  },\n};\n</script>\n<template>\n  <approvals\n    :mr=\"mr\"\n    :service=\"service\"\n    :is-optional-default=\"isOptional\"\n    :require-password-to-approve=\"requirePasswordToApprove\"\n    :modal-id=\"modalId\"\n    :collapsed=\"collapsed\"\n    :has-all-approvals=\"hasAllApprovals\"\n    :action-buttons=\"tertiaryActionsButtons\"\n    @toggle=\"toggleCollapsed\"\n  >\n    <template v-if=\"!isBasic\" #default=\"{ isApproving, approveWithAuth, hasApprovalAuthError }\">\n      <approvals-auth\n        :is-approving=\"isApproving\"\n        :has-error=\"hasApprovalAuthError\"\n        :modal-id=\"modalId\"\n        @approve=\"approveWithAuth\"\n        @hide=\"clearError\"\n      />\n    </template>\n    <template v-if=\"!isBasic && !collapsed\" #footer>\n      <approvals-footer\n        v-if=\"hasFooter\"\n        :code-coverage-check-help-page-path=\"mr.codeCoverageCheckHelpPagePath\"\n        :eligible-approvers-docs-path=\"mr.eligibleApproversDocsPath\"\n        :project-path=\"mr.targetProjectFullPath\"\n        :iid=\"`${mr.iid}`\"\n      />\n    </template>\n  </approvals>\n</template>\n","import { render, staticRenderFns } from \"./approvals_footer.vue?vue&type=template&id=7eb8423e\"\nimport script from \"./approvals_footer.vue?vue&type=script&lang=js\"\nexport * from \"./approvals_footer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-widget-extension gl-rounded-bl-base gl-rounded-br-base gl-border-t-0\",attrs:{\"data-testid\":\"approvals-footer\"}},[_c('approvals-list',{attrs:{\"code-coverage-check-help-page-path\":_vm.codeCoverageCheckHelpPagePath,\"eligible-approvers-docs-path\":_vm.eligibleApproversDocsPath,\"project-path\":_vm.projectPath,\"iid\":_vm.iid}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./approvals.vue?vue&type=template&id=68e8f314\"\nimport script from \"./approvals.vue?vue&type=script&lang=js\"\nexport * from \"./approvals.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('approvals',{attrs:{\"mr\":_vm.mr,\"service\":_vm.service,\"is-optional-default\":_vm.isOptional,\"require-password-to-approve\":_vm.requirePasswordToApprove,\"modal-id\":_vm.modalId,\"collapsed\":_vm.collapsed,\"has-all-approvals\":_vm.hasAllApprovals,\"action-buttons\":_vm.tertiaryActionsButtons},on:{\"toggle\":_vm.toggleCollapsed},scopedSlots:_vm._u([(!_vm.isBasic)?{key:\"default\",fn:function({ isApproving, approveWithAuth, hasApprovalAuthError }){return [_c('approvals-auth',{attrs:{\"is-approving\":isApproving,\"has-error\":hasApprovalAuthError,\"modal-id\":_vm.modalId},on:{\"approve\":approveWithAuth,\"hide\":_vm.clearError}})]}}:null,(!_vm.isBasic && !_vm.collapsed)?{key:\"footer\",fn:function(){return [(_vm.hasFooter)?_c('approvals-footer',{attrs:{\"code-coverage-check-help-page-path\":_vm.mr.codeCoverageCheckHelpPagePath,\"eligible-approvers-docs-path\":_vm.mr.eligibleApproversDocsPath,\"project-path\":_vm.mr.targetProjectFullPath,\"iid\":`${_vm.mr.iid}`}}):_vm._e()]},proxy:true}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '~/lib/utils/axios_utils';\nimport CEWidgetService from '~/vue_merge_request_widget/services/mr_widget_service';\n\nexport default class MRWidgetService extends CEWidgetService {\n  constructor(mr) {\n    super(mr);\n\n    this.apiApprovalSettingsPath = mr.apiApprovalSettingsPath;\n  }\n\n  approveMergeRequestWithAuth(approvalPassword) {\n    return axios\n      .post(this.apiApprovePath, { approval_password: approvalPassword })\n      .then((res) => res.data);\n  }\n\n  fetchApprovalSettings() {\n    return axios.get(this.apiApprovalSettingsPath).then((res) => res.data);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  fetchReport(endpoint) {\n    return axios.get(endpoint).then((res) => res.data);\n  }\n}\n","import { DETAILED_MERGE_STATUS, MWCP_MERGE_STRATEGY } from '../constants';\nimport { stateKey } from './state_maps';\n\nexport default function deviseState() {\n  if (this.detailedMergeStatus === DETAILED_MERGE_STATUS.PREPARING) {\n    return stateKey.preparing;\n  }\n  if (!this.commitsCount) {\n    return stateKey.nothingToMerge;\n  }\n  if (this.projectArchived) {\n    return stateKey.archived;\n  }\n  if (this.branchMissing) {\n    return stateKey.missingBranch;\n  }\n  if (this.detailedMergeStatus === DETAILED_MERGE_STATUS.CHECKING) {\n    return stateKey.checking;\n  }\n  if (this.canMerge && this.isSHAMismatch) {\n    return stateKey.shaMismatch;\n  }\n  if (\n    this.detailedMergeStatus === DETAILED_MERGE_STATUS.MERGEABLE ||\n    this.detailedMergeStatus === DETAILED_MERGE_STATUS.CI_STILL_RUNNING ||\n    (!this.autoMergeEnabled && this.preferredAutoMergeStrategy === MWCP_MERGE_STRATEGY)\n  ) {\n    return stateKey.readyToMerge;\n  }\n  return null;\n}\n","import CEGetStateKey from '~/vue_merge_request_widget/stores/get_state_key';\nimport { MWCP_MERGE_STRATEGY, MTWCP_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants';\nimport { stateKey as CEStateKey } from '~/vue_merge_request_widget/stores/state_maps';\n\nexport default function getStateKey() {\n  if (this.isGeoSecondaryNode) {\n    return 'geoSecondaryNode';\n  }\n\n  if (\n    !this.autoMergeEnabled &&\n    [MWCP_MERGE_STRATEGY, MTWCP_MERGE_STRATEGY].includes(this.preferredAutoMergeStrategy)\n  ) {\n    return CEStateKey.readyToMerge;\n  }\n\n  return CEGetStateKey.call(this);\n}\n","/**\n * @module finite_state_machine\n */\n\n/**\n * The states to be used with state machine definitions\n * @typedef {Object} FiniteStateMachineStates\n * @property {!Object} ANY_KEY - Any key that maps to a known state\n * @property {!Object} ANY_KEY.on - A dictionary of transition events for the ANY_KEY state that map to a different state\n * @property {!String} ANY_KEY.on.ANY_EVENT - The resulting state that the machine should end at\n */\n\n/**\n * An object whose minimum definition defined here can be used to guard UI state transitions\n * @typedef {Object} StatelessFiniteStateMachineDefinition\n * @property {FiniteStateMachineStates} states\n */\n\n/**\n * An object whose minimum definition defined here can be used to create a live finite state machine\n * @typedef {Object} LiveFiniteStateMachineDefinition\n * @property {String} initial - The initial state for this machine\n * @property {FiniteStateMachineStates} states\n */\n\n/**\n * An object that allows interacting with a stateful, live finite state machine\n * @typedef {Object} LiveStateMachine\n * @property {String} value - The current state of this machine\n * @property {Object} states - The states from when the machine definition was constructed\n * @property {Function} is - {@link module:finite_state_machine~is LiveStateMachine.is}\n * @property {Function} send - {@link module:finite_state_machine~send LiveStatemachine.send}\n */\n\n// This is not user-facing functionality\n/* eslint-disable @gitlab/require-i18n-strings */\n\nfunction hasKeys(object, keys) {\n  return keys.every((key) => Object.keys(object).includes(key));\n}\n\n/**\n * Get an updated state given a machine definition, a starting state, and a transition event\n * @param {StatelessFiniteStateMachineDefinition} definition\n * @param {String} current - The current known state\n * @param {String} event - A transition event\n * @returns {String} A state value\n */\nexport function transition(definition, current, event) {\n  return definition?.states?.[current]?.on[event] || current;\n}\n\nfunction startMachine({ states, initial } = {}) {\n  let current = initial;\n\n  return {\n    /**\n     * A convenience function to test arbitrary input against the machine's current state\n     * @param {String} testState - The value to test against the machine's current state\n     */\n    is(testState) {\n      return current === testState;\n    },\n    /**\n     * A function to transition the live state machine using an arbitrary event\n     * @param {String} event - The event to send to the machine\n     * @returns {String} A string representing the current state. Note this may not have changed if the current state + transition event combination are not valid.\n     */\n    send(event) {\n      current = transition({ states }, current, event);\n\n      return current;\n    },\n    get value() {\n      return current;\n    },\n    set value(forcedState) {\n      current = forcedState;\n    },\n    states,\n  };\n}\n\n/**\n * Create a live state machine\n * @param {LiveFiniteStateMachineDefinition} definition\n * @returns {LiveStateMachine} A live state machine\n */\nexport function machine(definition) {\n  if (!hasKeys(definition, ['initial', 'states'])) {\n    throw new Error(\n      'A state machine must have an initial state (`.initial`) and a dictionary of possible states (`.states`)',\n    );\n  } else if (!hasKeys(definition.states, [definition.initial])) {\n    throw new Error(\n      `Cannot initialize the state machine to state '${definition.initial}'. Is that one of the machine's defined states?`,\n    );\n  } else {\n    return startMachine(definition);\n  }\n}\n","import getStateKey from 'ee_else_ce/vue_merge_request_widget/stores/get_state_key';\nimport { STATUS_CLOSED, STATUS_MERGED, STATUS_OPEN } from '~/issues/constants';\nimport { formatDate, getTimeago, newDate, timeagoLanguageCode } from '~/lib/utils/datetime_utility';\nimport { machine } from '~/lib/utils/finite_state_machine';\nimport { badgeState } from '~/merge_requests/components/merge_request_header.vue';\nimport { cleanLeadingSeparator } from '~/lib/utils/url_utility';\nimport {\n  MTWPS_MERGE_STRATEGY,\n  MT_MERGE_STRATEGY,\n  MWCP_MERGE_STRATEGY,\n  MWPS_MERGE_STRATEGY,\n  MTWCP_MERGE_STRATEGY,\n  STATE_MACHINE,\n  stateToTransitionMap,\n} from '../constants';\nimport { stateKey } from './state_maps';\n\nconst { format } = getTimeago();\n\nconst { states } = STATE_MACHINE;\nconst { IDLE } = states;\n\nexport default class MergeRequestStore {\n  constructor(data) {\n    this.sha = data.diff_head_sha;\n    this.gitlabLogo = data.gitlabLogo;\n\n    this.apiApprovalsPath = data.api_approvals_path;\n    this.apiApprovePath = data.api_approve_path;\n    this.apiUnapprovePath = data.api_unapprove_path;\n    this.hasApprovalsAvailable = data.has_approvals_available;\n\n    this.stateMachine = machine(STATE_MACHINE.definition);\n    this.machineValue = this.stateMachine.value;\n    this.mergeError = data.mergeError;\n    this.multipleApprovalRulesAvailable = data.multiple_approval_rules_available || false;\n    this.id = data.id;\n    this.autoMergeEnabled = false;\n\n    this.setPaths(data);\n\n    this.setData(data);\n    this.initCodeQualityReport(data);\n    this.setGitpodData(data);\n  }\n\n  initCodeQualityReport(data) {\n    this.blobPath = data.blob_path;\n    this.codeQuality = data.codequality_reports_path;\n  }\n\n  setData(data, isRebased) {\n    this.initApprovals();\n\n    this.updateStatusState(data.state);\n\n    if (isRebased) {\n      this.sha = data.diff_head_sha;\n    }\n\n    const pipelineStatus = data.pipeline ? data.pipeline.details.status : null;\n\n    this.squash = data.squash;\n    this.squashIsEnabledByDefault = data.squash_enabled_by_default;\n    this.squashIsReadonly = data.squash_readonly;\n    this.enableSquashBeforeMerge = this.enableSquashBeforeMerge || true;\n    this.squashIsSelected = data.squash_readonly ? data.squash_on_merge : data.squash;\n\n    this.iid = data.iid;\n    this.title = data.title;\n    this.targetBranch = data.target_branch;\n    this.targetBranchSha = data.target_branch_sha;\n    this.sourceBranch = data.source_branch;\n    this.sourceBranchProtected = data.source_branch_protected;\n    this.conflictsDocsPath = data.conflicts_docs_path;\n    this.commitMessage = data.default_merge_commit_message;\n    this.shortMergeCommitSha = data.short_merged_commit_sha;\n    this.mergeCommitSha = data.merged_commit_sha;\n    this.commitMessageWithDescription = data.default_merge_commit_message_with_description;\n    this.divergedCommitsCount = data.diverged_commits_count;\n    this.pipeline = data.pipeline || {};\n    this.pipelineCoverageDelta = data.pipeline_coverage_delta;\n    this.buildsWithCoverage = data.builds_with_coverage;\n    this.mergePipeline = data.merge_pipeline || {};\n    this.deployments = this.deployments || data.deployments || [];\n    this.postMergeDeployments = this.postMergeDeployments || [];\n    this.commits = data.commits_without_merge_commits || [];\n    this.squashCommitMessage = data.default_squash_commit_message;\n    this.rebaseInProgress = data.rebase_in_progress;\n    this.mergeRequestDiffsPath = data.diffs_path;\n    this.approvalsWidgetType = data.approvals_widget_type;\n    this.mergeRequestWidgetPath = data.merge_request_widget_path;\n\n    if (data.issues_links) {\n      const links = data.issues_links;\n      const { closing } = links;\n      const mentioned = links.mentioned_but_not_closing;\n      const assignToMe = links.assign_to_closing;\n      const unassignedCount = links.assign_to_closing_count;\n\n      if (closing || mentioned || unassignedCount) {\n        this.relatedLinks = {\n          closing,\n          mentioned,\n          assignToMe,\n          closingCount: links.closing_count,\n          mentionedCount: links.mentioned_count,\n          unassignedCount: links.assign_to_closing_count,\n        };\n      }\n    }\n\n    this.updatedAt = data.updated_at;\n    this.metrics = MergeRequestStore.buildMetrics(data.metrics);\n    this.setToAutoMergeBy = MergeRequestStore.formatUserObject(data.merge_user || {});\n    this.mergeUserId = data.merge_user_id;\n    this.currentUserId = gon.current_user_id;\n    this.sourceBranchRemoved = !data.source_branch_exists;\n    this.shouldRemoveSourceBranch = data.remove_source_branch || false;\n    this.autoMergeStrategy = data.auto_merge_strategy;\n    this.availableAutoMergeStrategies = data.available_auto_merge_strategies;\n    this.preferredAutoMergeStrategy = MergeRequestStore.getPreferredAutoMergeStrategy(\n      this.availableAutoMergeStrategies,\n    );\n    this.ffOnlyEnabled = data.ff_only_enabled;\n    this.ffMergePossible = data.ff_merge_possible;\n    this.isRemovingSourceBranch = this.isRemovingSourceBranch || false;\n    this.mergeRequestState = data.state;\n    this.isOpen = this.mergeRequestState === STATUS_OPEN;\n    this.latestSHA = data.diff_head_sha;\n    this.isMergeAllowed = data.mergeable || false;\n    this.mergeOngoing = data.merge_ongoing;\n    this.allowCollaboration = data.allow_collaboration;\n    this.sourceProjectId = data.source_project_id;\n    this.targetProjectId = data.target_project_id;\n\n    // CI related\n    this.hasCI = data.has_ci;\n    this.ciStatus = data.ci_status;\n    this.isPipelinePassing =\n      this.ciStatus === 'success' || this.ciStatus === 'success-with-warnings';\n    this.isPipelineSkipped = this.ciStatus === 'skipped';\n    this.pipelineDetailedStatus = pipelineStatus;\n    this.isPipelineActive = data.pipeline ? data.pipeline.active : false;\n    this.pipelineIid = data.pipeline?.iid?.toString() || '';\n    this.pipelineProjectPath = data.pipeline?.project_path\n      ? cleanLeadingSeparator(data.pipeline?.project_path)\n      : '';\n    this.isPipelineBlocked =\n      data.only_allow_merge_if_pipeline_succeeds && pipelineStatus?.group === 'manual';\n    this.faviconOverlayPath = data.favicon_overlay_path;\n    this.terraformReportsPath = data.terraform_reports_path;\n    this.testResultsPath = data.test_reports_path;\n    this.accessibilityReportPath = data.accessibility_report_path;\n    this.exposedArtifactsPath = data.exposed_artifacts_path;\n    this.cancelAutoMergePath = data.cancel_auto_merge_path;\n    this.canCancelAutomaticMerge = Boolean(data.cancel_auto_merge_path);\n    this.ciIntegrationJenkins = data.jenkins_integration_active;\n    this.retargeted = data.retargeted;\n\n    this.newBlobPath = data.new_blob_path;\n    this.sourceBranchPath = data.source_branch_path;\n    this.sourceBranchLink = data.source_branch_with_namespace_link;\n    this.rebasePath = data.rebase_path;\n    this.targetBranchPath = data.target_branch_commits_path;\n    this.targetBranchTreePath = data.target_branch_tree_path;\n    this.conflictResolutionPath = data.conflict_resolution_path;\n    this.removeWIPPath = data.remove_wip_path;\n    this.createIssueToResolveDiscussionsPath = data.create_issue_to_resolve_discussions_path;\n    this.mergePath = data.merge_path;\n    this.mergeCommitPath = data.merged_commit_path;\n    this.canPushToSourceBranch = data.can_push_to_source_branch;\n\n    const currentUser = data.current_user;\n\n    this.cherryPickInForkPath = currentUser.cherry_pick_in_fork_path;\n    this.revertInForkPath = currentUser.revert_in_fork_path;\n\n    this.canRemoveSourceBranch = currentUser.can_remove_source_branch || false;\n    this.canCreateIssue = currentUser.can_create_issue || false;\n    this.canCherryPickInCurrentMR = currentUser.can_cherry_pick_on_current_merge_request || false;\n    this.canRevertInCurrentMR = currentUser.can_revert_on_current_merge_request || false;\n\n    this.setState();\n  }\n\n  setGraphqlData(project) {\n    const { mergeRequest } = project;\n\n    this.updateStatusState(mergeRequest.state);\n\n    this.issuableId = mergeRequest.id;\n    this.projectArchived = project.archived;\n    this.onlyAllowMergeIfPipelineSucceeds = project.onlyAllowMergeIfPipelineSucceeds;\n    this.allowMergeOnSkippedPipeline = project.allowMergeOnSkippedPipeline;\n\n    this.autoMergeEnabled = mergeRequest.autoMergeEnabled;\n    this.canBeMerged = mergeRequest.mergeStatus === 'can_be_merged';\n    this.canMerge = mergeRequest.userPermissions.canMerge;\n\n    this.commitsCount = mergeRequest.commitCount;\n    this.branchMissing =\n      mergeRequest.detailedMergeStatus !== 'NOT_OPEN' &&\n      (!mergeRequest.sourceBranchExists || !mergeRequest.targetBranchExists);\n    this.hasConflicts = mergeRequest.conflicts;\n    this.hasMergeableDiscussionsState = mergeRequest.mergeableDiscussionsState === false;\n    this.mergeError = mergeRequest.mergeError;\n    this.mergeStatus = mergeRequest.mergeStatus;\n    this.mergeAfter = mergeRequest.mergeAfter;\n    this.isPipelineFailed = this.ciStatus === 'failed' || this.ciStatus === 'canceled';\n    this.isSHAMismatch = this.sha !== mergeRequest.diffHeadSha;\n    this.shouldBeRebased = mergeRequest.shouldBeRebased;\n    this.draft = mergeRequest.draft;\n    this.mergeRequestState = mergeRequest.state;\n    this.detailedMergeStatus = mergeRequest.detailedMergeStatus;\n\n    this.setState();\n  }\n\n  setGraphqlSubscriptionData(data) {\n    this.detailedMergeStatus = data.detailedMergeStatus;\n    this.commitsCount = data.commitCount;\n\n    this.setState();\n  }\n\n  updateStatusState(state) {\n    if (this.mergeRequestState !== state && badgeState.updateStatus) {\n      badgeState.updateStatus();\n    }\n  }\n\n  setGitpodData(data) {\n    this.showGitpodButton = data.show_gitpod_button;\n    this.gitpodUrl = data.gitpod_url;\n    this.gitpodEnabled = data.gitpod_enabled;\n    this.userPreferencesGitpodPath = data.user_preferences_gitpod_path;\n    this.userProfileEnableGitpodPath = data.user_profile_enable_gitpod_path;\n  }\n\n  setState() {\n    if (this.mergeOngoing) {\n      this.state = 'merging';\n    } else if (this.isOpen) {\n      this.state = getStateKey.call(this);\n    } else {\n      switch (this.mergeRequestState) {\n        case STATUS_MERGED:\n          this.state = STATUS_MERGED;\n          break;\n        case STATUS_CLOSED:\n          this.state = STATUS_CLOSED;\n          break;\n        default:\n          this.state = null;\n      }\n    }\n\n    this.translateStateToMachine();\n  }\n\n  setPaths(data) {\n    // Paths are set on the first load of the page and not auto-refreshed\n    this.squashBeforeMergeHelpPath = data.squash_before_merge_help_path;\n    this.mrTroubleshootingDocsPath = data.mr_troubleshooting_docs_path;\n    this.ciTroubleshootingDocsPath = data.ci_troubleshooting_docs_path;\n    this.pipelineMustSucceedDocsPath = data.pipeline_must_succeed_docs_path;\n    this.mergeRequestBasicPath = data.merge_request_basic_path;\n    this.mergeRequestWidgetPath = data.merge_request_widget_path;\n    this.mergeRequestCachedWidgetPath = data.merge_request_cached_widget_path;\n    this.emailPatchesPath = data.email_patches_path;\n    this.plainDiffPath = data.plain_diff_path;\n    this.mergeCheckPath = data.merge_check_path;\n    this.mergeActionsContentPath = data.commit_change_content_path;\n    this.targetProjectFullPath = data.target_project_full_path;\n    this.sourceProjectFullPath = data.source_project_full_path;\n    this.mergeRequestPipelinesHelpPath = data.merge_request_pipelines_docs_path;\n    this.conflictsDocsPath = data.conflicts_docs_path;\n    this.reviewingDocsPath = data.reviewing_and_managing_merge_requests_docs_path;\n    this.ciEnvironmentsStatusPath = data.ci_environments_status_path;\n    this.codeCoverageCheckHelpPagePath = data.code_coverage_check_help_page_path;\n    this.licenseComplianceDocsPath = data.license_compliance_docs_path;\n    this.eligibleApproversDocsPath = data.eligible_approvers_docs_path;\n    this.mergeImmediatelyDocsPath = data.merge_immediately_docs_path;\n    this.approvalsHelpPath = data.approvals_help_path;\n    this.mergeRequestAddCiConfigPath = data.merge_request_add_ci_config_path;\n    this.pipelinesEmptySvgPath = data.pipelines_empty_svg_path;\n    this.humanAccess = data.human_access;\n    this.newPipelinePath = data.new_project_pipeline_path;\n    this.sourceProjectDefaultUrl = data.source_project_default_url;\n    this.userCalloutsPath = data.user_callouts_path;\n    this.suggestPipelineFeatureId = data.suggest_pipeline_feature_id;\n    this.migrateJenkinsFeatureId = data.migrate_jenkins_feature_id;\n    this.isDismissedSuggestPipeline = data.is_dismissed_suggest_pipeline;\n    this.isDismissedJenkinsMigration = data.is_dismissed_jenkins_migration;\n    this.securityReportsDocsPath = data.security_reports_docs_path;\n    this.securityConfigurationPath = data.security_configuration_path;\n\n    // code quality\n    const blobPath = data.blob_path || {};\n    this.headBlobPath = blobPath.head_path || '';\n    this.baseBlobPath = blobPath.base_path || '';\n    this.codequalityReportsPath = data.codequality_reports_path;\n\n    // Security reports\n    this.sastComparisonPath = data.sast_comparison_path;\n    this.secretDetectionComparisonPath = data.secret_detection_comparison_path;\n\n    this.sastComparisonPathV2 = data.new_sast_comparison_path;\n    this.secretDetectionComparisonPathV2 = data.new_secret_detection_comparison_path;\n  }\n\n  get isNothingToMergeState() {\n    return this.state === stateKey.nothingToMerge;\n  }\n\n  get isMergedState() {\n    return this.state === stateKey.merged;\n  }\n\n  static buildMetrics(metrics) {\n    if (!metrics) {\n      return {};\n    }\n\n    return {\n      mergedBy: MergeRequestStore.formatUserObject(metrics.merged_by),\n      closedBy: MergeRequestStore.formatUserObject(metrics.closed_by),\n      mergedAt: formatDate(metrics.merged_at),\n      closedAt: formatDate(metrics.closed_at),\n      readableMergedAt: MergeRequestStore.getReadableDate(metrics.merged_at),\n      readableClosedAt: MergeRequestStore.getReadableDate(metrics.closed_at),\n    };\n  }\n\n  static formatUserObject(user) {\n    if (!user) {\n      return {};\n    }\n\n    return {\n      name: user.name || '',\n      username: user.username || '',\n      webUrl: user.web_url || '',\n      avatarUrl: user.avatar_url || '',\n    };\n  }\n\n  static getReadableDate(date) {\n    if (!date) {\n      return '';\n    }\n\n    return format(newDate(date), timeagoLanguageCode);\n  }\n\n  static getPreferredAutoMergeStrategy(availableAutoMergeStrategies) {\n    if (availableAutoMergeStrategies === undefined) return undefined;\n\n    if (availableAutoMergeStrategies.includes(MTWPS_MERGE_STRATEGY)) {\n      return MTWPS_MERGE_STRATEGY;\n    }\n    if (availableAutoMergeStrategies.includes(MT_MERGE_STRATEGY)) {\n      return MT_MERGE_STRATEGY;\n    }\n    if (availableAutoMergeStrategies.includes(MWCP_MERGE_STRATEGY)) {\n      return MWCP_MERGE_STRATEGY;\n    }\n    if (availableAutoMergeStrategies.includes(MWPS_MERGE_STRATEGY)) {\n      return MWPS_MERGE_STRATEGY;\n    }\n    if (availableAutoMergeStrategies.includes(MTWCP_MERGE_STRATEGY)) {\n      return MTWCP_MERGE_STRATEGY;\n    }\n\n    return undefined;\n  }\n\n  initApprovals() {\n    this.isApproved = this.isApproved || false;\n  }\n\n  setApprovals(data) {\n    this.isApproved = data.approved || false;\n    this.approvals = true;\n\n    this.setState();\n  }\n\n  setRemoveSourceBranch(removeSourceBranch) {\n    this.shouldRemoveSourceBranch = removeSourceBranch;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get hasMergeChecksFailed() {\n    return false;\n  }\n\n  get isApprovalNeeded() {\n    return this.hasApprovalsAvailable ? !this.isApproved : false;\n  }\n\n  get preventMerge() {\n    return this.isApprovalNeeded && this.preferredAutoMergeStrategy !== MWCP_MERGE_STRATEGY;\n  }\n\n  // Because the state machine doesn't yet handle every state and transition,\n  //    some use-cases will need to force a state that can't be reached by\n  //    a known transition. This is undesirable long-term (as it subverts\n  //    the intent of a state machine), but is necessary until the machine\n  //    can handle all possible combinations. (unsafeForce)\n  transitionStateMachine({ transition, state, unsafeForce = false } = {}) {\n    if (unsafeForce && state) {\n      this.stateMachine.value = state;\n    } else {\n      this.stateMachine.send(transition);\n    }\n\n    this.machineValue = this.stateMachine.value;\n  }\n  translateStateToMachine() {\n    const transition = stateToTransitionMap[this.state];\n    let transitionOptions = {\n      state: IDLE,\n      unsafeForce: true,\n    };\n\n    if (transition) {\n      transitionOptions = { transition };\n    }\n\n    this.transitionStateMachine(transitionOptions);\n  }\n}\n","import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport { s__ } from '~/locale';\nimport CEMergeRequestStore from '~/vue_merge_request_widget/stores/mr_widget_store';\nimport {\n  DETAILED_MERGE_STATUS,\n  MWCP_MERGE_STRATEGY,\n  MTWCP_MERGE_STRATEGY,\n} from '~/vue_merge_request_widget/constants';\n\nexport default class MergeRequestStore extends CEMergeRequestStore {\n  constructor(data) {\n    super(data);\n\n    this.sastHelp = data.sast_help_path;\n    this.containerScanningHelp = data.container_scanning_help_path;\n    this.dastHelp = data.dast_help_path;\n    this.apiFuzzingHelp = data.api_fuzzing_help_path;\n    this.coverageFuzzingHelp = data.coverage_fuzzing_help_path;\n    this.secretDetectionHelp = data.secret_detection_help_path;\n    this.dependencyScanningHelp = data.dependency_scanning_help_path;\n    this.canReadVulnerabilities = data.can_read_vulnerabilities;\n    this.canReadVulnerabilityFeedback = data.can_read_vulnerability_feedback;\n    this.canRetryExternalStatusChecks = data.can_retry_external_status_checks;\n    this.securityReportsPipelineId = data.pipeline_id;\n    this.securityReportsPipelineIid = data.pipeline_iid;\n    this.createVulnerabilityFeedbackIssuePath = data.create_vulnerability_feedback_issue_path;\n    this.createVulnerabilityFeedbackMergeRequestPath =\n      data.create_vulnerability_feedback_merge_request_path;\n    this.createVulnerabilityFeedbackDismissalPath =\n      data.create_vulnerability_feedback_dismissal_path;\n    this.appUrl = gon && gon.gitlab_url;\n    this.licenseScanning = data.license_scanning;\n    this.requirePasswordToApprove = data.require_password_to_approve;\n    this.requireSamlAuthToApprove = data.require_saml_auth_to_approve;\n    this.mergeRequestApproversAvailable = data.merge_request_approvers_available;\n    this.aiCommitMessageEnabled = data.aiCommitMessageEnabled;\n    this.pathLocksPath = data.path_locks_path;\n\n    this.initBrowserPerformanceReport(data);\n    this.initLoadPerformanceReport(data);\n    this.initLicenseComplianceReport(data);\n\n    this.metricsReportsPath = data.metrics_reports_path;\n\n    this.enabledReports = convertObjectPropsToCamelCase(data.enabled_reports);\n\n    this.apiApprovalSettingsPath = data.api_approval_settings_path;\n    this.mergeTrainsPath = data.merge_trains_path;\n    this.pipelineEtag = data.pipeline_etag;\n  }\n\n  setData(data, isRebased) {\n    this.initGeo(data);\n\n    this.mergePipelinesEnabled = Boolean(data.merge_pipelines_enabled);\n    this.mergeTrainsSkipAllowed = data.merge_trains_skip_train_allowed;\n    this.policyViolation = data.policy_violation;\n    this.jiraAssociation = data.jira_associations || {};\n\n    super.setData(data, isRebased);\n  }\n\n  setGraphqlData(project) {\n    super.setGraphqlData(project);\n\n    const { mergeRequest } = project;\n\n    this.mergeTrainsCount = project?.mergeTrains?.nodes[0]?.cars?.count;\n    this.mergeTrainCar = mergeRequest.mergeTrainCar;\n  }\n\n  setGraphqlSubscriptionData(data) {\n    super.setGraphqlSubscriptionData(data);\n\n    this.mergeTrainsCount = data.mergeRequest?.project?.mergeTrains?.nodes[0]?.cars?.count;\n    this.mergeTrainCar = data.mergeTrainCar;\n  }\n\n  setPaths(data) {\n    // Paths are set on the first load of the page and not auto-refreshed\n    super.setPaths(data);\n\n    this.discoverProjectSecurityPath = data.discover_project_security_path;\n    this.apiStatusChecksPath = data.api_status_checks_path;\n    this.samlApprovalPath = data.saml_approval_path;\n\n    // Security scan diff paths\n    this.containerScanningComparisonPath = data.container_scanning_comparison_path;\n    this.coverageFuzzingComparisonPath = data.coverage_fuzzing_comparison_path;\n    this.apiFuzzingComparisonPath = data.api_fuzzing_comparison_path;\n    this.dastComparisonPath = data.dast_comparison_path;\n    this.dependencyScanningComparisonPath = data.dependency_scanning_comparison_path;\n\n    this.containerScanningComparisonPathV2 = data.new_container_scanning_comparison_path;\n    this.coverageFuzzingComparisonPathV2 = data.new_coverage_fuzzing_comparison_path;\n    this.apiFuzzingComparisonPathV2 = data.new_api_fuzzing_comparison_path;\n    this.dastComparisonPathV2 = data.new_dast_comparison_path;\n    this.dependencyScanningComparisonPathV2 = data.new_dependency_scanning_comparison_path;\n    this.securityPoliciesPath = data.security_policies_path;\n  }\n\n  initGeo(data) {\n    this.isGeoSecondaryNode = this.isGeoSecondaryNode || data.is_geo_secondary_node;\n    this.geoSecondaryHelpPath = this.geoSecondaryHelpPath || data.geo_secondary_help_path;\n  }\n\n  setApprovals(data) {\n    super.setApprovals(data);\n\n    this.approvalsLeft = data.approvalsLeft;\n\n    this.setState();\n  }\n\n  get hasMergeChecksFailed() {\n    if (\n      this.hasApprovalsAvailable &&\n      this.approvalsLeft &&\n      this.preferredAutoMergeStrategy !== MWCP_MERGE_STRATEGY\n    ) {\n      return this.detailedMergeStatus === DETAILED_MERGE_STATUS.NOT_APPROVED;\n    }\n\n    if (this.detailedMergeStatus === DETAILED_MERGE_STATUS.BLOCKED_STATUS) return true;\n    if (this.detailedMergeStatus === DETAILED_MERGE_STATUS.EXTERNAL_STATUS_CHECKS) return true;\n\n    return super.hasMergeChecksFailed;\n  }\n\n  get preventMerge() {\n    return (\n      this.hasApprovalsAvailable &&\n      this.isApprovalNeeded &&\n      ![MWCP_MERGE_STRATEGY, MTWCP_MERGE_STRATEGY].includes(this.preferredAutoMergeStrategy)\n    );\n  }\n\n  initBrowserPerformanceReport(data) {\n    this.browserPerformance = data.browser_performance;\n    this.browserPerformanceMetrics = {\n      improved: [],\n      degraded: [],\n      same: [],\n    };\n  }\n\n  initLoadPerformanceReport(data) {\n    this.loadPerformance = data.load_performance;\n    this.loadPerformanceMetrics = {\n      improved: [],\n      degraded: [],\n      same: [],\n    };\n  }\n\n  initLicenseComplianceReport({\n    license_scanning_comparison_path,\n    license_scanning_comparison_collapsed_path,\n    api_approvals_path,\n    license_scanning,\n  }) {\n    this.licenseCompliance = {\n      license_scanning_comparison_path,\n      license_scanning_comparison_collapsed_path,\n      api_approvals_path,\n      license_scanning,\n    };\n  }\n\n  compareBrowserPerformanceMetrics(headMetrics, baseMetrics) {\n    const headMetricsIndexed = MergeRequestStore.normalizeBrowserPerformanceMetrics(headMetrics);\n    const baseMetricsIndexed = MergeRequestStore.normalizeBrowserPerformanceMetrics(baseMetrics);\n    const improved = [];\n    const degraded = [];\n    const same = [];\n\n    Object.keys(headMetricsIndexed).forEach((subject) => {\n      const subjectMetrics = headMetricsIndexed[subject];\n      Object.keys(subjectMetrics).forEach((metric) => {\n        const headMetricData = subjectMetrics[metric];\n\n        if (baseMetricsIndexed[subject] && baseMetricsIndexed[subject][metric]) {\n          const baseMetricData = baseMetricsIndexed[subject][metric];\n          const metricData = {\n            name: metric,\n            path: subject,\n            score: headMetricData.value,\n            delta: headMetricData.value - baseMetricData.value,\n          };\n\n          if (metricData.delta !== 0) {\n            const isImproved =\n              headMetricData.desiredSize === 'smaller'\n                ? metricData.delta < 0\n                : metricData.delta > 0;\n\n            if (isImproved) {\n              improved.push(metricData);\n            } else {\n              degraded.push(metricData);\n            }\n          } else {\n            same.push(metricData);\n          }\n        }\n      });\n    });\n\n    this.browserPerformanceMetrics = { improved, degraded, same };\n  }\n\n  // normalize browser performance metrics by indexing on performance subject and metric name\n  static normalizeBrowserPerformanceMetrics(browserPerformanceData) {\n    const indexedSubjects = {};\n    browserPerformanceData.forEach(({ subject, metrics }) => {\n      const indexedMetrics = {};\n      metrics.forEach(({ name, ...data }) => {\n        indexedMetrics[name] = data;\n      });\n      indexedSubjects[subject] = indexedMetrics;\n    });\n\n    return indexedSubjects;\n  }\n\n  compareLoadPerformanceMetrics(headMetrics, baseMetrics) {\n    const headMetricsIndexed = MergeRequestStore.normalizeLoadPerformanceMetrics(headMetrics);\n    const baseMetricsIndexed = MergeRequestStore.normalizeLoadPerformanceMetrics(baseMetrics);\n    const improved = [];\n    const degraded = [];\n    const same = [];\n\n    Object.keys(headMetricsIndexed).forEach((metric) => {\n      const headMetricData = headMetricsIndexed[metric];\n      if (metric in baseMetricsIndexed) {\n        const baseMetricData = baseMetricsIndexed[metric];\n        const metricData = {\n          name: metric,\n          score: headMetricData,\n          delta: parseFloat((parseFloat(headMetricData) - parseFloat(baseMetricData)).toFixed(2)),\n        };\n\n        if (metricData.delta !== 0.0) {\n          const isImproved = [s__('ciReport|RPS'), s__('ciReport|Checks')].includes(metric)\n            ? metricData.delta > 0\n            : metricData.delta < 0;\n\n          if (isImproved) {\n            improved.push(metricData);\n          } else {\n            degraded.push(metricData);\n          }\n        } else {\n          same.push(metricData);\n        }\n      }\n    });\n\n    this.loadPerformanceMetrics = { improved, degraded, same };\n  }\n\n  // normalize load performance metrics for comsumption\n  static normalizeLoadPerformanceMetrics(loadPerformanceData) {\n    if (!('metrics' in loadPerformanceData)) return {};\n\n    const { metrics } = loadPerformanceData;\n    const indexedMetrics = {};\n\n    Object.keys(loadPerformanceData.metrics).forEach((metric) => {\n      switch (metric) {\n        case 'http_reqs':\n          indexedMetrics[s__('ciReport|RPS')] = metrics.http_reqs.rate;\n          break;\n        case 'http_req_waiting':\n          indexedMetrics[s__('ciReport|TTFB P90')] = metrics.http_req_waiting['p(90)'];\n          indexedMetrics[s__('ciReport|TTFB P95')] = metrics.http_req_waiting['p(95)'];\n          break;\n        case 'checks':\n          indexedMetrics[s__('ciReport|Checks')] = `${(\n            (metrics.checks.passes / (metrics.checks.passes + metrics.checks.fails)) *\n            100.0\n          ).toFixed(2)}%`;\n          break;\n        default:\n          break;\n      }\n    });\n\n    return indexedMetrics;\n  }\n}\n","import { stateToComponentMap as ceStateMap } from '~/vue_merge_request_widget/stores/state_maps';\n\nexport const stateKey = {\n  policyViolation: 'policyViolation',\n};\nexport const stateToComponentMap = {\n  ...ceStateMap,\n  geoSecondaryNode: 'mr-widget-geo-secondary-node',\n  policyViolation: 'mr-widget-policy-violation',\n};\n","/* eslint-disable consistent-return, no-return-assign */\n\nfunction notificationGranted(message, opts, onclick) {\n  const notification = new Notification(message, opts);\n  setTimeout(\n    () =>\n      // Hide the notification after X amount of seconds\n      notification.close(),\n    8000,\n  );\n\n  return (notification.onclick = onclick || notification.close);\n}\n\nfunction notifyPermissions() {\n  /* eslint-disable-next-line @gitlab/require-i18n-strings */\n  if ('Notification' in window) {\n    return Notification.requestPermission();\n  }\n}\n\n// eslint-disable-next-line max-params\nfunction notifyMe(message, body, icon, onclick) {\n  const opts = {\n    body,\n    icon,\n  };\n  // Let's check if the browser supports notifications\n  /* eslint-disable-next-line @gitlab/require-i18n-strings */\n  if (!('Notification' in window)) {\n    // do nothing\n  } else if (Notification.permission === 'granted') {\n    // If it's okay let's create a notification\n    return notificationGranted(message, opts, onclick);\n  } else if (Notification.permission !== 'denied') {\n    return Notification.requestPermission((permission) => {\n      // If the user accepts, let's create a notification\n      if (permission === 'granted') {\n        return notificationGranted(message, opts, onclick);\n      }\n    });\n  }\n}\n\nconst notify = {\n  notificationGranted,\n  notifyPermissions,\n  notifyMe,\n};\n\nexport default notify;\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!./loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { GlSkeletonLoader } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlSkeletonLoader,\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-mt-5\">\n    <div class=\"mr-section-container gl-p-4\">\n      <gl-skeleton-loader :width=\"577\" :height=\"12\">\n        <rect width=\"86\" height=\"12\" rx=\"2\" />\n        <rect x=\"96\" width=\"300\" height=\"12\" rx=\"2\" />\n      </gl-skeleton-loader>\n    </div>\n    <div class=\"mr-section-container gl-p-4\">\n      <gl-skeleton-loader :width=\"577\" :height=\"72\">\n        <rect width=\"120\" height=\"12\" rx=\"2\" />\n        <rect y=\"20\" width=\"300\" height=\"12\" rx=\"2\" />\n        <rect y=\"40\" width=\"60\" height=\"12\" rx=\"2\" />\n        <rect y=\"40\" x=\"68\" width=\"100\" height=\"12\" rx=\"2\" />\n        <rect y=\"60\" width=\"40\" height=\"12\" rx=\"2\" />\n      </gl-skeleton-loader>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./loading.vue?vue&type=template&id=50dc4c0b\"\nimport script from \"./loading.vue?vue&type=script&lang=js\"\nexport * from \"./loading.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-5\"},[_c('div',{staticClass:\"mr-section-container gl-p-4\"},[_c('gl-skeleton-loader',{attrs:{\"width\":577,\"height\":12}},[_c('rect',{attrs:{\"width\":\"86\",\"height\":\"12\",\"rx\":\"2\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"96\",\"width\":\"300\",\"height\":\"12\",\"rx\":\"2\"}})])],1),_vm._v(\" \"),_c('div',{staticClass:\"mr-section-container gl-p-4\"},[_c('gl-skeleton-loader',{attrs:{\"width\":577,\"height\":72}},[_c('rect',{attrs:{\"width\":\"120\",\"height\":\"12\",\"rx\":\"2\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"y\":\"20\",\"width\":\"300\",\"height\":\"12\",\"rx\":\"2\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"y\":\"40\",\"width\":\"60\",\"height\":\"12\",\"rx\":\"2\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"y\":\"40\",\"x\":\"68\",\"width\":\"100\",\"height\":\"12\",\"rx\":\"2\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"y\":\"60\",\"width\":\"40\",\"height\":\"12\",\"rx\":\"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!./mr_widget_alert_message.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_alert_message.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlAlert } from '@gitlab/ui';\n\nexport default {\n  name: 'MRWidgetAlertMessage',\n  components: {\n    GlAlert,\n    GlLink,\n  },\n  props: {\n    type: {\n      type: String,\n      required: true,\n    },\n    helpPath: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    dismissible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isDismissed: false,\n    };\n  },\n  methods: {\n    onDismiss() {\n      this.isDismissed = true;\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-alert v-if=\"!isDismissed\" :variant=\"type\" :dismissible=\"dismissible\" @dismiss=\"onDismiss\">\n    <slot></slot>\n    <gl-link v-if=\"helpPath\" :href=\"helpPath\" target=\"_blank\" class=\"gl-label-link\">\n      <slot name=\"link-content\"></slot>\n    </gl-link>\n  </gl-alert>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_alert_message.vue?vue&type=template&id=5aa396c5\"\nimport script from \"./mr_widget_alert_message.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_alert_message.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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.isDismissed)?_c('gl-alert',{attrs:{\"variant\":_vm.type,\"dismissible\":_vm.dismissible},on:{\"dismiss\":_vm.onDismiss}},[_vm._t(\"default\"),_vm._v(\" \"),(_vm.helpPath)?_c('gl-link',{staticClass:\"gl-label-link\",attrs:{\"href\":_vm.helpPath,\"target\":\"_blank\"}},[_vm._t(\"link-content\")],2):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const SET_ENDPOINT = 'SET_ENDPOINT';\n\nexport const REQUEST_ARTIFACTS = 'REQUEST_ARTIFACTS';\nexport const RECEIVE_ARTIFACTS_SUCCESS = 'RECEIVE_ARTIFACTS_SUCCESS';\nexport const RECEIVE_ARTIFACTS_ERROR = 'RECEIVE_ARTIFACTS_ERROR';\n","import Visibility from 'visibilityjs';\nimport axios from '~/lib/utils/axios_utils';\nimport { HTTP_STATUS_OK } from '~/lib/utils/http_status';\nimport Poll from '~/lib/utils/poll';\n\nimport * as types from './mutation_types';\n\nexport const setEndpoint = ({ commit }, endpoint) => commit(types.SET_ENDPOINT, endpoint);\n\nexport const requestArtifacts = ({ commit }) => commit(types.REQUEST_ARTIFACTS);\n\nlet eTagPoll;\n\nexport const clearEtagPoll = () => {\n  eTagPoll = null;\n};\n\nexport const stopPolling = () => {\n  if (eTagPoll) eTagPoll.stop();\n};\n\nexport const restartPolling = () => {\n  if (eTagPoll) eTagPoll.restart();\n};\n\nexport const fetchArtifacts = ({ state, dispatch }) => {\n  dispatch('requestArtifacts');\n\n  eTagPoll = new Poll({\n    resource: {\n      getArtifacts(endpoint) {\n        return axios.get(endpoint);\n      },\n    },\n    data: state.endpoint,\n    method: 'getArtifacts',\n    successCallback: ({ data, status }) => {\n      dispatch('receiveArtifactsSuccess', {\n        data,\n        status,\n      });\n    },\n    errorCallback: () => dispatch('receiveArtifactsError'),\n  });\n\n  if (!Visibility.hidden()) {\n    eTagPoll.makeRequest();\n  } else {\n    axios\n      .get(state.endpoint)\n      .then(({ data, status }) => dispatch('receiveArtifactsSuccess', { data, status }))\n      .catch(() => dispatch('receiveArtifactsError'));\n  }\n\n  Visibility.change(() => {\n    if (!Visibility.hidden()) {\n      dispatch('restartPolling');\n    } else {\n      dispatch('stopPolling');\n    }\n  });\n};\n\nexport const receiveArtifactsSuccess = ({ commit }, response) => {\n  // With 204 we keep polling and don't update the state\n  if (response.status === HTTP_STATUS_OK) {\n    commit(types.RECEIVE_ARTIFACTS_SUCCESS, response.data);\n  }\n};\n\nexport const receiveArtifactsError = ({ commit }) => commit(types.RECEIVE_ARTIFACTS_ERROR);\n","import { s__, n__ } from '~/locale';\n\nexport const title = (state) => {\n  if (state.isLoading) {\n    return s__('BuildArtifacts|Loading artifacts');\n  }\n\n  if (state.hasError) {\n    return s__('BuildArtifacts|An error occurred while fetching the artifacts');\n  }\n\n  return n__('View exposed artifact', 'View %d exposed artifacts', state.artifacts.length);\n};\n","import * as types from './mutation_types';\n\nexport default {\n  [types.SET_ENDPOINT](state, endpoint) {\n    state.endpoint = endpoint;\n  },\n  [types.REQUEST_ARTIFACTS](state) {\n    state.isLoading = true;\n  },\n  [types.RECEIVE_ARTIFACTS_SUCCESS](state, response) {\n    state.hasError = false;\n    state.isLoading = false;\n\n    state.artifacts = response;\n  },\n  [types.RECEIVE_ARTIFACTS_ERROR](state) {\n    state.isLoading = false;\n    state.hasError = true;\n\n    state.artifacts = [];\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 const getStoreConfig = () => ({\n  actions,\n  mutations,\n  getters,\n  state: state(),\n});\n\nexport default () => new Vuex.Store(getStoreConfig());\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!./artifacts_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!./artifacts_list.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlLink,\n  },\n  props: {\n    artifacts: {\n      type: Array,\n      required: true,\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"gl-pl-7\">\n    <table class=\"table m-0\">\n      <thead class=\"thead-white text-nowrap\">\n        <tr class=\"gl-hidden sm:gl-table-row\">\n          <th>{{ __('Artifact') }}</th>\n          <th>{{ __('Job') }}</th>\n        </tr>\n      </thead>\n\n      <tbody>\n        <tr v-for=\"item in artifacts\" :key=\"item.text\">\n          <td>\n            <gl-link :href=\"item.url\" target=\"_blank\">{{ item.text }}</gl-link>\n          </td>\n          <td>\n            <gl-link :href=\"item.job_path\">{{ item.job_name }}</gl-link>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./artifacts_list.vue?vue&type=template&id=1945d23b\"\nimport script from \"./artifacts_list.vue?vue&type=script&lang=js\"\nexport * from \"./artifacts_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:\"gl-pl-7\"},[_c('table',{staticClass:\"table m-0\"},[_c('thead',{staticClass:\"thead-white text-nowrap\"},[_c('tr',{staticClass:\"gl-hidden sm:gl-table-row\"},[_c('th',[_vm._v(_vm._s(_vm.__('Artifact')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.__('Job')))])])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.artifacts),function(item){return _c('tr',{key:item.text},[_c('td',[_c('gl-link',{attrs:{\"href\":item.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(item.text))])],1),_vm._v(\" \"),_c('td',[_c('gl-link',{attrs:{\"href\":item.job_path}},[_vm._v(_vm._s(item.job_name))])],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!./mr_collapsible_extension.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_collapsible_extension.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  components: {\n    GlButton,\n  },\n  props: {\n    title: {\n      type: String,\n      required: true,\n    },\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    hasError: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isCollapsed: true,\n    };\n  },\n\n  computed: {\n    arrowIconName() {\n      return this.isCollapsed ? 'chevron-right' : 'chevron-down';\n    },\n    ariaLabel() {\n      return this.isCollapsed ? __('Expand') : __('Collapse');\n    },\n  },\n  methods: {\n    toggleCollapsed() {\n      this.isCollapsed = !this.isCollapsed;\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"mr-widget-extension\">\n    <div class=\"pl-3 gl-flex gl-items-center gl-py-3\">\n      <div v-if=\"hasError\" class=\"ci-widget media\">\n        <div class=\"media-body\">\n          <span class=\"js-error-state gl-ml-7 gl-text-sm gl-leading-24\">\n            {{ title }}\n          </span>\n        </div>\n      </div>\n\n      <template v-else>\n        <gl-button\n          class=\"gl-mr-3\"\n          size=\"small\"\n          :aria-label=\"ariaLabel\"\n          :loading=\"isLoading\"\n          :icon=\"arrowIconName\"\n          category=\"tertiary\"\n          @click=\"toggleCollapsed\"\n        />\n        <template v-if=\"isCollapsed\">\n          <slot name=\"header\"></slot>\n          <gl-button\n            category=\"tertiary\"\n            variant=\"confirm\"\n            size=\"small\"\n            data-testid=\"mr-collapsible-title\"\n            :disabled=\"isLoading\"\n            :class=\"{ 'border-0': isLoading }\"\n            @click=\"toggleCollapsed\"\n          >\n            {{ title }}\n          </gl-button>\n        </template>\n        <gl-button\n          v-else\n          category=\"tertiary\"\n          variant=\"confirm\"\n          size=\"small\"\n          data-testid=\"mr-collapsible-title\"\n          :disabled=\"isLoading\"\n          :class=\"{ 'border-0': isLoading }\"\n          @click=\"toggleCollapsed\"\n          >{{ __('Collapse') }}</gl-button\n        >\n      </template>\n    </div>\n\n    <div v-if=\"!isCollapsed\" class=\"border-top js-slot-container\">\n      <slot></slot>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./mr_collapsible_extension.vue?vue&type=template&id=473b6077\"\nimport script from \"./mr_collapsible_extension.vue?vue&type=script&lang=js\"\nexport * from \"./mr_collapsible_extension.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-widget-extension\"},[_c('div',{staticClass:\"pl-3 gl-flex gl-items-center gl-py-3\"},[(_vm.hasError)?_c('div',{staticClass:\"ci-widget media\"},[_c('div',{staticClass:\"media-body\"},[_c('span',{staticClass:\"js-error-state gl-ml-7 gl-text-sm gl-leading-24\"},[_vm._v(\"\\n          \"+_vm._s(_vm.title)+\"\\n        \")])])]):[_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"size\":\"small\",\"aria-label\":_vm.ariaLabel,\"loading\":_vm.isLoading,\"icon\":_vm.arrowIconName,\"category\":\"tertiary\"},on:{\"click\":_vm.toggleCollapsed}}),_vm._v(\" \"),(_vm.isCollapsed)?[_vm._t(\"header\"),_vm._v(\" \"),_c('gl-button',{class:{ 'border-0': _vm.isLoading },attrs:{\"category\":\"tertiary\",\"variant\":\"confirm\",\"size\":\"small\",\"data-testid\":\"mr-collapsible-title\",\"disabled\":_vm.isLoading},on:{\"click\":_vm.toggleCollapsed}},[_vm._v(\"\\n          \"+_vm._s(_vm.title)+\"\\n        \")])]:_c('gl-button',{class:{ 'border-0': _vm.isLoading },attrs:{\"category\":\"tertiary\",\"variant\":\"confirm\",\"size\":\"small\",\"data-testid\":\"mr-collapsible-title\",\"disabled\":_vm.isLoading},on:{\"click\":_vm.toggleCollapsed}},[_vm._v(_vm._s(_vm.__('Collapse')))])]],2),_vm._v(\" \"),(!_vm.isCollapsed)?_c('div',{staticClass:\"border-top js-slot-container\"},[_vm._t(\"default\")],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!./artifacts_list_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!./artifacts_list_app.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapState, mapGetters } from 'vuex';\nimport createStore from '../stores/artifacts_list';\nimport ArtifactsList from './artifacts_list.vue';\nimport MrCollapsibleExtension from './mr_collapsible_extension.vue';\n\nexport default {\n  store: createStore(),\n  components: {\n    ArtifactsList,\n    MrCollapsibleExtension,\n  },\n  props: {\n    endpoint: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapState(['artifacts', 'isLoading', 'hasError']),\n    ...mapGetters(['title']),\n    hasArtifacts() {\n      return this.artifacts.length > 0;\n    },\n  },\n  created() {\n    this.setEndpoint(this.endpoint);\n    this.fetchArtifacts();\n  },\n  methods: {\n    ...mapActions(['setEndpoint', 'fetchArtifacts']),\n  },\n};\n</script>\n<template>\n  <mr-collapsible-extension\n    v-if=\"isLoading || hasArtifacts || hasError\"\n    :title=\"title\"\n    :is-loading=\"isLoading\"\n    :has-error=\"hasError\"\n  >\n    <artifacts-list :artifacts=\"artifacts\" />\n  </mr-collapsible-extension>\n</template>\n","export default () => ({\n  endpoint: null,\n\n  isLoading: false,\n  hasError: false,\n\n  artifacts: [],\n});\n","import { render, staticRenderFns } from \"./artifacts_list_app.vue?vue&type=template&id=071fed99\"\nimport script from \"./artifacts_list_app.vue?vue&type=script&lang=js\"\nexport * from \"./artifacts_list_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 (_vm.isLoading || _vm.hasArtifacts || _vm.hasError)?_c('mr-collapsible-extension',{attrs:{\"title\":_vm.title,\"is-loading\":_vm.isLoading,\"has-error\":_vm.hasError}},[_c('artifacts-list',{attrs:{\"artifacts\":_vm.artifacts}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-inline-flex gl-gap-3\"},[(_vm.canBeManuallyDeployed)?_c('deployment-action-button',{attrs:{\"action-in-progress\":_vm.actionInProgress,\"actions-configuration\":_vm.$options.actionsConfiguration[_vm.constants.DEPLOYING],\"computed-deployment-status\":_vm.computedDeploymentStatus,\"icon\":_vm.$options.btnIcons.play,\"container-classes\":\"js-manual-deploy-action\"},on:{\"click\":_vm.deployManually}},[_c('span',[_vm._v(_vm._s(_vm.$options.actionsConfiguration[_vm.constants.DEPLOYING].buttonText))])]):_vm._e(),_vm._v(\" \"),(_vm.hasExternalUrls && _vm.environmentAvailable)?_c('deployment-view-button',{attrs:{\"app-button-text\":_vm.appButtonText,\"deployment\":_vm.deployment}}):_vm._e(),_vm._v(\" \"),(_vm.stopUrl && _vm.environmentAvailable)?_c('deployment-action-button',{attrs:{\"action-in-progress\":_vm.actionInProgress,\"computed-deployment-status\":_vm.computedDeploymentStatus,\"actions-configuration\":_vm.$options.actionsConfiguration[_vm.constants.STOPPING],\"button-title\":_vm.$options.actionsConfiguration[_vm.constants.STOPPING].buttonText,\"icon\":_vm.$options.btnIcons.stop,\"container-classes\":\"js-stop-env\"},on:{\"click\":_vm.stopEnvironment}}):_vm._e(),_vm._v(\" \"),(_vm.showDeploymentActionButton)?_c('deployment-action-button',{attrs:{\"action-in-progress\":_vm.actionInProgress,\"computed-deployment-status\":_vm.computedDeploymentStatus,\"actions-configuration\":_vm.$options.actionsConfiguration[_vm.constants.REDEPLOYING],\"button-title\":_vm.$options.actionsConfiguration[_vm.constants.REDEPLOYING].buttonText,\"icon\":_vm.$options.btnIcons.repeat,\"container-classes\":\"js-redeploy-action\"},on:{\"click\":_vm.redeploy}}):_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!./deployment_action_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!./deployment_action_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlButton } from '@gitlab/ui';\nimport { RUNNING, WILL_DEPLOY } from './constants';\n\nexport default {\n  name: 'DeploymentActionButton',\n  components: {\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    actionsConfiguration: {\n      type: Object,\n      required: true,\n    },\n    actionInProgress: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    buttonTitle: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    computedDeploymentStatus: {\n      type: String,\n      required: true,\n    },\n    containerClasses: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    icon: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    isActionInProgress() {\n      return Boolean(\n        this.computedDeploymentStatus === RUNNING ||\n          this.computedDeploymentStatus === WILL_DEPLOY ||\n          this.actionInProgress,\n      );\n    },\n    isLoading() {\n      return (\n        this.actionInProgress === this.actionsConfiguration.actionName ||\n        this.computedDeploymentStatus === WILL_DEPLOY\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button\n    v-if=\"isLoading || isActionInProgress\"\n    category=\"primary\"\n    size=\"small\"\n    :title=\"buttonTitle\"\n    :aria-label=\"buttonTitle\"\n    :loading=\"isLoading\"\n    :disabled=\"isActionInProgress\"\n    :class=\"containerClasses\"\n    :icon=\"icon\"\n    @click=\"$emit('click')\"\n  >\n    <slot> </slot>\n  </gl-button>\n  <gl-button\n    v-else\n    v-gl-tooltip.hover\n    category=\"primary\"\n    size=\"small\"\n    :title=\"buttonTitle\"\n    :aria-label=\"buttonTitle\"\n    :loading=\"isLoading\"\n    :disabled=\"isActionInProgress\"\n    :class=\"containerClasses\"\n    :icon=\"icon\"\n    @click=\"$emit('click')\"\n  >\n    <slot> </slot>\n  </gl-button>\n</template>\n","// DEPLOYMENT STATUSES\nexport const CREATED = 'created';\nexport const MANUAL_DEPLOY = 'manual_deploy';\nexport const WILL_DEPLOY = 'will_deploy';\nexport const RUNNING = 'running';\nexport const SUCCESS = 'success';\nexport const FAILED = 'failed';\nexport const CANCELED = 'canceled';\nexport const SKIPPED = 'skipped';\n\n// ACTION STATUSES\nexport const STOPPING = 'stopping';\nexport const DEPLOYING = 'deploying';\nexport const REDEPLOYING = 'redeploying';\n\nexport const ACT_BUTTON_ICONS = {\n  play: 'play',\n  repeat: 'repeat',\n  stop: 'stop',\n};\n","import { render, staticRenderFns } from \"./deployment_action_button.vue?vue&type=template&id=d55500fa\"\nimport script from \"./deployment_action_button.vue?vue&type=script&lang=js\"\nexport * from \"./deployment_action_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 (_vm.isLoading || _vm.isActionInProgress)?_c('gl-button',{class:_vm.containerClasses,attrs:{\"category\":\"primary\",\"size\":\"small\",\"title\":_vm.buttonTitle,\"aria-label\":_vm.buttonTitle,\"loading\":_vm.isLoading,\"disabled\":_vm.isActionInProgress,\"icon\":_vm.icon},on:{\"click\":function($event){return _vm.$emit('click')}}},[_vm._t(\"default\")],2):_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],class:_vm.containerClasses,attrs:{\"category\":\"primary\",\"size\":\"small\",\"title\":_vm.buttonTitle,\"aria-label\":_vm.buttonTitle,\"loading\":_vm.isLoading,\"disabled\":_vm.isActionInProgress,\"icon\":_vm.icon},on:{\"click\":function($event){return _vm.$emit('click')}}},[_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!./deployment_view_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!./deployment_view_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlButtonGroup, GlCollapsibleListbox, GlLink } from '@gitlab/ui';\nimport autofocusonshow from '~/vue_shared/directives/autofocusonshow';\nimport ReviewAppLink from '../review_app_link.vue';\n\nexport default {\n  name: 'DeploymentViewButton',\n  components: {\n    GlButtonGroup,\n    GlCollapsibleListbox,\n    GlLink,\n    ReviewAppLink,\n  },\n  directives: {\n    autofocusonshow,\n  },\n  props: {\n    appButtonText: {\n      type: Object,\n      required: true,\n    },\n    deployment: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return { searchTerm: '' };\n  },\n  computed: {\n    deploymentExternalUrl() {\n      if (this.deployment.changes && this.deployment.changes.length === 1) {\n        return this.deployment.changes[0].external_url;\n      }\n      return this.deployment.external_url;\n    },\n    shouldRenderDropdown() {\n      return this.deployment.changes && this.deployment.changes.length > 1;\n    },\n    filteredChanges() {\n      return this.deployment?.changes\n        ?.filter((change) => change.path.includes(this.searchTerm))\n        .map((change) => ({ value: change.external_url, text: change.path }));\n    },\n  },\n  methods: {\n    search(searchTerm) {\n      this.searchTerm = searchTerm;\n    },\n  },\n};\n</script>\n<template>\n  <span class=\"gl-inline-flex\">\n    <gl-button-group v-if=\"shouldRenderDropdown\">\n      <review-app-link\n        :display=\"appButtonText\"\n        :link=\"deploymentExternalUrl\"\n        size=\"small\"\n        css-class=\"deploy-link js-deploy-url\"\n      />\n      <gl-collapsible-listbox\n        :items=\"filteredChanges\"\n        size=\"small\"\n        placement=\"bottom-end\"\n        searchable\n        @search=\"search\"\n      >\n        <template #list-item=\"{ item }\">\n          <gl-link :href=\"item.value\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">\n            <div>\n              <strong class=\"gl-mb-0 gl-block gl-truncate\">{{ item.text }}</strong>\n              <p class=\"gl-mb-0 gl-block gl-truncate gl-text-subtle\">\n                {{ item.value }}\n              </p>\n            </div>\n          </gl-link>\n        </template>\n      </gl-collapsible-listbox>\n    </gl-button-group>\n    <review-app-link\n      v-else\n      :display=\"appButtonText\"\n      :link=\"deploymentExternalUrl\"\n      size=\"small\"\n      css-class=\"deploy-link js-deploy-url\"\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!./deployment_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!./deployment_actions.vue?vue&type=script&lang=js\"","<script>\nimport { createAlert } from '~/alert';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { __, s__ } from '~/locale';\nimport eventHub from '../../event_hub';\nimport MRWidgetService from '../../services/mr_widget_service';\nimport {\n  MANUAL_DEPLOY,\n  FAILED,\n  SUCCESS,\n  STOPPING,\n  DEPLOYING,\n  REDEPLOYING,\n  ACT_BUTTON_ICONS,\n} from './constants';\nimport DeploymentActionButton from './deployment_action_button.vue';\nimport DeploymentViewButton from './deployment_view_button.vue';\n\nexport default {\n  name: 'DeploymentActions',\n  btnIcons: ACT_BUTTON_ICONS,\n  components: {\n    DeploymentActionButton,\n    DeploymentViewButton,\n  },\n  props: {\n    computedDeploymentStatus: {\n      type: String,\n      required: true,\n    },\n    deployment: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      actionInProgress: null,\n      constants: {\n        STOPPING,\n        DEPLOYING,\n        REDEPLOYING,\n      },\n    };\n  },\n  computed: {\n    appButtonText() {\n      return {\n        text: this.isCurrent ? s__('Review App|View app') : s__('Review App|View latest app'),\n        tooltip: this.isCurrent\n          ? ''\n          : __('View the latest successful deployment to this environment'),\n      };\n    },\n    canBeManuallyDeployed() {\n      return this.computedDeploymentStatus === MANUAL_DEPLOY && Boolean(this.playPath);\n    },\n    canBeManuallyRedeployed() {\n      return this.computedDeploymentStatus === FAILED && Boolean(this.redeployPath);\n    },\n    hasExternalUrls() {\n      return Boolean(this.deployment.external_url && this.deployment.external_url_formatted);\n    },\n    isCurrent() {\n      return this.computedDeploymentStatus === SUCCESS;\n    },\n    playPath() {\n      return this.deployment.details?.playable_build?.play_path;\n    },\n    redeployPath() {\n      return this.deployment.retry_url;\n    },\n    stopUrl() {\n      return this.deployment.stop_url;\n    },\n    environmentAvailable() {\n      return Boolean(this.deployment.environment_available);\n    },\n    showDeploymentActionButton() {\n      return this.redeployPath && !this.environmentAvailable;\n    },\n  },\n  actionsConfiguration: {\n    [STOPPING]: {\n      actionName: STOPPING,\n      buttonText: s__('MrDeploymentActions|Stop environment'),\n      buttonVariant: 'danger',\n      busyText: __('This environment is being deployed'),\n      confirmMessage: __('Are you sure you want to stop this environment?'),\n      errorMessage: __('Something went wrong while stopping this environment. Please try again.'),\n    },\n    [DEPLOYING]: {\n      actionName: DEPLOYING,\n      buttonText: s__('MrDeploymentActions|Deploy'),\n      buttonVariant: 'confirm',\n      busyText: __('This environment is being deployed'),\n      confirmMessage: __('Are you sure you want to deploy this environment?'),\n      errorMessage: __('Something went wrong while deploying this environment. Please try again.'),\n    },\n    [REDEPLOYING]: {\n      actionName: REDEPLOYING,\n      buttonText: s__('MrDeploymentActions|Re-deploy'),\n      buttonVariant: 'confirm',\n      busyText: __('This environment is being re-deployed'),\n      confirmMessage: __('Are you sure you want to re-deploy this environment?'),\n      errorMessage: __('Something went wrong while deploying this environment. Please try again.'),\n    },\n  },\n  methods: {\n    async executeAction(\n      endpoint,\n      {\n        actionName,\n        buttonText: primaryBtnText,\n        buttonVariant: primaryBtnVariant,\n        confirmMessage,\n        errorMessage,\n      },\n    ) {\n      const isConfirmed = await confirmAction(confirmMessage, {\n        primaryBtnVariant,\n        primaryBtnText,\n      });\n\n      if (isConfirmed) {\n        this.actionInProgress = actionName;\n\n        MRWidgetService.executeInlineAction(endpoint)\n          .catch(() => {\n            createAlert({\n              message: errorMessage,\n            });\n          })\n          .finally(() => {\n            eventHub.$emit('FetchDeployments');\n            this.actionInProgress = null;\n          });\n      }\n    },\n    stopEnvironment() {\n      this.executeAction(this.stopUrl, this.$options.actionsConfiguration[STOPPING]);\n    },\n    deployManually() {\n      this.executeAction(this.playPath, this.$options.actionsConfiguration[DEPLOYING]);\n    },\n    redeploy() {\n      this.executeAction(this.redeployPath, this.$options.actionsConfiguration[REDEPLOYING]);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-inline-flex gl-gap-3\">\n    <deployment-action-button\n      v-if=\"canBeManuallyDeployed\"\n      :action-in-progress=\"actionInProgress\"\n      :actions-configuration=\"$options.actionsConfiguration[constants.DEPLOYING]\"\n      :computed-deployment-status=\"computedDeploymentStatus\"\n      :icon=\"$options.btnIcons.play\"\n      container-classes=\"js-manual-deploy-action\"\n      @click=\"deployManually\"\n    >\n      <span>{{ $options.actionsConfiguration[constants.DEPLOYING].buttonText }}</span>\n    </deployment-action-button>\n    <deployment-view-button\n      v-if=\"hasExternalUrls && environmentAvailable\"\n      :app-button-text=\"appButtonText\"\n      :deployment=\"deployment\"\n    />\n    <deployment-action-button\n      v-if=\"stopUrl && environmentAvailable\"\n      :action-in-progress=\"actionInProgress\"\n      :computed-deployment-status=\"computedDeploymentStatus\"\n      :actions-configuration=\"$options.actionsConfiguration[constants.STOPPING]\"\n      :button-title=\"$options.actionsConfiguration[constants.STOPPING].buttonText\"\n      :icon=\"$options.btnIcons.stop\"\n      container-classes=\"js-stop-env\"\n      @click=\"stopEnvironment\"\n    />\n    <deployment-action-button\n      v-if=\"showDeploymentActionButton\"\n      :action-in-progress=\"actionInProgress\"\n      :computed-deployment-status=\"computedDeploymentStatus\"\n      :actions-configuration=\"$options.actionsConfiguration[constants.REDEPLOYING]\"\n      :button-title=\"$options.actionsConfiguration[constants.REDEPLOYING].buttonText\"\n      :icon=\"$options.btnIcons.repeat\"\n      container-classes=\"js-redeploy-action\"\n      @click=\"redeploy\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./deployment_view_button.vue?vue&type=template&id=951a6454\"\nimport script from \"./deployment_view_button.vue?vue&type=script&lang=js\"\nexport * from \"./deployment_view_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',{staticClass:\"gl-inline-flex\"},[(_vm.shouldRenderDropdown)?_c('gl-button-group',[_c('review-app-link',{attrs:{\"display\":_vm.appButtonText,\"link\":_vm.deploymentExternalUrl,\"size\":\"small\",\"css-class\":\"deploy-link js-deploy-url\"}}),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"items\":_vm.filteredChanges,\"size\":\"small\",\"placement\":\"bottom-end\",\"searchable\":\"\"},on:{\"search\":_vm.search},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('gl-link',{attrs:{\"href\":item.value,\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\"}},[_c('div',[_c('strong',{staticClass:\"gl-mb-0 gl-block gl-truncate\"},[_vm._v(_vm._s(item.text))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-0 gl-block gl-truncate gl-text-subtle\"},[_vm._v(\"\\n              \"+_vm._s(item.value)+\"\\n            \")])])])]}}],null,false,2206342933)})],1):_c('review-app-link',{attrs:{\"display\":_vm.appButtonText,\"link\":_vm.deploymentExternalUrl,\"size\":\"small\",\"css-class\":\"deploy-link js-deploy-url\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./deployment_actions.vue?vue&type=template&id=20d7a522\"\nimport script from \"./deployment_actions.vue?vue&type=script&lang=js\"\nexport * from \"./deployment_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","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deployment_info.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deployment_info.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlTooltipDirective, GlTruncate } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport timeagoMixin from '~/vue_shared/mixins/timeago';\nimport {\n  MANUAL_DEPLOY,\n  WILL_DEPLOY,\n  RUNNING,\n  SUCCESS,\n  FAILED,\n  CANCELED,\n  SKIPPED,\n} from './constants';\n\nexport default {\n  name: 'DeploymentInfo',\n  components: {\n    GlLink,\n    MemoryUsage: () => import('./memory_usage.vue'),\n    GlTruncate,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [timeagoMixin],\n  props: {\n    computedDeploymentStatus: {\n      type: String,\n      required: true,\n    },\n    deployment: {\n      type: Object,\n      required: true,\n    },\n    showMetrics: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  deployedTextMap: {\n    [MANUAL_DEPLOY]: __('Can be manually deployed to'),\n    [WILL_DEPLOY]: __('Will deploy to'),\n    [RUNNING]: __('Deploying to'),\n    [SUCCESS]: __('Deployed to'),\n    [FAILED]: __('Failed to deploy to'),\n    [CANCELED]: __('Canceled deployment to'),\n    [SKIPPED]: __('Skipped deployment to'),\n  },\n  computed: {\n    deployTimeago() {\n      return this.timeFormatted(this.deployment.deployed_at);\n    },\n    deployedText() {\n      return this.$options.deployedTextMap[this.computedDeploymentStatus];\n    },\n    hasDeploymentTime() {\n      return Boolean(this.deployment.deployed_at && this.deployment.deployed_at_formatted);\n    },\n    hasDeploymentMeta() {\n      return Boolean(this.deployment.url && this.deployment.name);\n    },\n    hasMetrics() {\n      return Boolean(this.deployment.metrics_url);\n    },\n    showMemoryUsage() {\n      return this.hasMetrics && this.showMetrics;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"js-deployment-info deployment-info\">\n    <template v-if=\"hasDeploymentMeta\">\n      <span>{{ deployedText }}</span>\n      <gl-link\n        :href=\"deployment.url\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer nofollow\"\n        class=\"js-deploy-meta gl-pb-1 gl-text-sm\"\n      >\n        <gl-truncate\n          class=\"js-deploy-env-name\"\n          :text=\"deployment.name\"\n          position=\"middle\"\n          with-tooltip\n        />\n      </gl-link>\n    </template>\n    <span\n      v-if=\"hasDeploymentTime\"\n      v-gl-tooltip\n      :title=\"deployment.deployed_at_formatted\"\n      class=\"js-deploy-time\"\n    >\n      {{ deployTimeago }}\n    </span>\n    <memory-usage\n      v-if=\"showMemoryUsage\"\n      :metrics-url=\"deployment.metrics_url\"\n      :metrics-monitoring-url=\"deployment.metrics_monitoring_url\"\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!./deployment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deployment.vue?vue&type=script&lang=js\"","<!-- eslint-disable vue/multi-word-component-names -->\n<script>\nimport { MANUAL_DEPLOY, WILL_DEPLOY, CREATED } from './constants';\nimport DeploymentActions from './deployment_actions.vue';\nimport DeploymentInfo from './deployment_info.vue';\n\nexport default {\n  // name: 'Deployment' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26#possible-false-positives\n  // eslint-disable-next-line @gitlab/require-i18n-strings\n  name: 'Deployment',\n  components: {\n    DeploymentActions,\n    DeploymentInfo,\n  },\n  props: {\n    deployment: {\n      type: Object,\n      required: true,\n    },\n    showMetrics: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    computedDeploymentStatus() {\n      if (this.deployment.status === CREATED) {\n        return this.isManual ? MANUAL_DEPLOY : WILL_DEPLOY;\n      }\n      return this.deployment.status;\n    },\n    isManual() {\n      return Boolean(this.deployment.details?.playable_build?.play_path);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"deploy-heading gl-pl-5 gl-pr-4\">\n    <div class=\"ci-widget media\">\n      <div class=\"media-body\">\n        <div class=\"deploy-body\">\n          <deployment-info\n            :computed-deployment-status=\"computedDeploymentStatus\"\n            :deployment=\"deployment\"\n            :show-metrics=\"showMetrics\"\n          />\n          <deployment-actions\n            :deployment=\"deployment\"\n            :computed-deployment-status=\"computedDeploymentStatus\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./deployment_info.vue?vue&type=template&id=10f1be36\"\nimport script from \"./deployment_info.vue?vue&type=script&lang=js\"\nexport * from \"./deployment_info.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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:\"js-deployment-info deployment-info\"},[(_vm.hasDeploymentMeta)?[_c('span',[_vm._v(_vm._s(_vm.deployedText))]),_vm._v(\" \"),_c('gl-link',{staticClass:\"js-deploy-meta gl-pb-1 gl-text-sm\",attrs:{\"href\":_vm.deployment.url,\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\"}},[_c('gl-truncate',{staticClass:\"js-deploy-env-name\",attrs:{\"text\":_vm.deployment.name,\"position\":\"middle\",\"with-tooltip\":\"\"}})],1)]:_vm._e(),_vm._v(\" \"),(_vm.hasDeploymentTime)?_c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"js-deploy-time\",attrs:{\"title\":_vm.deployment.deployed_at_formatted}},[_vm._v(\"\\n    \"+_vm._s(_vm.deployTimeago)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(_vm.showMemoryUsage)?_c('memory-usage',{attrs:{\"metrics-url\":_vm.deployment.metrics_url,\"metrics-monitoring-url\":_vm.deployment.metrics_monitoring_url}}):_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!./deployment_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!./deployment_list.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf } from '@gitlab/ui';\nimport { n__ } from '~/locale';\nimport MrCollapsibleExtension from '../mr_collapsible_extension.vue';\nimport Deployment from './deployment.vue';\n\nexport default {\n  components: {\n    Deployment,\n    GlSprintf,\n    MrCollapsibleExtension,\n  },\n  props: {\n    deployments: {\n      type: Array,\n      required: true,\n    },\n    deploymentClass: {\n      type: String,\n      required: true,\n    },\n    hasDeploymentMetrics: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    showCollapsedDeployments() {\n      return this.deployments.length > 3;\n    },\n    multipleDeploymentsTitle() {\n      return n__(\n        'Deployments|%{deployments} environment impacted.',\n        'Deployments|%{deployments} environments impacted.',\n        this.deployments.length,\n      );\n    },\n  },\n};\n</script>\n<template>\n  <mr-collapsible-extension v-if=\"showCollapsedDeployments\" :title=\"__('View all environments.')\">\n    <template #header>\n      <div class=\"gl-mr-3 gl-leading-normal\">\n        <gl-sprintf :message=\"multipleDeploymentsTitle\">\n          <template #deployments>\n            <span class=\"gl-mr-2 gl-font-bold\">{{ deployments.length }}</span>\n          </template>\n        </gl-sprintf>\n      </div>\n    </template>\n    <deployment\n      v-for=\"deployment in deployments\"\n      :key=\"deployment.id\"\n      :class=\"deploymentClass\"\n      :deployment=\"deployment\"\n      :show-metrics=\"hasDeploymentMetrics\"\n    />\n  </mr-collapsible-extension>\n  <div v-else class=\"mr-widget-extension\">\n    <deployment\n      v-for=\"deployment in deployments\"\n      :key=\"deployment.id\"\n      :class=\"deploymentClass\"\n      :deployment=\"deployment\"\n      :show-metrics=\"hasDeploymentMetrics\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./deployment.vue?vue&type=template&id=4ea7c7cc\"\nimport script from \"./deployment.vue?vue&type=script&lang=js\"\nexport * from \"./deployment.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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:\"deploy-heading gl-pl-5 gl-pr-4\"},[_c('div',{staticClass:\"ci-widget media\"},[_c('div',{staticClass:\"media-body\"},[_c('div',{staticClass:\"deploy-body\"},[_c('deployment-info',{attrs:{\"computed-deployment-status\":_vm.computedDeploymentStatus,\"deployment\":_vm.deployment,\"show-metrics\":_vm.showMetrics}}),_vm._v(\" \"),_c('deployment-actions',{attrs:{\"deployment\":_vm.deployment,\"computed-deployment-status\":_vm.computedDeploymentStatus}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./deployment_list.vue?vue&type=template&id=63aad68e\"\nimport script from \"./deployment_list.vue?vue&type=script&lang=js\"\nexport * from \"./deployment_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 (_vm.showCollapsedDeployments)?_c('mr-collapsible-extension',{attrs:{\"title\":_vm.__('View all environments.')},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-mr-3 gl-leading-normal\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.multipleDeploymentsTitle},scopedSlots:_vm._u([{key:\"deployments\",fn:function(){return [_c('span',{staticClass:\"gl-mr-2 gl-font-bold\"},[_vm._v(_vm._s(_vm.deployments.length))])]},proxy:true}],null,false,1971724356)})],1)]},proxy:true}],null,false,2217608618)},[_vm._v(\" \"),_vm._l((_vm.deployments),function(deployment){return _c('deployment',{key:deployment.id,class:_vm.deploymentClass,attrs:{\"deployment\":deployment,\"show-metrics\":_vm.hasDeploymentMetrics}})})],2):_c('div',{staticClass:\"mr-widget-extension\"},_vm._l((_vm.deployments),function(deployment){return _c('deployment',{key:deployment.id,class:_vm.deploymentClass,attrs:{\"deployment\":deployment,\"show-metrics\":_vm.hasDeploymentMetrics}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./mr_widget_container.vue?vue&type=template&id=0c4febe0\"\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:\"mr-section-container\"},[_c('div',{staticClass:\"mr-widget-section\"},[_c('div',{staticClass:\"mr-widget-content\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_vm._t(\"footer\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlDisclosureDropdown, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport const i18n = {\n  artifacts: __('Artifacts'),\n  artifactSectionHeader: __('Download artifacts'),\n};\n\nexport default {\n  i18n,\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlDisclosureDropdown,\n  },\n  inject: {\n    artifactsEndpoint: {\n      default: '',\n    },\n    artifactsEndpointPlaceholder: {\n      default: '',\n    },\n  },\n  props: {\n    pipelineId: {\n      type: Number,\n      required: true,\n    },\n    artifacts: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  computed: {\n    items() {\n      return [\n        {\n          name: this.$options.i18n.artifactSectionHeader,\n          items: this.artifacts.map(({ name, path }) => ({\n            text: name,\n            href: path,\n            extraAttrs: {\n              download: '',\n              rel: 'nofollow',\n            },\n          })),\n        },\n      ];\n    },\n    shouldShowDropdown() {\n      return this.artifacts?.length;\n    },\n  },\n};\n</script>\n<template>\n  <gl-disclosure-dropdown\n    v-if=\"shouldShowDropdown\"\n    v-gl-tooltip\n    class=\"gl-text-left\"\n    :title=\"$options.i18n.artifacts\"\n    :toggle-text=\"$options.i18n.artifacts\"\n    :aria-label=\"$options.i18n.artifacts\"\n    icon=\"download\"\n    placement=\"bottom-end\"\n    text-sr-only\n    :items=\"items\"\n    data-testid=\"artifacts-dropdown\"\n  />\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 !important;\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!./pipelines_artifacts.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipelines_artifacts.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!./pipelines_artifacts.vue?vue&type=style&index=0&id=c3da8bce&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 \"./pipelines_artifacts.vue?vue&type=template&id=c3da8bce&scoped=true\"\nimport script from \"./pipelines_artifacts.vue?vue&type=script&lang=js\"\nexport * from \"./pipelines_artifacts.vue?vue&type=script&lang=js\"\nimport style0 from \"./pipelines_artifacts.vue?vue&type=style&index=0&id=c3da8bce&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  \"c3da8bce\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldShowDropdown)?_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-text-left\",attrs:{\"title\":_vm.$options.i18n.artifacts,\"toggle-text\":_vm.$options.i18n.artifacts,\"aria-label\":_vm.$options.i18n.artifacts,\"icon\":\"download\",\"placement\":\"bottom-end\",\"text-sr-only\":\"\",\"items\":_vm.items,\"data-testid\":\"artifacts-dropdown\"}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { createAlert } from '~/alert';\nimport { s__, __ } from '~/locale';\nimport Api from '~/api';\nimport toast from '~/vue_shared/plugins/global_toast';\nimport { HTTP_STATUS_UNAUTHORIZED } from '~/lib/utils/http_status';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport default {\n  props: {\n    targetProjectId: {\n      type: Number,\n      required: true,\n    },\n    iid: {\n      type: Number,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      isCreatingPipeline: false,\n    };\n  },\n  methods: {\n    async runPipeline() {\n      this.isCreatingPipeline = true;\n\n      try {\n        await Api.postMergeRequestPipeline(this.targetProjectId, {\n          mergeRequestId: this.iid,\n        });\n\n        this.isCreatingPipeline = false;\n        this.$refs.modal?.hide();\n\n        toast(s__('Pipeline|Creating pipeline.'));\n      } catch (e) {\n        const unauthorized = e.response.status === HTTP_STATUS_UNAUTHORIZED;\n        let errorMessage = __(\n          'An error occurred while trying to run a new pipeline for this merge request.',\n        );\n\n        if (unauthorized) {\n          errorMessage = __('You do not have permission to run a pipeline on this branch.');\n        }\n\n        createAlert({\n          message: errorMessage,\n          primaryButton: {\n            text: __('Learn more'),\n            link: helpPagePath('ci/pipelines/merge_request_pipelines.md'),\n          },\n        });\n\n        this.isCreatingPipeline = false;\n      }\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!./mr_widget_pipeline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_pipeline.vue?vue&type=script&lang=js\"","<script>\n/* eslint-disable vue/require-default-prop */\nimport {\n  GlIcon,\n  GlLink,\n  GlLoadingIcon,\n  GlSprintf,\n  GlTooltip,\n  GlTooltipDirective,\n  GlButton,\n} from '@gitlab/ui';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { s__, n__ } from '~/locale';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport { keepLatestDownstreamPipelines } from '~/ci/pipeline_details/utils/parsing_utils';\nimport PipelineArtifacts from '~/ci/pipelines_page/components/pipelines_artifacts.vue';\nimport PipelineMiniGraph from '~/ci/pipeline_mini_graph/pipeline_mini_graph.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\nimport TooltipOnTruncate from '~/vue_shared/components/tooltip_on_truncate/tooltip_on_truncate.vue';\nimport HelpPopover from '~/vue_shared/components/help_popover.vue';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport mergeRequestEventTypeQuery from '../queries/merge_request_event_type.query.graphql';\nimport runPipelineMixin from '../mixins/run_pipeline';\nimport {\n  PIPELINE_EVENT_TYPE_MERGE_REQUEST,\n  PIPELINE_EVENT_TYPE_MERGE_TRAIN,\n  PIPELINE_EVENT_TYPE_MERGED_RESULT,\n  PIPELINE_EVENT_TYPE_MAP,\n} from '../constants';\n\nexport default {\n  name: 'MRWidgetPipeline',\n  apollo: {\n    mergeRequestEventType: {\n      query: mergeRequestEventTypeQuery,\n      variables() {\n        return {\n          projectPath: this.targetProjectFullPath,\n          iid: `${this.iid}`,\n        };\n      },\n      skip() {\n        return !this.retargeted;\n      },\n      update: (d) => d.project?.mergeRequest?.pipelines?.nodes?.[0]?.mergeRequestEventType,\n    },\n  },\n  components: {\n    CiIcon,\n    GlLink,\n    GlLoadingIcon,\n    GlIcon,\n    GlSprintf,\n    GlTooltip,\n    GlButton,\n    PipelineMiniGraph,\n    PipelineArtifacts,\n    TimeAgoTooltip,\n    TooltipOnTruncate,\n    HelpPopover,\n    HelpIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n    SafeHtml,\n  },\n  mixins: [runPipelineMixin],\n  props: {\n    pipeline: {\n      type: Object,\n      required: true,\n    },\n    pipelineCoverageDelta: {\n      type: String,\n      required: false,\n    },\n    pipelineEtag: {\n      type: String,\n      required: false,\n    },\n    buildsWithCoverage: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n    // This prop needs to be camelCase, html attributes are case insensive\n    // https://vuejs.org/v2/guide/components.html#camelCase-vs-kebab-case\n    hasCi: {\n      type: Boolean,\n      required: false,\n    },\n    ciStatus: {\n      type: String,\n      required: false,\n    },\n    pipelineMustSucceed: {\n      type: Boolean,\n      required: false,\n    },\n    sourceBranchLink: {\n      type: String,\n      required: false,\n    },\n    sourceBranch: {\n      type: String,\n      required: false,\n    },\n    mrTroubleshootingDocsPath: {\n      type: String,\n      required: true,\n    },\n    ciTroubleshootingDocsPath: {\n      type: String,\n      required: true,\n    },\n    mergeStrategy: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    retargeted: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    targetProjectFullPath: {\n      type: String,\n      required: true,\n    },\n    isPostMerge: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isCreatingPipeline: false,\n      mergeRequestEventType: null,\n    };\n  },\n  computed: {\n    downstreamPipelines() {\n      const downstream = this.pipeline.triggered;\n      return keepLatestDownstreamPipelines(downstream);\n    },\n    hasPipeline() {\n      return this.pipeline && Object.keys(this.pipeline).length > 0;\n    },\n    hasCIError() {\n      return this.hasPipeline && !this.ciStatus;\n    },\n    status() {\n      return this.pipeline?.details?.status || {};\n    },\n    artifacts() {\n      return this.pipeline?.details?.artifacts;\n    },\n    hasArtifacts() {\n      return Boolean(this.pipeline?.details?.artifacts?.length);\n    },\n    hasStages() {\n      return this.pipeline?.details?.stages?.length > 0;\n    },\n    hasCommitInfo() {\n      return this.pipeline.commit && Object.keys(this.pipeline.commit).length > 0;\n    },\n    isMergeRequestPipeline() {\n      return Boolean(this.pipeline.flags && this.pipeline.flags.merge_request_pipeline);\n    },\n    showSourceBranch() {\n      return Boolean(this.pipeline.ref.branch);\n    },\n    finishedAt() {\n      return this.pipeline?.details?.finished_at;\n    },\n    coverageDeltaClass() {\n      const delta = this.pipelineCoverageDelta;\n      if (delta && parseFloat(delta) > 0) {\n        return 'gl-text-success';\n      }\n      if (delta && parseFloat(delta) < 0) {\n        return 'gl-text-danger';\n      }\n      return '';\n    },\n    pipelineCoverageJobNumberText() {\n      return n__('from %d job', 'from %d jobs', this.buildsWithCoverage.length);\n    },\n    pipelineCoverageTooltipDeltaDescription() {\n      const delta = parseFloat(this.pipelineCoverageDelta) || 0;\n      if (delta > 0) {\n        return s__('Pipeline|This change will increase the overall test coverage if merged.');\n      }\n      if (delta < 0) {\n        return s__('Pipeline|This change will decrease the overall test coverage if merged.');\n      }\n      return s__('Pipeline|This change will not change the overall test coverage if merged.');\n    },\n    pipelineCoverageTooltipDescription() {\n      return n__(\n        'Test coverage value for this pipeline was calculated by the coverage value of %d job.',\n        'Test coverage value for this pipeline was calculated by averaging the resulting coverage values of %d jobs.',\n        this.buildsWithCoverage.length,\n      );\n    },\n    isMergeTrain() {\n      return Boolean(this.pipeline.flags?.merge_train_pipeline);\n    },\n    showPipelineTypeHelpPopover() {\n      return [\n        PIPELINE_EVENT_TYPE_MERGE_TRAIN,\n        PIPELINE_EVENT_TYPE_MERGED_RESULT,\n        PIPELINE_EVENT_TYPE_MERGE_REQUEST,\n      ].includes(this.pipeline?.details?.event_type_name);\n    },\n    pipelineTypeHelpPopoverOptions() {\n      const eventTypeName = this.pipeline?.details?.event_type_name;\n\n      return PIPELINE_EVENT_TYPE_MAP[eventTypeName] || { title: '', content: '' };\n    },\n  },\n  errorText: s__(\n    'Pipeline|Could not retrieve the pipeline status. For troubleshooting steps, read the %{linkStart}documentation%{linkEnd}.',\n  ),\n  monitoringPipelineText: s__('Pipeline|Checking pipeline status.'),\n};\n</script>\n<template>\n  <div class=\"ci-widget media\">\n    <template v-if=\"hasCIError\">\n      <gl-icon name=\"status_failed\" :size=\"24\" variant=\"danger\" />\n      <p class=\"gl-mb-0 gl-ml-5 gl-grow\" data-testid=\"ci-error-message\">\n        <gl-sprintf :message=\"$options.errorText\">\n          <template #link=\"{ content }\">\n            <gl-link :href=\"mrTroubleshootingDocsPath\">{{ content }}</gl-link>\n          </template>\n        </gl-sprintf>\n      </p>\n    </template>\n    <template v-else-if=\"retargeted\">\n      <gl-icon name=\"status_canceled\" class=\"gl-mr-3 gl-self-center\" />\n      <p class=\"gl-mb-0 gl-ml-3 gl-flex gl-grow gl-text-subtle\" data-testid=\"retargeted-message\">\n        {{\n          __(\n            'You should run a new pipeline, because the target branch has changed for this merge request.',\n          )\n        }}\n      </p>\n      <gl-button\n        v-if=\"mergeRequestEventType\"\n        category=\"tertiary\"\n        variant=\"confirm\"\n        size=\"small\"\n        :loading=\"isCreatingPipeline\"\n        data-testid=\"run-pipeline-button\"\n        @click=\"runPipeline\"\n      >\n        {{ __('Run pipeline') }}\n      </gl-button>\n    </template>\n    <template v-else-if=\"!hasPipeline\">\n      <gl-loading-icon size=\"sm\" />\n      <p class=\"gl-mb-0 gl-ml-3 gl-flex gl-grow\" data-testid=\"monitoring-pipeline-message\">\n        {{ $options.monitoringPipelineText }}\n        <gl-link\n          v-gl-tooltip\n          :href=\"ciTroubleshootingDocsPath\"\n          target=\"_blank\"\n          :title=\"__('Get more information about troubleshooting pipelines')\"\n          class=\"gl-ml-2 gl-flex gl-items-center\"\n        >\n          <help-icon :aria-label=\"__('Link to go to GitLab pipeline documentation')\" />\n        </gl-link>\n      </p>\n    </template>\n    <template v-else-if=\"hasPipeline\">\n      <ci-icon :status=\"status\" class=\"gl-mr-3 gl-mt-2 gl-self-start\" />\n      <div class=\"ci-widget-container gl-flex\">\n        <div class=\"ci-widget-content\">\n          <div class=\"media-body\">\n            <div\n              data-testid=\"pipeline-info-container\"\n              class=\"gl-flex gl-flex-wrap gl-items-center gl-justify-between\"\n            >\n              <p\n                class=\"mr-pipeline-title !gl-m-0 !gl-mr-3 gl-self-start gl-font-bold gl-text-default\"\n              >\n                {{ pipeline.details.event_type_name }}\n                <gl-link :href=\"pipeline.path\" class=\"pipeline-id\" data-testid=\"pipeline-id\"\n                  >#{{ pipeline.id }}</gl-link\n                >\n                {{ pipeline.details.status.label }}\n              </p>\n              <div class=\"gl-inline-flex gl-grow gl-items-center gl-justify-between\">\n                <div>\n                  <pipeline-mini-graph\n                    v-if=\"pipeline.details.stages\"\n                    :downstream-pipelines=\"downstreamPipelines\"\n                    :is-merge-train=\"isMergeTrain\"\n                    :pipeline-path=\"pipeline.path\"\n                    :pipeline-stages=\"pipeline.details.stages\"\n                    :upstream-pipeline=\"pipeline.triggered_by\"\n                  />\n                </div>\n                <pipeline-artifacts\n                  v-if=\"hasArtifacts\"\n                  :pipeline-id=\"pipeline.id\"\n                  :artifacts=\"artifacts\"\n                  class=\"gl-ml-3\"\n                />\n              </div>\n            </div>\n\n            <div class=\"gl-flex gl-flex-wrap gl-items-center\">\n              <p class=\"gl-m-0 gl-text-sm gl-text-subtle\" data-testid=\"pipeline-details-container\">\n                {{ pipeline.details.event_type_name }} {{ pipeline.details.status.label }}\n                <template v-if=\"hasCommitInfo\">\n                  {{ s__('Pipeline|for') }}\n                  <gl-link\n                    :href=\"pipeline.commit.commit_path\"\n                    class=\"commit-sha-container\"\n                    data-testid=\"commit-link\"\n                    >{{ pipeline.commit.short_id }}</gl-link\n                  >\n                </template>\n                <template v-if=\"showSourceBranch\">\n                  {{ s__('Pipeline|on') }}\n                  <tooltip-on-truncate\n                    :title=\"sourceBranch\"\n                    truncate-target=\"child\"\n                    class=\"label-branch label-truncate ref-container\"\n                  >\n                    <template v-if=\"isPostMerge\">{{ sourceBranchLink }}</template>\n                    <span v-else v-safe-html=\"sourceBranchLink\"></span>\n                  </tooltip-on-truncate>\n                </template>\n                <template v-if=\"finishedAt\">\n                  <time-ago-tooltip\n                    :time=\"finishedAt\"\n                    tooltip-placement=\"bottom\"\n                    data-testid=\"finished-at\"\n                  />\n                </template>\n              </p>\n              <help-popover\n                v-if=\"showPipelineTypeHelpPopover\"\n                class=\"gl-ml-2 gl-inline-flex\"\n                :options=\"pipelineTypeHelpPopoverOptions\"\n              />\n            </div>\n\n            <div v-if=\"pipeline.coverage\" class=\"coverage gl-mt-1\" data-testid=\"pipeline-coverage\">\n              {{ s__('Pipeline|Test coverage') }} {{ pipeline.coverage }}%\n              <span\n                v-if=\"pipelineCoverageDelta\"\n                ref=\"pipelineCoverageDelta\"\n                :class=\"coverageDeltaClass\"\n                data-testid=\"pipeline-coverage-delta\"\n              >\n                ({{ pipelineCoverageDelta }}%)\n              </span>\n              {{ pipelineCoverageJobNumberText }}\n              <span ref=\"pipelineCoverageQuestion\">\n                <help-icon />\n              </span>\n              <gl-tooltip\n                :target=\"() => $refs.pipelineCoverageQuestion\"\n                data-testid=\"pipeline-coverage-tooltip\"\n              >\n                {{ pipelineCoverageTooltipDescription }}\n                <div\n                  v-for=\"(build, index) in buildsWithCoverage\"\n                  :key=\"`${build.name}-${index}`\"\n                  class=\"gl-mt-3 gl-px-4 gl-text-left\"\n                >\n                  {{ build.name }} ({{ build.coverage }}%)\n                </div>\n              </gl-tooltip>\n              <gl-tooltip\n                :target=\"() => $refs.pipelineCoverageDelta\"\n                data-testid=\"pipeline-coverage-delta-tooltip\"\n              >\n                {{ pipelineCoverageTooltipDeltaDescription }}\n              </gl-tooltip>\n            </div>\n          </div>\n        </div>\n      </div>\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!./mr_widget_pipeline_container.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_pipeline_container.vue?vue&type=script&lang=js\"","<script>\nimport { sanitize } from '~/lib/dompurify';\nimport { n__ } from '~/locale';\nimport MergeRequestStore from '../stores/mr_widget_store';\nimport ArtifactsApp from './artifacts_list_app.vue';\nimport DeploymentList from './deployment/deployment_list.vue';\nimport MrWidgetContainer from './mr_widget_container.vue';\nimport MrWidgetPipeline from './mr_widget_pipeline.vue';\n\n/**\n * Renders the pipeline and related deployments from the store.\n *\n * | Props         | Description\n * |---------------|-------------\n * | `mr`          | This is the mr_widget store\n * | `isPostMerge` | If true, show the \"post merge\" pipeline and deployments\n */\nexport default {\n  name: 'MrWidgetPipelineContainer',\n  components: {\n    ArtifactsApp,\n    DeploymentList,\n    MrWidgetContainer,\n    MrWidgetPipeline,\n    MergeTrainPositionIndicator: () =>\n      import('ee_component/vue_merge_request_widget/components/merge_train_position_indicator.vue'),\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    isPostMerge: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    branch() {\n      return this.isPostMerge ? this.mr.targetBranch : this.mr.sourceBranch;\n    },\n    branchLink() {\n      return this.isPostMerge ? sanitize(this.mr.targetBranch) : this.mr.sourceBranchLink;\n    },\n    deployments() {\n      return this.isPostMerge ? this.mr.postMergeDeployments : this.mr.deployments;\n    },\n    deploymentClass() {\n      return this.isPostMerge ? 'js-post-deployment' : 'js-pre-deployment';\n    },\n    hasDeploymentMetrics() {\n      return this.isPostMerge;\n    },\n    pipeline() {\n      return this.isPostMerge ? this.mr.mergePipeline : this.mr.pipeline;\n    },\n    showCollapsedDeployments() {\n      return this.deployments.length > 3;\n    },\n    multipleDeploymentsTitle() {\n      return n__(\n        'Deployments|%{deployments} environment impacted.',\n        'Deployments|%{deployments} environments impacted.',\n        this.deployments.length,\n      );\n    },\n    preferredAutoMergeStrategy() {\n      return MergeRequestStore.getPreferredAutoMergeStrategy(this.mr.availableAutoMergeStrategies);\n    },\n    ciStatus() {\n      return this.isPostMerge ? this.mr?.mergePipeline?.details?.status?.text : this.mr.ciStatus;\n    },\n  },\n};\n</script>\n<template>\n  <mr-widget-container>\n    <mr-widget-pipeline\n      :pipeline=\"pipeline\"\n      :pipeline-coverage-delta=\"mr.pipelineCoverageDelta\"\n      :pipeline-etag=\"mr.pipelineEtag\"\n      :builds-with-coverage=\"mr.buildsWithCoverage\"\n      :ci-status=\"ciStatus\"\n      :has-ci=\"mr.hasCI\"\n      :pipeline-must-succeed=\"mr.onlyAllowMergeIfPipelineSucceeds\"\n      :source-branch=\"branch\"\n      :source-branch-link=\"branchLink\"\n      :mr-troubleshooting-docs-path=\"mr.mrTroubleshootingDocsPath\"\n      :ci-troubleshooting-docs-path=\"mr.ciTroubleshootingDocsPath\"\n      :merge-strategy=\"preferredAutoMergeStrategy\"\n      :retargeted=\"mr.retargeted\"\n      :target-project-id=\"mr.targetProjectId\"\n      :iid=\"mr.iid\"\n      :target-project-full-path=\"mr.targetProjectFullPath\"\n      :is-post-merge=\"isPostMerge\"\n    />\n    <template #footer>\n      <div v-if=\"mr.exposedArtifactsPath\" class=\"js-exposed-artifacts\">\n        <artifacts-app :endpoint=\"mr.exposedArtifactsPath\" />\n      </div>\n      <deployment-list\n        v-if=\"deployments.length\"\n        :deployments=\"deployments\"\n        :deployment-class=\"deploymentClass\"\n        :has-deployment-metrics=\"hasDeploymentMetrics\"\n      />\n\n      <merge-train-position-indicator\n        class=\"mr-widget-extension\"\n        :merge-request-state=\"mr.mergeRequestState\"\n        :merge-trains-count=\"mr.mergeTrainsCount\"\n        :merge-trains-path=\"mr.mergeTrainsPath\"\n        :merge-train-car=\"mr.mergeTrainCar\"\n      />\n    </template>\n  </mr-widget-container>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_pipeline.vue?vue&type=template&id=f2754674\"\nimport script from \"./mr_widget_pipeline.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_pipeline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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:\"ci-widget media\"},[(_vm.hasCIError)?[_c('gl-icon',{attrs:{\"name\":\"status_failed\",\"size\":24,\"variant\":\"danger\"}}),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-0 gl-ml-5 gl-grow\",attrs:{\"data-testid\":\"ci-error-message\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.errorText},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.mrTroubleshootingDocsPath}},[_vm._v(_vm._s(content))])]}}],null,false,1359385839)})],1)]:(_vm.retargeted)?[_c('gl-icon',{staticClass:\"gl-mr-3 gl-self-center\",attrs:{\"name\":\"status_canceled\"}}),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-0 gl-ml-3 gl-flex gl-grow gl-text-subtle\",attrs:{\"data-testid\":\"retargeted-message\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.__(\n          'You should run a new pipeline, because the target branch has changed for this merge request.',\n        ))+\"\\n    \")]),_vm._v(\" \"),(_vm.mergeRequestEventType)?_c('gl-button',{attrs:{\"category\":\"tertiary\",\"variant\":\"confirm\",\"size\":\"small\",\"loading\":_vm.isCreatingPipeline,\"data-testid\":\"run-pipeline-button\"},on:{\"click\":_vm.runPipeline}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Run pipeline'))+\"\\n    \")]):_vm._e()]:(!_vm.hasPipeline)?[_c('gl-loading-icon',{attrs:{\"size\":\"sm\"}}),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-0 gl-ml-3 gl-flex gl-grow\",attrs:{\"data-testid\":\"monitoring-pipeline-message\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.monitoringPipelineText)+\"\\n      \"),_c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-2 gl-flex gl-items-center\",attrs:{\"href\":_vm.ciTroubleshootingDocsPath,\"target\":\"_blank\",\"title\":_vm.__('Get more information about troubleshooting pipelines')}},[_c('help-icon',{attrs:{\"aria-label\":_vm.__('Link to go to GitLab pipeline documentation')}})],1)],1)]:(_vm.hasPipeline)?[_c('ci-icon',{staticClass:\"gl-mr-3 gl-mt-2 gl-self-start\",attrs:{\"status\":_vm.status}}),_vm._v(\" \"),_c('div',{staticClass:\"ci-widget-container gl-flex\"},[_c('div',{staticClass:\"ci-widget-content\"},[_c('div',{staticClass:\"media-body\"},[_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-items-center gl-justify-between\",attrs:{\"data-testid\":\"pipeline-info-container\"}},[_c('p',{staticClass:\"mr-pipeline-title !gl-m-0 !gl-mr-3 gl-self-start gl-font-bold gl-text-default\"},[_vm._v(\"\\n              \"+_vm._s(_vm.pipeline.details.event_type_name)+\"\\n              \"),_c('gl-link',{staticClass:\"pipeline-id\",attrs:{\"href\":_vm.pipeline.path,\"data-testid\":\"pipeline-id\"}},[_vm._v(\"#\"+_vm._s(_vm.pipeline.id))]),_vm._v(\"\\n              \"+_vm._s(_vm.pipeline.details.status.label)+\"\\n            \")],1),_vm._v(\" \"),_c('div',{staticClass:\"gl-inline-flex gl-grow gl-items-center gl-justify-between\"},[_c('div',[(_vm.pipeline.details.stages)?_c('pipeline-mini-graph',{attrs:{\"downstream-pipelines\":_vm.downstreamPipelines,\"is-merge-train\":_vm.isMergeTrain,\"pipeline-path\":_vm.pipeline.path,\"pipeline-stages\":_vm.pipeline.details.stages,\"upstream-pipeline\":_vm.pipeline.triggered_by}}):_vm._e()],1),_vm._v(\" \"),(_vm.hasArtifacts)?_c('pipeline-artifacts',{staticClass:\"gl-ml-3\",attrs:{\"pipeline-id\":_vm.pipeline.id,\"artifacts\":_vm.artifacts}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-items-center\"},[_c('p',{staticClass:\"gl-m-0 gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"pipeline-details-container\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.pipeline.details.event_type_name)+\" \"+_vm._s(_vm.pipeline.details.status.label)+\"\\n              \"),(_vm.hasCommitInfo)?[_vm._v(\"\\n                \"+_vm._s(_vm.s__('Pipeline|for'))+\"\\n                \"),_c('gl-link',{staticClass:\"commit-sha-container\",attrs:{\"href\":_vm.pipeline.commit.commit_path,\"data-testid\":\"commit-link\"}},[_vm._v(_vm._s(_vm.pipeline.commit.short_id))])]:_vm._e(),_vm._v(\" \"),(_vm.showSourceBranch)?[_vm._v(\"\\n                \"+_vm._s(_vm.s__('Pipeline|on'))+\"\\n                \"),_c('tooltip-on-truncate',{staticClass:\"label-branch label-truncate ref-container\",attrs:{\"title\":_vm.sourceBranch,\"truncate-target\":\"child\"}},[(_vm.isPostMerge)?[_vm._v(_vm._s(_vm.sourceBranchLink))]:_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.sourceBranchLink),expression:\"sourceBranchLink\"}]})],2)]:_vm._e(),_vm._v(\" \"),(_vm.finishedAt)?[_c('time-ago-tooltip',{attrs:{\"time\":_vm.finishedAt,\"tooltip-placement\":\"bottom\",\"data-testid\":\"finished-at\"}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showPipelineTypeHelpPopover)?_c('help-popover',{staticClass:\"gl-ml-2 gl-inline-flex\",attrs:{\"options\":_vm.pipelineTypeHelpPopoverOptions}}):_vm._e()],1),_vm._v(\" \"),(_vm.pipeline.coverage)?_c('div',{staticClass:\"coverage gl-mt-1\",attrs:{\"data-testid\":\"pipeline-coverage\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.s__('Pipeline|Test coverage'))+\" \"+_vm._s(_vm.pipeline.coverage)+\"%\\n            \"),(_vm.pipelineCoverageDelta)?_c('span',{ref:\"pipelineCoverageDelta\",class:_vm.coverageDeltaClass,attrs:{\"data-testid\":\"pipeline-coverage-delta\"}},[_vm._v(\"\\n              (\"+_vm._s(_vm.pipelineCoverageDelta)+\"%)\\n            \")]):_vm._e(),_vm._v(\"\\n            \"+_vm._s(_vm.pipelineCoverageJobNumberText)+\"\\n            \"),_c('span',{ref:\"pipelineCoverageQuestion\"},[_c('help-icon')],1),_vm._v(\" \"),_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.pipelineCoverageQuestion,\"data-testid\":\"pipeline-coverage-tooltip\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.pipelineCoverageTooltipDescription)+\"\\n              \"),_vm._l((_vm.buildsWithCoverage),function(build,index){return _c('div',{key:`${build.name}-${index}`,staticClass:\"gl-mt-3 gl-px-4 gl-text-left\"},[_vm._v(\"\\n                \"+_vm._s(build.name)+\" (\"+_vm._s(build.coverage)+\"%)\\n              \")])})],2),_vm._v(\" \"),_c('gl-tooltip',{attrs:{\"target\":() => _vm.$refs.pipelineCoverageDelta,\"data-testid\":\"pipeline-coverage-delta-tooltip\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.pipelineCoverageTooltipDeltaDescription)+\"\\n            \")])],1):_vm._e()])])])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./mr_widget_pipeline_container.vue?vue&type=template&id=669a903f\"\nimport script from \"./mr_widget_pipeline_container.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_pipeline_container.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('mr-widget-container',{scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [(_vm.mr.exposedArtifactsPath)?_c('div',{staticClass:\"js-exposed-artifacts\"},[_c('artifacts-app',{attrs:{\"endpoint\":_vm.mr.exposedArtifactsPath}})],1):_vm._e(),_vm._v(\" \"),(_vm.deployments.length)?_c('deployment-list',{attrs:{\"deployments\":_vm.deployments,\"deployment-class\":_vm.deploymentClass,\"has-deployment-metrics\":_vm.hasDeploymentMetrics}}):_vm._e(),_vm._v(\" \"),_c('merge-train-position-indicator',{staticClass:\"mr-widget-extension\",attrs:{\"merge-request-state\":_vm.mr.mergeRequestState,\"merge-trains-count\":_vm.mr.mergeTrainsCount,\"merge-trains-path\":_vm.mr.mergeTrainsPath,\"merge-train-car\":_vm.mr.mergeTrainCar}})]},proxy:true}])},[_c('mr-widget-pipeline',{attrs:{\"pipeline\":_vm.pipeline,\"pipeline-coverage-delta\":_vm.mr.pipelineCoverageDelta,\"pipeline-etag\":_vm.mr.pipelineEtag,\"builds-with-coverage\":_vm.mr.buildsWithCoverage,\"ci-status\":_vm.ciStatus,\"has-ci\":_vm.mr.hasCI,\"pipeline-must-succeed\":_vm.mr.onlyAllowMergeIfPipelineSucceeds,\"source-branch\":_vm.branch,\"source-branch-link\":_vm.branchLink,\"mr-troubleshooting-docs-path\":_vm.mr.mrTroubleshootingDocsPath,\"ci-troubleshooting-docs-path\":_vm.mr.ciTroubleshootingDocsPath,\"merge-strategy\":_vm.preferredAutoMergeStrategy,\"retargeted\":_vm.mr.retargeted,\"target-project-id\":_vm.mr.targetProjectId,\"iid\":_vm.mr.iid,\"target-project-full-path\":_vm.mr.targetProjectFullPath,\"is-post-merge\":_vm.isPostMerge}})],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!./dismissible_container.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dismissible_container.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport axios from '~/lib/utils/axios_utils';\n\nexport default {\n  components: {\n    GlIcon,\n  },\n  props: {\n    path: {\n      type: String,\n      required: true,\n    },\n    featureId: {\n      type: String,\n      required: true,\n    },\n  },\n  methods: {\n    dismiss() {\n      axios\n        .post(this.path, {\n          feature_name: this.featureId,\n        })\n        .catch((e) => {\n          // eslint-disable-next-line @gitlab/require-i18n-strings, no-console\n          console.error('Failed to dismiss message.', e);\n        });\n\n      this.$emit('dismiss');\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div class=\"gl-flex gl-items-center\">\n      <slot name=\"title\"></slot>\n      <div class=\"ml-auto\">\n        <button\n          :aria-label=\"__('Close')\"\n          class=\"gl-rounded-none gl-border-none !gl-bg-transparent gl-p-0 !gl-shadow-none !gl-outline-none\"\n          type=\"button\"\n          data-testid=\"close\"\n          @click=\"dismiss\"\n        >\n          <gl-icon name=\"close\" variant=\"subtle\" />\n        </button>\n      </div>\n    </div>\n    <slot></slot>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./dismissible_container.vue?vue&type=template&id=7a876ede\"\nimport script from \"./dismissible_container.vue?vue&type=script&lang=js\"\nexport * from \"./dismissible_container.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-items-center\"},[_vm._t(\"title\"),_vm._v(\" \"),_c('div',{staticClass:\"ml-auto\"},[_c('button',{staticClass:\"gl-rounded-none gl-border-none !gl-bg-transparent gl-p-0 !gl-shadow-none !gl-outline-none\",attrs:{\"aria-label\":_vm.__('Close'),\"type\":\"button\",\"data-testid\":\"close\"},on:{\"click\":_vm.dismiss}},[_c('gl-icon',{attrs:{\"name\":\"close\",\"variant\":\"subtle\"}})],1)])],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!./mr_widget_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!./mr_widget_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\n\nexport default {\n  components: { GlIcon },\n  props: {\n    name: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"circle-icon-container align-self-start gl-mr-3 gl-mt-2\">\n    <gl-icon :name=\"name\" :size=\"24\" variant=\"subtle\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_icon.vue?vue&type=template&id=097ed84f\"\nimport script from \"./mr_widget_icon.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"circle-icon-container align-self-start gl-mr-3 gl-mt-2\"},[_c('gl-icon',{attrs:{\"name\":_vm.name,\"size\":24,\"variant\":\"subtle\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlLink, GlSprintf, GlButton } from '@gitlab/ui';\nimport Tracking from '~/tracking';\nimport DismissibleContainer from '~/vue_shared/components/dismissible_container.vue';\nimport {\n  SP_TRACK_LABEL,\n  SP_SHOW_TRACK_EVENT,\n  SP_SHOW_TRACK_VALUE,\n  SP_HELP_CONTENT,\n  SP_HELP_URL,\n  SP_ICON_NAME,\n} from '../constants';\nimport MrWidgetIcon from './mr_widget_icon.vue';\n\nconst trackingMixin = Tracking.mixin();\n\nexport default {\n  name: 'MRWidgetSuggestPipeline',\n  SP_ICON_NAME,\n  SP_TRACK_LABEL,\n  SP_SHOW_TRACK_EVENT,\n  SP_SHOW_TRACK_VALUE,\n  SP_HELP_CONTENT,\n  SP_HELP_URL,\n  components: {\n    GlLink,\n    GlSprintf,\n    GlButton,\n    MrWidgetIcon,\n    DismissibleContainer,\n  },\n  mixins: [trackingMixin],\n  props: {\n    pipelinePath: {\n      type: String,\n      required: true,\n    },\n    pipelineSvgPath: {\n      type: String,\n      required: true,\n    },\n    humanAccess: {\n      type: String,\n      required: true,\n    },\n    userCalloutsPath: {\n      type: String,\n      required: true,\n    },\n    userCalloutFeatureId: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    tracking() {\n      return {\n        label: SP_TRACK_LABEL,\n        property: this.humanAccess,\n      };\n    },\n  },\n  mounted() {\n    this.track();\n  },\n};\n</script>\n<template>\n  <dismissible-container\n    class=\"mr-widget-body mr-pipeline-suggest gl-mb-3\"\n    :path=\"userCalloutsPath\"\n    :feature-id=\"userCalloutFeatureId\"\n    @dismiss=\"$emit('dismiss')\"\n  >\n    <template #title>\n      <mr-widget-icon :name=\"$options.SP_ICON_NAME\" />\n      <div>\n        <gl-sprintf\n          :message=\"\n            s__(`mrWidget|%{boldHeaderStart}Looks like there's no pipeline here.%{boldHeaderEnd}`)\n          \"\n        >\n          <template #boldHeader=\"{ content }\">\n            <strong>\n              {{ content }}\n            </strong>\n          </template>\n        </gl-sprintf>\n      </div>\n    </template>\n    <div class=\"row\">\n      <div\n        class=\"col-md-5 order-md-last col-12 svg-content svg-225 gl-mt-5 md:!-gl-mt-2 md:gl-pt-2\"\n      >\n        <img data-testid=\"pipeline-image\" :src=\"pipelineSvgPath\" />\n      </div>\n      <div class=\"col-md-7 order-md-first col-12\">\n        <div class=\"ml-6 gl-pt-5\">\n          <p class=\"gl-mt-2\">\n            <gl-sprintf :message=\"$options.SP_HELP_CONTENT\">\n              <template #link=\"{ content }\">\n                <gl-link data-testid=\"help\" :href=\"$options.SP_HELP_URL\" target=\"_blank\"\n                  >{{ content }}\n                </gl-link>\n              </template>\n            </gl-sprintf>\n          </p>\n          <gl-button\n            data-testid=\"ok\"\n            category=\"primary\"\n            class=\"gl-mt-2\"\n            variant=\"confirm\"\n            :href=\"pipelinePath\"\n            :data-track-property=\"humanAccess\"\n            :data-track-value=\"$options.SP_SHOW_TRACK_VALUE\"\n            :data-track-action=\"$options.SP_SHOW_TRACK_EVENT\"\n            :data-track-label=\"$options.SP_TRACK_LABEL\"\n          >\n            {{ __('Try out GitLab Pipelines') }}\n          </gl-button>\n        </div>\n      </div>\n    </div>\n  </dismissible-container>\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_widget_suggest_pipeline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_suggest_pipeline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_suggest_pipeline.vue?vue&type=template&id=0462fc2e\"\nimport script from \"./mr_widget_suggest_pipeline.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_suggest_pipeline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('dismissible-container',{staticClass:\"mr-widget-body mr-pipeline-suggest gl-mb-3\",attrs:{\"path\":_vm.userCalloutsPath,\"feature-id\":_vm.userCalloutFeatureId},on:{\"dismiss\":function($event){return _vm.$emit('dismiss')}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('mr-widget-icon',{attrs:{\"name\":_vm.$options.SP_ICON_NAME}}),_vm._v(\" \"),_c('div',[_c('gl-sprintf',{attrs:{\"message\":_vm.s__(`mrWidget|%{boldHeaderStart}Looks like there's no pipeline here.%{boldHeaderEnd}`)},scopedSlots:_vm._u([{key:\"boldHeader\",fn:function({ content }){return [_c('strong',[_vm._v(\"\\n            \"+_vm._s(content)+\"\\n          \")])]}}])})],1)]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-5 order-md-last col-12 svg-content svg-225 gl-mt-5 md:!-gl-mt-2 md:gl-pt-2\"},[_c('img',{attrs:{\"data-testid\":\"pipeline-image\",\"src\":_vm.pipelineSvgPath}})]),_vm._v(\" \"),_c('div',{staticClass:\"col-md-7 order-md-first col-12\"},[_c('div',{staticClass:\"ml-6 gl-pt-5\"},[_c('p',{staticClass:\"gl-mt-2\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.SP_HELP_CONTENT},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"data-testid\":\"help\",\"href\":_vm.$options.SP_HELP_URL,\"target\":\"_blank\"}},[_vm._v(_vm._s(content)+\"\\n              \")])]}}])})],1),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-mt-2\",attrs:{\"data-testid\":\"ok\",\"category\":\"primary\",\"variant\":\"confirm\",\"href\":_vm.pipelinePath,\"data-track-property\":_vm.humanAccess,\"data-track-value\":_vm.$options.SP_SHOW_TRACK_VALUE,\"data-track-action\":_vm.$options.SP_SHOW_TRACK_EVENT,\"data-track-label\":_vm.$options.SP_TRACK_LABEL}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Try out GitLab Pipelines'))+\"\\n        \")])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlBadge, GlIcon, GlLink, GlTooltipDirective } from '@gitlab/ui';\nimport { reportToSentry } from '~/ci/utils';\nimport { s__ } from '~/locale';\nimport axios from '~/lib/utils/axios_utils';\nimport { InternalEvents } from '~/tracking';\nimport { JM_JENKINS_TITLE_ICON_NAME, JM_MIGRATION_LINK, JM_EVENT_NAME } from '../constants';\n\nconst trackingMixin = InternalEvents.mixin();\n\nexport default {\n  name: 'MRWidgetMigrateJenkinsCallout',\n  JM_JENKINS_TITLE_ICON_NAME,\n  JM_EVENT_NAME,\n  JM_MIGRATION_LINK,\n  components: {\n    GlBadge,\n    GlLink,\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [trackingMixin],\n  props: {\n    humanAccess: {\n      type: String,\n      required: true,\n    },\n    path: {\n      type: String,\n      required: true,\n    },\n    featureId: {\n      type: String,\n      required: true,\n    },\n  },\n  i18n: {\n    title: s__('mrWidget|Migrate to GitLab CI/CD from Jenkins'),\n    description: s__(\n      'mrWidget|Take advantage of simple, scalable pipelines and CI/CD enabled features. You can view integration results, security scans, tests, code coverage and more directly in merge requests!',\n    ),\n    migrationPlan: s__('mrWidget|Start with migration plan'),\n    information: s__('mrWidget|Information'),\n  },\n  methods: {\n    dismiss() {\n      axios\n        .post(this.path, {\n          feature_name: this.featureId,\n        })\n        .catch((error) => {\n          reportToSentry(this.$options.name, error);\n        });\n\n      this.trackEvent(this.$options.JM_EVENT_NAME);\n\n      this.$emit('dismiss');\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"mr-widget-body mr-pipeline-suggest gl-mb-3\">\n    <div class=\"gl-flex gl-items-center gl-justify-between\">\n      <gl-badge\n        v-gl-tooltip.viewport.left\n        class=\"ci-icon ci-icon-variant-info gl-mr-3 gl-self-start gl-p-2 gl-pl-2\"\n        variant=\"info\"\n        :title=\"$options.i18n.information\"\n        :href=\"$options.MIGRATION_LINK\"\n        data-testid=\"ci-icon\"\n      >\n        <span class=\"ci-icon-gl-icon-wrapper\"\n          ><gl-icon :name=\"$options.JM_JENKINS_TITLE_ICON_NAME\"\n        /></span>\n      </gl-badge>\n      <div class=\"gl-flex gl-items-center gl-justify-between\">\n        <div class=\"gl-flex gl-flex-wrap gl-items-center gl-justify-between\">\n          <div class=\"gl-flex gl-w-full gl-flex-wrap\">\n            <strong class=\"gl-flex gl-grow\">{{ $options.i18n.title }}</strong>\n            <div class=\"gl-flex\">\n              <gl-link\n                data-testid=\"migration-plan\"\n                :href=\"$options.JM_MIGRATION_LINK\"\n                target=\"blank\"\n                >{{ $options.i18n.migrationPlan }}</gl-link\n              >\n              <button\n                :aria-label=\"__('Close')\"\n                class=\"gl-ml-4 gl-border-0 gl-border-l-2 gl-border-solid gl-bg-transparent gl-p-0 gl-pl-2\"\n                type=\"button\"\n                data-testid=\"close\"\n                @click=\"dismiss\"\n              >\n                <gl-icon name=\"close\" />\n              </button>\n            </div>\n          </div>\n          <div class=\"gl-mt-2\">\n            {{ $options.i18n.description }}\n          </div>\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!./mr_widget_migrate_jenkins.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_migrate_jenkins.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_migrate_jenkins.vue?vue&type=template&id=ecf0775a\"\nimport script from \"./mr_widget_migrate_jenkins.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_migrate_jenkins.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-widget-body mr-pipeline-suggest gl-mb-3\"},[_c('div',{staticClass:\"gl-flex gl-items-center gl-justify-between\"},[_c('gl-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"ci-icon ci-icon-variant-info gl-mr-3 gl-self-start gl-p-2 gl-pl-2\",attrs:{\"variant\":\"info\",\"title\":_vm.$options.i18n.information,\"href\":_vm.$options.MIGRATION_LINK,\"data-testid\":\"ci-icon\"}},[_c('span',{staticClass:\"ci-icon-gl-icon-wrapper\"},[_c('gl-icon',{attrs:{\"name\":_vm.$options.JM_JENKINS_TITLE_ICON_NAME}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-items-center gl-justify-between\"},[_c('div',{staticClass:\"gl-flex gl-flex-wrap gl-items-center gl-justify-between\"},[_c('div',{staticClass:\"gl-flex gl-w-full gl-flex-wrap\"},[_c('strong',{staticClass:\"gl-flex gl-grow\"},[_vm._v(_vm._s(_vm.$options.i18n.title))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex\"},[_c('gl-link',{attrs:{\"data-testid\":\"migration-plan\",\"href\":_vm.$options.JM_MIGRATION_LINK,\"target\":\"blank\"}},[_vm._v(_vm._s(_vm.$options.i18n.migrationPlan))]),_vm._v(\" \"),_c('button',{staticClass:\"gl-ml-4 gl-border-0 gl-border-l-2 gl-border-solid gl-bg-transparent gl-p-0 gl-pl-2\",attrs:{\"aria-label\":_vm.__('Close'),\"type\":\"button\",\"data-testid\":\"close\"},on:{\"click\":_vm.dismiss}},[_c('gl-icon',{attrs:{\"name\":\"close\"}})],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-2\"},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.description)+\"\\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!./source_branch_removal_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!./source_branch_removal_status.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport { __ } from '~/locale';\n\nexport default {\n  i18n: {\n    removesBranchText: __('Deletes the source branch'),\n    tooltipTitle: __('A user with write access to the source branch selected this option'),\n  },\n  components: {\n    HelpIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n};\n</script>\n\n<template>\n  <p v-once class=\"mr-info-list gl-mb-0 gl-ml-7 gl-pb-5\">\n    <span class=\"status-text\">\n      {{ $options.i18n.removesBranchText }}\n    </span>\n    <help-icon\n      v-gl-tooltip.hover\n      :title=\"$options.i18n.tooltipTitle\"\n      :aria-label=\"$options.i18n.tooltipTitle\"\n    />\n  </p>\n</template>\n","import { render, staticRenderFns } from \"./source_branch_removal_status.vue?vue&type=template&id=28f52014\"\nimport script from \"./source_branch_removal_status.vue?vue&type=script&lang=js\"\nexport * from \"./source_branch_removal_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 _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('p',{staticClass:\"mr-info-list gl-mb-0 gl-ml-7 gl-pb-5\"},[_c('span',{staticClass:\"status-text\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.removesBranchText)+\"\\n  \")]),_vm._v(\" \"),_c('help-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"title\":_vm.$options.i18n.tooltipTitle,\"aria-label\":_vm.$options.i18n.tooltipTitle}})],1)\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!./bold_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!./bold_text.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf } from '@gitlab/ui';\n\nexport default {\n  name: 'BoldText',\n  components: {\n    GlSprintf,\n  },\n  props: {\n    message: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <span>\n    <gl-sprintf :message=\"message\">\n      <template #bold=\"{ content }\">\n        <span class=\"gl-font-bold\" v-text=\"content\"></span>\n      </template>\n    </gl-sprintf>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./bold_text.vue?vue&type=template&id=5d0c2d40\"\nimport script from \"./bold_text.vue?vue&type=script&lang=js\"\nexport * from \"./bold_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_c('gl-sprintf',{attrs:{\"message\":_vm.message},scopedSlots:_vm._u([{key:\"bold\",fn:function({ content }){return [_c('span',{staticClass:\"gl-font-bold\",domProps:{\"textContent\":_vm._s(content)}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { s__ } from '~/locale';\nimport BoldText from '~/vue_merge_request_widget/components/bold_text.vue';\nimport StateContainer from '../state_container.vue';\n\nconst message = s__(\n  'mrWidget|%{boldStart}Merge unavailable:%{boldEnd} merge requests are read-only on archived projects.',\n);\n\nexport default {\n  name: 'MRWidgetArchived',\n  message,\n  components: {\n    BoldText,\n    StateContainer,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <state-container status=\"failed\" is-collapsible>\n    <bold-text :message=\"$options.message\" />\n  </state-container>\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_widget_archived.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_archived.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_archived.vue?vue&type=template&id=09d886f3\"\nimport script from \"./mr_widget_archived.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_archived.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"failed\",\"is-collapsible\":\"\"}},[_c('bold-text',{attrs:{\"message\":_vm.$options.message}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { s__ } from '~/locale';\nimport { MWCP_MERGE_STRATEGY } from '~/vue_merge_request_widget/constants';\n\nexport default {\n  computed: {\n    statusText() {\n      const { autoMergeStrategy } = this.state.mergeRequest;\n\n      if (autoMergeStrategy === MWCP_MERGE_STRATEGY) {\n        return s__(\n          'mrWidget|Set by %{merge_author} to be merged automatically when all merge checks pass',\n        );\n      }\n\n      return s__(\n        'mrWidget|Set by %{merge_author} to be merged automatically when the pipeline succeeds',\n      );\n    },\n    cancelButtonText() {\n      return s__('mrWidget|Cancel auto-merge');\n    },\n  },\n};\n","import { s__ } from '~/locale';\nimport CEAutoMergeMixin from '~/vue_merge_request_widget/mixins/auto_merge';\nimport {\n  MT_MERGE_STRATEGY,\n  MTWPS_MERGE_STRATEGY,\n  MTWCP_MERGE_STRATEGY,\n  MWCP_MERGE_STRATEGY,\n} from '~/vue_merge_request_widget/constants';\n\nexport default {\n  computed: {\n    statusText() {\n      const { mergeTrains, mergeRequest } = this.state;\n\n      const mergeTrainsCount = mergeTrains?.nodes[0]?.cars?.count || 0;\n      const { autoMergeStrategy } = mergeRequest;\n\n      if (autoMergeStrategy === MT_MERGE_STRATEGY) {\n        return s__('mrWidget|Added to the merge train by %{merge_author}');\n      }\n      if (autoMergeStrategy === MTWPS_MERGE_STRATEGY && mergeTrainsCount === 0) {\n        return s__(\n          'mrWidget|Set by %{merge_author} to start a merge train when the pipeline succeeds',\n        );\n      }\n      if (autoMergeStrategy === MTWPS_MERGE_STRATEGY && mergeTrainsCount !== 0) {\n        return s__(\n          'mrWidget|Set by %{merge_author} to be added to the merge train when the pipeline succeeds',\n        );\n      }\n      if (autoMergeStrategy === MTWCP_MERGE_STRATEGY && mergeTrainsCount === 0) {\n        return s__(\n          'mrWidget|Set by %{merge_author} to start a merge train when all merge checks pass',\n        );\n      }\n      if (autoMergeStrategy === MTWCP_MERGE_STRATEGY && mergeTrainsCount !== 0) {\n        return s__(\n          'mrWidget|Set by %{merge_author} to be added to the merge train when all merge checks pass',\n        );\n      }\n      if (autoMergeStrategy === MWCP_MERGE_STRATEGY) {\n        return s__(\n          'mrWidget|Set by %{merge_author} to be merged automatically when all merge checks pass',\n        );\n      }\n\n      return CEAutoMergeMixin.computed.statusText.call(this);\n    },\n    cancelButtonText() {\n      if (this.state?.mergeRequest?.autoMergeStrategy === MT_MERGE_STRATEGY) {\n        return s__('mrWidget|Remove from merge train');\n      }\n\n      return s__('mrWidget|Cancel auto-merge');\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!./mr_widget_author.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_author.vue?vue&type=script&lang=js\"","<script>\nimport { GlAvatar, GlLink, GlTooltipDirective } from '@gitlab/ui';\n\nexport default {\n  name: 'MrWidgetAuthor',\n  components: {\n    GlAvatar,\n    GlLink,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    author: {\n      type: Object,\n      required: true,\n    },\n    showAuthorName: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    authorUrl() {\n      return this.author.webUrl || this.author.web_url;\n    },\n    avatarUrl() {\n      return this.author.avatarUrl || this.author.avatar_url || gl.mrWidgetData.defaultAvatarUrl;\n    },\n  },\n};\n</script>\n<template>\n  <gl-link\n    v-gl-tooltip\n    :href=\"authorUrl\"\n    :title=\"showAuthorName ? null : author.name\"\n    class=\"mr-widget-author\"\n  >\n    <gl-avatar :src=\"avatarUrl\" :size=\"16\" :alt=\"author.name\" /><span\n      v-if=\"showAuthorName\"\n      class=\"author gl-ml-2\"\n      >{{ author.name }}</span\n    >\n  </gl-link>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_author.vue?vue&type=template&id=96ccbfe6\"\nimport script from \"./mr_widget_author.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_author.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"mr-widget-author\",attrs:{\"href\":_vm.authorUrl,\"title\":_vm.showAuthorName ? null : _vm.author.name}},[_c('gl-avatar',{attrs:{\"src\":_vm.avatarUrl,\"size\":16,\"alt\":_vm.author.name}}),(_vm.showAuthorName)?_c('span',{staticClass:\"author gl-ml-2\"},[_vm._v(_vm._s(_vm.author.name))]):_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!./mr_widget_auto_merge_enabled.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_auto_merge_enabled.vue?vue&type=script&lang=js\"","<script>\nimport { GlSkeletonLoader, GlSprintf } from '@gitlab/ui';\nimport autoMergeMixin from 'ee_else_ce/vue_merge_request_widget/mixins/auto_merge';\nimport autoMergeEnabledQuery from 'ee_else_ce/vue_merge_request_widget/queries/states/auto_merge_enabled.query.graphql';\nimport { createAlert } from '~/alert';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { fetchPolicies } from '~/lib/graphql';\nimport { __ } from '~/locale';\nimport { AUTO_MERGE_STRATEGIES } from '../../constants';\nimport eventHub from '../../event_hub';\nimport mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';\nimport MrWidgetAuthor from '../mr_widget_author.vue';\nimport StateContainer from '../state_container.vue';\n\nexport default {\n  name: 'MRWidgetAutoMergeEnabled',\n  apollo: {\n    state: {\n      query: autoMergeEnabledQuery,\n      fetchPolicy: fetchPolicies.NETWORK_ONLY,\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      update: (data) => data.project,\n    },\n  },\n  components: {\n    MrWidgetAuthor,\n    GlSkeletonLoader,\n    GlSprintf,\n    StateContainer,\n  },\n  mixins: [autoMergeMixin, mergeRequestQueryVariablesMixin],\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    service: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      state: null,\n      isCancellingAutoMerge: false,\n      isRemovingSourceBranch: false,\n    };\n  },\n  computed: {\n    loading() {\n      return this.$apollo.queries.state.loading || !this.state;\n    },\n    stateRemoveSourceBranch() {\n      if (!this.state.mergeRequest.shouldRemoveSourceBranch) return false;\n\n      return (\n        this.state.mergeRequest.shouldRemoveSourceBranch ||\n        this.state.mergeRequest.forceRemoveSourceBranch\n      );\n    },\n    canRemoveSourceBranch() {\n      const { currentUserId } = this.mr;\n      const mergeUserId = getIdFromGraphQLId(this.state.mergeRequest.mergeUser?.id);\n      const canRemoveSourceBranch = this.state.mergeRequest.userPermissions.removeSourceBranch;\n\n      return (\n        !this.stateRemoveSourceBranch && canRemoveSourceBranch && mergeUserId === currentUserId\n      );\n    },\n    actions() {\n      const actions = [];\n\n      if (this.loading) {\n        return actions;\n      }\n\n      if (this.mr.canCancelAutomaticMerge) {\n        actions.push({\n          text: this.cancelButtonText,\n          loading: this.isCancellingAutoMerge,\n          class: 'js-cancel-auto-merge',\n          testId: 'cancelAutomaticMergeButton',\n          onClick: () => this.cancelAutomaticMerge(),\n        });\n      }\n\n      return actions;\n    },\n  },\n  methods: {\n    cancelAutomaticMerge() {\n      this.isCancellingAutoMerge = true;\n      this.service\n        .cancelAutomaticMerge()\n        .then((res) => res.data)\n        .then(() => {\n          eventHub.$emit('MRWidgetUpdateRequested');\n        })\n        .catch(() => {\n          this.isCancellingAutoMerge = false;\n          createAlert({\n            message: __('Something went wrong. Please try again.'),\n          });\n        });\n    },\n    removeSourceBranch() {\n      const options = {\n        sha: this.mr.sha,\n        auto_merge_strategy: this.state.mergeRequest.autoMergeStrategy,\n        should_remove_source_branch: true,\n      };\n\n      this.isRemovingSourceBranch = true;\n      this.service\n        .merge(options)\n        .then((res) => res.data)\n        .then((data) => {\n          if (AUTO_MERGE_STRATEGIES.includes(data.status)) {\n            eventHub.$emit('MRWidgetUpdateRequested');\n          }\n        })\n        .then(() => {\n          this.$apollo.queries.state.refetch();\n        })\n        .catch(() => {\n          this.isRemovingSourceBranch = false;\n          createAlert({\n            message: __('Something went wrong. Please try again.'),\n          });\n        });\n    },\n  },\n};\n</script>\n<template>\n  <state-container status=\"scheduled\" :is-loading=\"loading\" :actions=\"actions\" is-collapsible>\n    <template #loading>\n      <gl-skeleton-loader :width=\"334\" :height=\"24\">\n        <rect x=\"0\" y=\"0\" width=\"24\" height=\"24\" rx=\"4\" />\n        <rect x=\"32\" y=\"2\" width=\"150\" height=\"20\" rx=\"4\" />\n        <rect x=\"190\" y=\"2\" width=\"144\" height=\"20\" rx=\"4\" />\n      </gl-skeleton-loader>\n    </template>\n    <template v-if=\"!loading\">\n      <h4 class=\"gl-mr-3 gl-grow\" data-testid=\"statusText\">\n        <gl-sprintf :message=\"statusText\" data-testid=\"statusText\">\n          <template #merge_author>\n            <mr-widget-author\n              v-if=\"state.mergeRequest.mergeUser\"\n              :author=\"state.mergeRequest.mergeUser\"\n            />\n          </template>\n        </gl-sprintf>\n      </h4>\n    </template>\n  </state-container>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_auto_merge_enabled.vue?vue&type=template&id=60915766\"\nimport script from \"./mr_widget_auto_merge_enabled.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_auto_merge_enabled.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"scheduled\",\"is-loading\":_vm.loading,\"actions\":_vm.actions,\"is-collapsible\":\"\"},scopedSlots:_vm._u([{key:\"loading\",fn:function(){return [_c('gl-skeleton-loader',{attrs:{\"width\":334,\"height\":24}},[_c('rect',{attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"24\",\"height\":\"24\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"32\",\"y\":\"2\",\"width\":\"150\",\"height\":\"20\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"190\",\"y\":\"2\",\"width\":\"144\",\"height\":\"20\",\"rx\":\"4\"}})])]},proxy:true}])},[_vm._v(\" \"),(!_vm.loading)?[_c('h4',{staticClass:\"gl-mr-3 gl-grow\",attrs:{\"data-testid\":\"statusText\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.statusText,\"data-testid\":\"statusText\"},scopedSlots:_vm._u([{key:\"merge_author\",fn:function(){return [(_vm.state.mergeRequest.mergeUser)?_c('mr-widget-author',{attrs:{\"author\":_vm.state.mergeRequest.mergeUser}}):_vm._e()]},proxy:true}],null,false,2076509082)})],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!./mr_widget_auto_merge_failed.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_auto_merge_failed.vue?vue&type=script&lang=js\"","<script>\nimport { s__ } from '~/locale';\nimport eventHub from '../../event_hub';\nimport mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';\nimport autoMergeFailedQuery from '../../queries/states/auto_merge_failed.query.graphql';\nimport StateContainer from '../state_container.vue';\n\nexport default {\n  name: 'MRWidgetAutoMergeFailed',\n  components: {\n    StateContainer,\n  },\n  mixins: [mergeRequestQueryVariablesMixin],\n  apollo: {\n    mergeError: {\n      query: autoMergeFailedQuery,\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      update: (data) => data.project?.mergeRequest?.mergeError,\n    },\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      mergeError: null,\n      isRefreshing: false,\n    };\n  },\n  computed: {\n    actions() {\n      return [\n        {\n          text: s__('mrWidget|Refresh'),\n          loading: this.isRefreshing,\n          onClick: () => this.refreshWidget(),\n        },\n      ];\n    },\n  },\n  methods: {\n    refreshWidget() {\n      this.isRefreshing = true;\n      eventHub.$emit('MRWidgetUpdateRequested', () => {\n        this.isRefreshing = false;\n      });\n    },\n  },\n};\n</script>\n<template>\n  <state-container status=\"failed\" :actions=\"actions\" is-collapsible>\n    <span class=\"gl-font-bold\">\n      <template v-if=\"mergeError\">{{ mergeError }}</template>\n      {{ s__('mrWidget|This merge request failed to be merged automatically') }}\n    </span>\n  </state-container>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_auto_merge_failed.vue?vue&type=template&id=66f298d2\"\nimport script from \"./mr_widget_auto_merge_failed.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_auto_merge_failed.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"failed\",\"actions\":_vm.actions,\"is-collapsible\":\"\"}},[_c('span',{staticClass:\"gl-font-bold\"},[(_vm.mergeError)?[_vm._v(_vm._s(_vm.mergeError))]:_vm._e(),_vm._v(\"\\n    \"+_vm._s(_vm.s__('mrWidget|This merge request failed to be merged automatically'))+\"\\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!./mr_widget_checking.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_checking.vue?vue&type=script&lang=js\"","<script>\nimport StateContainer from '../state_container.vue';\n\nexport default {\n  name: 'MRWidgetChecking',\n  components: {\n    StateContainer,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n<template>\n  <state-container status=\"loading\" is-collapsible>\n    {{ s__('mrWidget|Checking if merge request can be merged…') }}\n  </state-container>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_checking.vue?vue&type=template&id=7fccb350\"\nimport script from \"./mr_widget_checking.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_checking.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"loading\",\"is-collapsible\":\"\"}},[_vm._v(\"\\n  \"+_vm._s(_vm.s__('mrWidget|Checking if merge request can be merged…'))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { __, s__ } from '~/locale';\n\nexport const MR_WIDGET_PREPARING_ASYNCHRONOUSLY = s__(\n  'mrWidget|Your merge request is almost ready!',\n);\n\nexport const MR_WIDGET_MISSING_BRANCH_WHICH = s__(\n  'mrWidget|The %{type} branch %{codeStart}%{name}%{codeEnd} does not exist.',\n);\nexport const MR_WIDGET_MISSING_BRANCH_RESTORE = s__(\n  'mrWidget|Please restore it or use a different %{type} branch.',\n);\nexport const MR_WIDGET_MISSING_BRANCH_MANUALCLI = s__(\n  'mrWidget|If the %{type} branch exists in your local repository, you can merge this merge request manually using the command line.',\n);\n\nexport const SQUASH_BEFORE_MERGE = {\n  tooltipTitle: __('Required in this project.'),\n  checkboxLabel: __('Squash commits'),\n  helpLabel: __('What is squashing?'),\n};\n\nexport const I18N_SHA_MISMATCH = {\n  warningMessage: s__('mrWidget|%{boldStart}Merge blocked:%{boldEnd} new changes were just added.'),\n  actionButtonLabel: __('Review changes'),\n};\n\nexport const MERGE_TRAIN_BUTTON_TEXT = {\n  failed: __('Start merge train...'),\n  passed: __('Start merge train'),\n};\n\nexport const MR_WIDGET_CLOSED_REOPEN = __('Reopen');\nexport const MR_WIDGET_CLOSED_REOPENING = __('Reopening...');\nexport const MR_WIDGET_CLOSED_RELOADING = __('Refreshing...');\nexport const MR_WIDGET_CLOSED_REOPEN_FAILURE = __(\n  'An error occurred. Unable to reopen this merge request.',\n);\n","<script>\nimport { GlLoadingIcon } from '@gitlab/ui';\n\nimport { MR_WIDGET_PREPARING_ASYNCHRONOUSLY } from '../../i18n';\n\nexport default {\n  name: 'MRWidgetPreparing',\n  i18n: {\n    preparing: MR_WIDGET_PREPARING_ASYNCHRONOUSLY,\n  },\n  components: {\n    GlLoadingIcon,\n  },\n};\n</script>\n<template>\n  <div class=\"gl-flex gl-w-full gl-items-center gl-px-5 gl-py-4\">\n    <gl-loading-icon size=\"sm\" class=\"gl-pr-3\" />\n    <div class=\"gl-flex gl-items-center\">\n      {{ $options.i18n.preparing }}\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!./mr_widget_preparing.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_preparing.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_preparing.vue?vue&type=template&id=54d4a8e3\"\nimport script from \"./mr_widget_preparing.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_preparing.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-items-center gl-px-5 gl-py-4\"},[_c('gl-loading-icon',{staticClass:\"gl-pr-3\",attrs:{\"size\":\"sm\"}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-flex gl-items-center\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.preparing)+\"\\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!./mr_widget_author_time.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_author_time.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport MrWidgetAuthor from './mr_widget_author.vue';\n\nexport default {\n  name: 'MrWidgetAuthorTime',\n  components: {\n    MrWidgetAuthor,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    actionText: {\n      type: String,\n      required: true,\n    },\n    author: {\n      type: Object,\n      required: true,\n    },\n    dateTitle: {\n      type: String,\n      required: true,\n    },\n    dateReadable: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n<template>\n  <h4 class=\"js-mr-widget-author gl-grow\">\n    {{ actionText }}\n    <mr-widget-author :author=\"author\" />\n    <span class=\"sr-only\">{{ dateReadable }} ({{ dateTitle }})</span>\n    <time v-gl-tooltip.hover aria-hidden :title=\"dateTitle\"> {{ dateReadable }} </time>\n  </h4>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_author_time.vue?vue&type=template&id=6fc77724\"\nimport script from \"./mr_widget_author_time.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_author_time.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('h4',{staticClass:\"js-mr-widget-author gl-grow\"},[_vm._v(\"\\n  \"+_vm._s(_vm.actionText)+\"\\n  \"),_c('mr-widget-author',{attrs:{\"author\":_vm.author}}),_vm._v(\" \"),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.dateReadable)+\" (\"+_vm._s(_vm.dateTitle)+\")\")]),_vm._v(\" \"),_c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"aria-hidden\":\"\",\"title\":_vm.dateTitle}},[_vm._v(\" \"+_vm._s(_vm.dateReadable)+\" \")])],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!./mr_widget_closed.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_closed.vue?vue&type=script&lang=js\"","<script>\nimport api from '~/api';\nimport showGlobalToast from '~/vue_shared/plugins/global_toast';\n\nimport MrWidgetAuthorTime from '../mr_widget_author_time.vue';\nimport StateContainer from '../state_container.vue';\n\nimport {\n  MR_WIDGET_CLOSED_REOPEN,\n  MR_WIDGET_CLOSED_REOPENING,\n  MR_WIDGET_CLOSED_RELOADING,\n  MR_WIDGET_CLOSED_REOPEN_FAILURE,\n} from '../../i18n';\n\nexport default {\n  name: 'MRWidgetClosed',\n  components: {\n    MrWidgetAuthorTime,\n    StateContainer,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      isPending: false,\n      isReloading: false,\n    };\n  },\n  computed: {\n    reopenText() {\n      let text = MR_WIDGET_CLOSED_REOPEN;\n\n      if (this.isPending) {\n        text = MR_WIDGET_CLOSED_REOPENING;\n      } else if (this.isReloading) {\n        text = MR_WIDGET_CLOSED_RELOADING;\n      }\n\n      return text;\n    },\n    actions() {\n      if (!window.gon?.current_user_id) {\n        return [];\n      }\n\n      return [\n        {\n          text: this.reopenText,\n          loading: this.isPending || this.isReloading,\n          onClick: this.reopen,\n          testId: 'extension-actions-reopen-button',\n        },\n      ];\n    },\n  },\n  methods: {\n    reopen() {\n      this.isPending = true;\n\n      api\n        .updateMergeRequest(this.mr.targetProjectId, this.mr.iid, { state_event: 'reopen' })\n        .then(() => {\n          this.isReloading = true;\n\n          window.location.reload();\n        })\n        .catch(() => {\n          showGlobalToast(MR_WIDGET_CLOSED_REOPEN_FAILURE);\n        })\n        .finally(() => {\n          this.isPending = false;\n        });\n    },\n  },\n};\n</script>\n<template>\n  <state-container status=\"closed\" :actions=\"actions\" is-collapsible>\n    <mr-widget-author-time\n      :action-text=\"s__('mrWidget|Closed by')\"\n      :author=\"mr.metrics.closedBy\"\n      :date-title=\"mr.metrics.closedAt\"\n      :date-readable=\"mr.metrics.readableClosedAt\"\n    />\n  </state-container>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_closed.vue?vue&type=template&id=14f21dc4\"\nimport script from \"./mr_widget_closed.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_closed.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"closed\",\"actions\":_vm.actions,\"is-collapsible\":\"\"}},[_c('mr-widget-author-time',{attrs:{\"action-text\":_vm.s__('mrWidget|Closed by'),\"author\":_vm.mr.metrics.closedBy,\"date-title\":_vm.mr.metrics.closedAt,\"date-readable\":_vm.mr.metrics.readableClosedAt}})],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!./mr_widget_failed_to_merge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_failed_to_merge.vue?vue&type=script&lang=js\"","<script>\nimport { stripHtml } from '~/lib/utils/text_utility';\nimport { sprintf, s__, n__ } from '~/locale';\nimport eventHub from '../../event_hub';\nimport StateContainer from '../state_container.vue';\n\nexport default {\n  name: 'MRWidgetFailedToMerge',\n\n  components: {\n    StateContainer,\n  },\n\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n\n  data() {\n    return {\n      timer: 10,\n      isRefreshing: false,\n      intervalId: null,\n    };\n  },\n\n  computed: {\n    mergeError() {\n      const mergeError = this.prepareMergeError(this.mr.mergeError);\n\n      return sprintf(\n        s__('mrWidget|%{mergeError}.'),\n        {\n          mergeError,\n        },\n        false,\n      );\n    },\n    timerText() {\n      return n__(\n        'Refreshing in a second to show the updated status...',\n        'Refreshing in %d seconds to show the updated status...',\n        this.timer,\n      );\n    },\n    actions() {\n      return [\n        {\n          text: s__('mrWidget|Refresh now'),\n          onClick: () => this.refresh(),\n        },\n      ];\n    },\n  },\n\n  mounted() {\n    this.intervalId = setInterval(this.updateTimer, 1000);\n  },\n\n  created() {\n    eventHub.$emit('DisablePolling');\n  },\n\n  beforeDestroy() {\n    if (this.intervalId) {\n      clearInterval(this.intervalId);\n    }\n  },\n\n  methods: {\n    refresh() {\n      this.isRefreshing = true;\n      eventHub.$emit('MRWidgetUpdateRequested');\n      eventHub.$emit('EnablePolling');\n    },\n    updateTimer() {\n      this.timer -= 1;\n\n      if (this.timer === 0) {\n        this.refresh();\n      }\n    },\n    prepareMergeError(mergeError) {\n      return mergeError\n        ? stripHtml(mergeError, ' ')\n            .replace(/(\\.$|\\s+)/g, ' ')\n            .trim()\n        : '';\n    },\n  },\n};\n</script>\n<template>\n  <state-container\n    v-if=\"isRefreshing\"\n    status=\"loading\"\n    is-collapsible\n    :collapsed=\"mr.mergeDetailsCollapsed\"\n    @toggle=\"() => mr.toggleMergeDetails()\"\n  >\n    <span class=\"gl-font-bold\">\n      {{ s__('mrWidget|Refreshing now') }}\n    </span>\n  </state-container>\n  <state-container\n    v-else\n    status=\"failed\"\n    :actions=\"actions\"\n    is-collapsible\n    :collapsed=\"mr.mergeDetailsCollapsed\"\n    @toggle=\"() => mr.toggleMergeDetails()\"\n  >\n    <span v-if=\"mr.mergeError\" class=\"has-error-message gl-font-bold\" data-testid=\"merge-error\">\n      {{ mergeError }}\n    </span>\n    <span v-else class=\"gl-font-bold\"> {{ s__('mrWidget|Merge failed.') }} </span>\n    <span :class=\"{ 'has-custom-error': mr.mergeError }\"> {{ timerText }} </span>\n  </state-container>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_failed_to_merge.vue?vue&type=template&id=43a07110\"\nimport script from \"./mr_widget_failed_to_merge.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_failed_to_merge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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.isRefreshing)?_c('state-container',{attrs:{\"status\":\"loading\",\"is-collapsible\":\"\",\"collapsed\":_vm.mr.mergeDetailsCollapsed},on:{\"toggle\":() => _vm.mr.toggleMergeDetails()}},[_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(\"\\n    \"+_vm._s(_vm.s__('mrWidget|Refreshing now'))+\"\\n  \")])]):_c('state-container',{attrs:{\"status\":\"failed\",\"actions\":_vm.actions,\"is-collapsible\":\"\",\"collapsed\":_vm.mr.mergeDetailsCollapsed},on:{\"toggle\":() => _vm.mr.toggleMergeDetails()}},[(_vm.mr.mergeError)?_c('span',{staticClass:\"has-error-message gl-font-bold\",attrs:{\"data-testid\":\"merge-error\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.mergeError)+\"\\n  \")]):_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(\" \"+_vm._s(_vm.s__('mrWidget|Merge failed.'))+\" \")]),_vm._v(\" \"),_c('span',{class:{ 'has-custom-error': _vm.mr.mergeError }},[_vm._v(\" \"+_vm._s(_vm.timerText)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_merged.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_merged.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport api from '~/api';\nimport { createAlert } from '~/alert';\nimport { s__, __ } from '~/locale';\nimport { OPEN_REVERT_MODAL, OPEN_CHERRY_PICK_MODAL } from '~/projects/commit/constants';\nimport modalEventHub from '~/projects/commit/event_hub';\nimport eventHub from '../../event_hub';\nimport MrWidgetAuthorTime from '../mr_widget_author_time.vue';\nimport StateContainer from '../state_container.vue';\n\nexport default {\n  name: 'MRWidgetMerged',\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    MrWidgetAuthorTime,\n    StateContainer,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    service: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      isMakingRequest: false,\n    };\n  },\n  computed: {\n    shouldShowRemoveSourceBranch() {\n      const { sourceBranchRemoved, isRemovingSourceBranch, canRemoveSourceBranch } = this.mr;\n\n      return (\n        !sourceBranchRemoved &&\n        canRemoveSourceBranch &&\n        !this.isMakingRequest &&\n        !isRemovingSourceBranch\n      );\n    },\n    shouldShowSourceBranchRemoving() {\n      const { sourceBranchRemoved, isRemovingSourceBranch } = this.mr;\n      return !sourceBranchRemoved && (isRemovingSourceBranch || this.isMakingRequest);\n    },\n    revertTitle() {\n      return s__('mrWidget|Revert this merge request in a new merge request');\n    },\n    cherryPickTitle() {\n      return s__('mrWidget|Cherry-pick this merge request in a new merge request');\n    },\n    revertLabel() {\n      return s__('mrWidget|Revert');\n    },\n    cherryPickLabel() {\n      return s__('mrWidget|Cherry-pick');\n    },\n    actions() {\n      const actions = [];\n\n      if (this.mr.canRevertInCurrentMR) {\n        actions.push({\n          text: this.revertLabel,\n          tooltipText: this.revertTitle,\n          testId: 'revert-button',\n          onClick: () => this.openRevertModal(),\n        });\n      } else if (this.mr.revertInForkPath) {\n        actions.push({\n          text: this.revertLabel,\n          tooltipText: this.revertTitle,\n          href: this.mr.revertInForkPath,\n          testId: 'revert-button',\n          dataMethod: 'post',\n        });\n      }\n\n      if (this.mr.canCherryPickInCurrentMR) {\n        actions.push({\n          text: this.cherryPickLabel,\n          tooltipText: this.cherryPickTitle,\n          testId: 'cherry-pick-button',\n          onClick: () => this.openCherryPickModal(),\n        });\n      } else if (this.mr.cherryPickInForkPath) {\n        actions.push({\n          text: this.cherryPickLabel,\n          tooltipText: this.cherryPickTitle,\n          href: this.mr.cherryPickInForkPath,\n          testId: 'cherry-pick-button',\n          dataMethod: 'post',\n        });\n      }\n\n      if (this.shouldShowRemoveSourceBranch) {\n        actions.push({\n          text: s__('mrWidget|Delete source branch'),\n          class: 'js-remove-branch-button',\n          onClick: () => this.removeSourceBranch(),\n        });\n      }\n\n      return actions;\n    },\n  },\n  mounted() {\n    document.dispatchEvent(new CustomEvent('merged:UpdateActions'));\n  },\n  methods: {\n    removeSourceBranch() {\n      this.isMakingRequest = true;\n\n      api.trackRedisHllUserEvent('i_code_review_post_merge_delete_branch');\n\n      this.service\n        .removeSourceBranch()\n        .then((res) => res.data)\n        .then((data) => {\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          if (data.message === 'Branch was deleted') {\n            eventHub.$emit('MRWidgetUpdateRequested', () => {\n              this.isMakingRequest = false;\n            });\n          }\n        })\n        .catch(() => {\n          this.isMakingRequest = false;\n          createAlert({\n            message: __('Something went wrong. Please try again.'),\n          });\n        });\n    },\n    openRevertModal() {\n      api.trackRedisHllUserEvent('i_code_review_post_merge_click_revert');\n\n      modalEventHub.$emit(OPEN_REVERT_MODAL);\n    },\n    openCherryPickModal() {\n      api.trackRedisHllUserEvent('i_code_review_post_merge_click_cherry_pick');\n\n      modalEventHub.$emit(OPEN_CHERRY_PICK_MODAL);\n    },\n  },\n};\n</script>\n<template>\n  <state-container :actions=\"actions\" status=\"merged\" is-collapsible>\n    <mr-widget-author-time\n      :action-text=\"s__('mrWidget|Merged by')\"\n      :author=\"mr.metrics.mergedBy\"\n      :date-title=\"mr.metrics.mergedAt\"\n      :date-readable=\"mr.metrics.readableMergedAt\"\n    />\n  </state-container>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_merged.vue?vue&type=template&id=6f518d7a\"\nimport script from \"./mr_widget_merged.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_merged.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"actions\":_vm.actions,\"status\":\"merged\",\"is-collapsible\":\"\"}},[_c('mr-widget-author-time',{attrs:{\"action-text\":_vm.s__('mrWidget|Merged by'),\"author\":_vm.mr.metrics.mergedBy,\"date-title\":_vm.mr.metrics.mergedAt,\"date-readable\":_vm.mr.metrics.readableMergedAt}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { STATUS_MERGED } from '~/issues/constants';\nimport simplePoll from '~/lib/utils/simple_poll';\nimport MergeRequest from '~/merge_request';\nimport BoldText from '~/vue_merge_request_widget/components/bold_text.vue';\nimport { fetchUserCounts } from '~/super_sidebar/user_counts_fetch';\nimport eventHub from '../../event_hub';\nimport { MERGE_ACTIVE_STATUS_PHRASES, STATE_MACHINE } from '../../constants';\nimport StatusIcon from '../mr_widget_status_icon.vue';\n\nconst { transitions } = STATE_MACHINE;\nconst { MERGE_FAILURE } = transitions;\n\nexport default {\n  name: 'MRWidgetMerging',\n  components: {\n    BoldText,\n    StatusIcon,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    service: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    const statusCount = MERGE_ACTIVE_STATUS_PHRASES.length;\n\n    return {\n      mergeStatus: MERGE_ACTIVE_STATUS_PHRASES[Math.floor(Math.random() * statusCount)],\n    };\n  },\n  mounted() {\n    this.initiateMergePolling();\n  },\n  methods: {\n    initiateMergePolling() {\n      simplePoll(\n        (continuePolling, stopPolling) => {\n          this.handleMergePolling(continuePolling, stopPolling);\n        },\n        { timeout: 0 },\n      );\n    },\n    handleMergePolling(continuePolling, stopPolling) {\n      this.service\n        .poll()\n        .then((res) => res.data)\n        .then((data) => {\n          if (data.state === STATUS_MERGED) {\n            // If state is merged we should update the widget and stop the polling\n            eventHub.$emit('MRWidgetUpdateRequested');\n            eventHub.$emit('FetchActionsContent');\n            MergeRequest.decreaseCounter();\n            stopPolling();\n\n            fetchUserCounts();\n\n            // If user checked remove source branch and we didn't remove the branch yet\n            // we should start another polling for source branch remove process\n            if (this.removeSourceBranch && data.source_branch_exists) {\n              this.initiateRemoveSourceBranchPolling();\n            }\n          } else if (data.merge_error) {\n            eventHub.$emit('FailedToMerge', data.merge_error);\n            this.mr.transitionStateMachine({ transition: MERGE_FAILURE });\n            stopPolling();\n          } else {\n            // MR is not merged yet, continue polling until the state becomes 'merged'\n            continuePolling();\n          }\n        })\n        .catch(() => {\n          this.mr.transitionStateMachine({ transition: MERGE_FAILURE });\n          stopPolling();\n        });\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"mr-widget-body mr-state-locked media\">\n    <status-icon status=\"loading\" />\n    <div class=\"media-body\" data-testid=\"merging-state\">\n      <bold-text :message=\"mergeStatus.message\" />\n      <gl-emoji :data-name=\"mergeStatus.emoji\" />\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!./mr_widget_merging.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_merging.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_merging.vue?vue&type=template&id=5f0012c0\"\nimport script from \"./mr_widget_merging.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_merging.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-widget-body mr-state-locked media\"},[_c('status-icon',{attrs:{\"status\":\"loading\"}}),_vm._v(\" \"),_c('div',{staticClass:\"media-body\",attrs:{\"data-testid\":\"merging-state\"}},[_c('bold-text',{attrs:{\"message\":_vm.mergeStatus.message}}),_vm._v(\" \"),_c('gl-emoji',{attrs:{\"data-name\":_vm.mergeStatus.emoji}})],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!./mr_widget_missing_branch.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_missing_branch.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlSprintf } from '@gitlab/ui';\nimport { sprintf } from '~/locale';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';\nimport missingBranchQuery from '../../queries/states/missing_branch.query.graphql';\nimport {\n  MR_WIDGET_MISSING_BRANCH_WHICH,\n  MR_WIDGET_MISSING_BRANCH_RESTORE,\n  MR_WIDGET_MISSING_BRANCH_MANUALCLI,\n} from '../../i18n';\nimport StatusIcon from '../mr_widget_status_icon.vue';\n\nexport default {\n  name: 'MRWidgetMissingBranch',\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlSprintf,\n    StatusIcon,\n    HelpIcon,\n  },\n  mixins: [mergeRequestQueryVariablesMixin],\n  apollo: {\n    state: {\n      query: missingBranchQuery,\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      update: (data) => data.project.mergeRequest,\n    },\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return { state: {} };\n  },\n  computed: {\n    type() {\n      return this.mr.sourceBranchRemoved ? 'source' : 'target';\n    },\n    name() {\n      return this.type === 'source' ? this.mr.sourceBranch : this.mr.targetBranch;\n    },\n    warning() {\n      return sprintf(MR_WIDGET_MISSING_BRANCH_WHICH, { type: this.type, name: this.name });\n    },\n    restore() {\n      return sprintf(MR_WIDGET_MISSING_BRANCH_RESTORE, { type: this.type });\n    },\n    message() {\n      return sprintf(MR_WIDGET_MISSING_BRANCH_MANUALCLI, { type: this.type });\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"mr-widget-body media\">\n    <status-icon :show-disabled-button=\"true\" status=\"failed\" />\n\n    <div class=\"media-body\">\n      <span class=\"js-branch-text\" data-testid=\"widget-content\">\n        <span class=\"gl-font-bold\">\n          <gl-sprintf :message=\"warning\">\n            <template #code=\"{ content }\">\n              <code>{{ content }}</code>\n            </template>\n          </gl-sprintf>\n        </span>\n        {{ restore }}\n        <help-icon v-gl-tooltip :title=\"message\" :aria-label=\"message\" class=\"gl-cursor-pointer\" />\n      </span>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_missing_branch.vue?vue&type=template&id=2a044e14\"\nimport script from \"./mr_widget_missing_branch.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_missing_branch.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-widget-body media\"},[_c('status-icon',{attrs:{\"show-disabled-button\":true,\"status\":\"failed\"}}),_vm._v(\" \"),_c('div',{staticClass:\"media-body\"},[_c('span',{staticClass:\"js-branch-text\",attrs:{\"data-testid\":\"widget-content\"}},[_c('span',{staticClass:\"gl-font-bold\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.warning},scopedSlots:_vm._u([{key:\"code\",fn:function({ content }){return [_c('code',[_vm._v(_vm._s(content))])]}}])})],1),_vm._v(\"\\n      \"+_vm._s(_vm.restore)+\"\\n      \"),_c('help-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-cursor-pointer\",attrs:{\"title\":_vm.message,\"aria-label\":_vm.message}})],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!./nothing_to_merge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./nothing_to_merge.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlLink } from '@gitlab/ui';\nimport { STATUS_EMPTY } from '~/issues/constants';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport StatusIcon from '../mr_widget_status_icon.vue';\n\nexport default {\n  name: 'MRWidgetNothingToMerge',\n  components: {\n    GlSprintf,\n    GlLink,\n    StatusIcon,\n  },\n  computed: {\n    statusEmpty() {\n      return STATUS_EMPTY;\n    },\n  },\n  ciHelpPage: helpPagePath('ci/quick_start/index.html'),\n};\n</script>\n\n<template>\n  <div class=\"mr-widget-body media\">\n    <status-icon :status=\"statusEmpty\" />\n    <div>\n      <p class=\"media-body gl-mb-1 gl-mt-1 gl-font-bold !gl-text-default\">\n        {{ s__('mrWidgetNothingToMerge|Merge request contains no changes') }}\n      </p>\n      <p class=\"!gl-m-0 gl-text-subtle\" data-testid=\"nothing-to-merge-body\">\n        <gl-sprintf\n          :message=\"\n            s__(\n              'mrWidgetNothingToMerge|Use merge requests to propose changes to your project and discuss them with your team. To make changes, use the %{boldStart}Code%{boldEnd} dropdown list above, then test them with %{linkStart}CI/CD%{linkEnd} before merging.',\n            )\n          \"\n        >\n          <template #bold=\"{ content }\">\n            <b>{{ content }}</b>\n          </template>\n          <template #link=\"{ content }\">\n            <gl-link :href=\"$options.ciHelpPage\" target=\"_blank\">{{ content }}</gl-link>\n          </template>\n        </gl-sprintf>\n      </p>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./nothing_to_merge.vue?vue&type=template&id=8efac998\"\nimport script from \"./nothing_to_merge.vue?vue&type=script&lang=js\"\nexport * from \"./nothing_to_merge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-widget-body media\"},[_c('status-icon',{attrs:{\"status\":_vm.statusEmpty}}),_vm._v(\" \"),_c('div',[_c('p',{staticClass:\"media-body gl-mb-1 gl-mt-1 gl-font-bold !gl-text-default\"},[_vm._v(\"\\n      \"+_vm._s(_vm.s__('mrWidgetNothingToMerge|Merge request contains no changes'))+\"\\n    \")]),_vm._v(\" \"),_c('p',{staticClass:\"!gl-m-0 gl-text-subtle\",attrs:{\"data-testid\":\"nothing-to-merge-body\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.s__(\n            'mrWidgetNothingToMerge|Use merge requests to propose changes to your project and discuss them with your team. To make changes, use the %{boldStart}Code%{boldEnd} dropdown list above, then test them with %{linkStart}CI/CD%{linkEnd} before merging.',\n          )},scopedSlots:_vm._u([{key:\"bold\",fn:function({ content }){return [_c('b',[_vm._v(_vm._s(content))])]}},{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.ciHelpPage,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}])})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { helpPagePath } from '~/helpers/help_page_helper';\nimport { __ } from '~/locale';\n\nexport const MERGE_DISABLED_TEXT = __('You can only merge once the items above are resolved.');\nexport const MERGE_DISABLED_SKIPPED_PIPELINE_TEXT = __(\n  \"Merge blocked: pipeline must succeed. It's waiting for a manual job to continue.\",\n);\nexport const PIPELINE_MUST_SUCCEED_CONFLICT_TEXT = __(\n  'A CI/CD pipeline must run and be successful before merge.',\n);\nexport const PIPELINE_SKIPPED_STATUS = 'SKIPPED';\n\nconst MERGE_WHEN_CHECKS_PASS_HELP = helpPagePath('user/project/merge_requests/auto_merge');\n\nexport default {\n  computed: {\n    isMergeButtonDisabled() {\n      const { commitMessage } = this;\n      return Boolean(\n        !commitMessage.length ||\n          !this.shouldShowMergeControls ||\n          this.isMakingRequest ||\n          this.mr.preventMerge,\n      );\n    },\n    pipelineMustSucceedConflictText() {\n      return PIPELINE_MUST_SUCCEED_CONFLICT_TEXT;\n    },\n    autoMergeText() {\n      return __('Set to auto-merge');\n    },\n    autoMergeHelperText() {\n      if (this.isPreferredAutoMergeStrategyMWPC) {\n        return __('Merge when all merge checks pass');\n      }\n\n      return __('Merge when pipeline succeeds');\n    },\n    autoMergePopoverSettings() {\n      if (this.isPreferredAutoMergeStrategyMWPC) {\n        return {\n          helpLink: MERGE_WHEN_CHECKS_PASS_HELP,\n          bodyText: __(\n            'When all the merge checks for this merge request pass, it will %{linkStart}automatically merge%{linkEnd}.',\n          ),\n          title: __('Merge when checks pass'),\n        };\n      }\n\n      return {\n        helpLink: helpPagePath('user/project/merge_requests/auto_merge'),\n        bodyText: __(\n          'When the pipeline for this merge request succeeds, it will %{linkStart}automatically merge%{linkEnd}.',\n        ),\n        title: __('Merge when pipeline succeeds'),\n      };\n    },\n    shouldDisplayMergeImmediatelyDropdownOptions() {\n      return false;\n    },\n    shouldShowMergeImmediatelyDropdown() {\n      return this.isAutoMergeAvailable && this.isMergeAllowed;\n    },\n    isMergeImmediatelyDangerous() {\n      return false;\n    },\n    shouldRenderMergeTrainHelperIcon() {\n      return false;\n    },\n    pipelineId() {\n      return this.pipeline.id;\n    },\n    showFailedPipelineModalMergeTrain() {\n      return false;\n    },\n  },\n  methods: {\n    onStartMergeTrainConfirmation() {\n      return false;\n    },\n  },\n};\n","import { isNumber, isString } from 'lodash';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { __, s__ } from '~/locale';\nimport {\n  MTWPS_MERGE_STRATEGY,\n  MT_MERGE_STRATEGY,\n  PIPELINE_FAILED_STATE,\n  MTWCP_MERGE_STRATEGY,\n} from '~/vue_merge_request_widget/constants';\nimport CEReadyToMergeMixin from '~/vue_merge_request_widget/mixins/ready_to_merge';\n\nexport const MERGE_DISABLED_TEXT_UNAPPROVED = s__(\n  'mrWidget|Merge blocked: all required approvals must be given.',\n);\nexport const PIPELINE_MUST_SUCCEED_CONFLICT_TEXT = __(\n  'A CI/CD pipeline must run and be successful before merge.',\n);\nexport const MERGE_DISABLED_DEPENDENCIES_TEXT = __(\n  'Merge blocked: Merge all open dependent merge requests, and remove all closed dependencies.',\n);\nconst MERGE_TRAINS_HELP = helpPagePath('ci/pipelines/merge_trains.html');\n\nexport default {\n  computed: {\n    isMergeButtonDisabled() {\n      const { commitMessage } = this;\n      return Boolean(\n        !commitMessage.length ||\n          !this.shouldShowMergeControls ||\n          this.isMakingRequest ||\n          this.mr.preventMerge,\n      );\n    },\n    pipelineMustSucceedConflictText() {\n      return PIPELINE_MUST_SUCCEED_CONFLICT_TEXT;\n    },\n    autoMergeText() {\n      if (this.preferredAutoMergeStrategy === MT_MERGE_STRATEGY) {\n        return __('Merge');\n      }\n\n      return __('Set to auto-merge');\n    },\n    autoMergeHelperText() {\n      if (this.preferredAutoMergeStrategy === MTWCP_MERGE_STRATEGY) {\n        return __('Add to merge train when all merge checks pass');\n      }\n      if (this.preferredAutoMergeStrategy === MTWPS_MERGE_STRATEGY) {\n        return __('Add to merge train when pipeline succeeds');\n      }\n      if (this.preferredAutoMergeStrategy === MT_MERGE_STRATEGY) {\n        return __('Add to merge train');\n      }\n\n      return CEReadyToMergeMixin.computed.autoMergeHelperText.call(this);\n    },\n    autoMergePopoverSettings() {\n      if (\n        this.preferredAutoMergeStrategy === MT_MERGE_STRATEGY ||\n        this.preferredAutoMergeStrategy === MTWPS_MERGE_STRATEGY ||\n        this.preferredAutoMergeStrategy === MTWCP_MERGE_STRATEGY\n      ) {\n        return {\n          helpLink: MERGE_TRAINS_HELP,\n          bodyText: __(\n            'A %{linkStart}merge train%{linkEnd} is a queued list of merge requests, each waiting to be merged into the target branch.',\n          ),\n          title: __('Merge trains'),\n        };\n      }\n\n      return CEReadyToMergeMixin.computed.autoMergePopoverSettings.call(this);\n    },\n    pipelineId() {\n      return getIdFromGraphQLId(this.pipeline.id);\n    },\n    shouldRenderMergeTrainHelperIcon() {\n      return (\n        this.pipeline &&\n        isNumber(getIdFromGraphQLId(this.pipeline.id)) &&\n        isString(this.pipeline.path) &&\n        this.preferredAutoMergeStrategy === MTWPS_MERGE_STRATEGY &&\n        !this.state.autoMergeEnabled\n      );\n    },\n    shouldShowMergeImmediatelyDropdown() {\n      if (!this.isAutoMergeAvailable || !this.isMergeAllowed) {\n        return false;\n      }\n\n      if (\n        this.preferredAutoMergeStrategy === MT_MERGE_STRATEGY ||\n        this.preferredAutoMergeStrategy === MTWPS_MERGE_STRATEGY ||\n        this.preferredAutoMergeStrategy === MTWCP_MERGE_STRATEGY\n      ) {\n        return !this.mr.ffOnlyEnabled || this.mr.ffMergePossible;\n      }\n\n      return true;\n    },\n    shouldDisplayMergeImmediatelyDropdownOptions() {\n      return [MT_MERGE_STRATEGY, MTWPS_MERGE_STRATEGY, MTWCP_MERGE_STRATEGY].includes(\n        this.preferredAutoMergeStrategy,\n      );\n    },\n    isMergeImmediatelyDangerous() {\n      return [MT_MERGE_STRATEGY, MTWPS_MERGE_STRATEGY, MTWCP_MERGE_STRATEGY].includes(\n        this.preferredAutoMergeStrategy,\n      );\n    },\n    showFailedPipelineModalMergeTrain() {\n      const pipelineFailed = this.status === PIPELINE_FAILED_STATE || this.isPipelineFailed;\n      const mergeStrateyMergeTrain = this.preferredAutoMergeStrategy === MT_MERGE_STRATEGY;\n\n      return pipelineFailed && mergeStrateyMergeTrain;\n    },\n  },\n  methods: {\n    onStartMergeTrainConfirmation() {\n      this.handleMergeButtonClick(this.isAutoMergeAvailable, false, true);\n    },\n  },\n};\n","<script>\nimport { GlSprintf, GlLink } from '@gitlab/ui';\nimport { escape } from 'lodash';\nimport { STATUS_CLOSED, STATUS_MERGED } from '~/issues/constants';\nimport { n__, s__, sprintf } from '~/locale';\n\nconst mergeCommitCount = s__('mrWidgetCommitsAdded|%{strongStart}1%{strongEnd} merge commit');\n\nexport default {\n  components: {\n    GlSprintf,\n    GlLink,\n  },\n  props: {\n    state: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isSquashEnabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isFastForwardEnabled: {\n      type: Boolean,\n      required: true,\n    },\n    commitsCount: {\n      type: Number,\n      required: false,\n      default: 0,\n    },\n    targetBranch: {\n      type: String,\n      required: true,\n    },\n    mergeCommitSha: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    mergeCommitPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  computed: {\n    isMerged() {\n      return this.state === STATUS_MERGED;\n    },\n    targetBranchEscaped() {\n      return escape(this.targetBranch);\n    },\n    commitsCountMessage() {\n      const count = this.isSquashEnabled ? 1 : this.commitsCount;\n\n      return sprintf(\n        n__(\n          '%{strongStart}%{count}%{strongEnd} commit',\n          '%{strongStart}%{count}%{strongEnd} commits',\n          count,\n        ),\n        { count },\n      );\n    },\n    message() {\n      if (this.state === STATUS_CLOSED) {\n        return s__('mrWidgetCommitsAdded|The changes were not merged into %{targetBranch}.');\n      }\n      if (this.isMerged) {\n        return s__(\n          'mrWidgetCommitsAdded|Changes merged into %{targetBranch} with %{mergeCommitSha}%{squashedCommits}.',\n        );\n      }\n\n      return this.isFastForwardEnabled\n        ? s__('mrWidgetCommitsAdded|%{commitCount} will be added to %{targetBranch}.')\n        : s__(\n            'mrWidgetCommitsAdded|%{commitCount} and %{mergeCommitCount} will be added to %{targetBranch}%{squashedCommits}.',\n          );\n    },\n    squashCommitMessage() {\n      if (this.isMerged) {\n        return s__('mergedCommitsAdded| (commits were squashed)');\n      }\n\n      return sprintf(\n        n__(\n          ' (squashes %{strongStart}%{count}%{strongEnd} commit)',\n          ' (squashes %{strongStart}%{count}%{strongEnd} commits)',\n          this.commitsCount,\n        ),\n        { count: this.commitsCount },\n      );\n    },\n  },\n  mergeCommitCount,\n};\n</script>\n\n<template>\n  <span>\n    <gl-sprintf :message=\"message\">\n      <template #commitCount>\n        <gl-sprintf :message=\"commitsCountMessage\">\n          <template #strong=\"{ content }\">\n            <span class=\"gl-font-bold\">{{ content }}</span>\n          </template>\n        </gl-sprintf>\n      </template>\n      <template #mergeCommitCount>\n        <gl-sprintf :message=\"$options.mergeCommitCount\">\n          <template #strong=\"{ content }\">\n            <span class=\"gl-font-bold\">{{ content }}</span>\n          </template>\n        </gl-sprintf>\n      </template>\n      <template #targetBranch>\n        <span class=\"label-branch gl-font-bold\">{{ targetBranchEscaped }}</span>\n      </template>\n      <template #squashedCommits>\n        <template v-if=\"isSquashEnabled\">\n          <gl-sprintf :message=\"squashCommitMessage\">\n            <template #strong=\"{ content }\">\n              <span class=\"gl-font-bold\">{{ content }}</span>\n            </template>\n          </gl-sprintf>\n        </template>\n      </template>\n      <template #mergeCommitSha>\n        <gl-link :href=\"mergeCommitPath\" class=\"label-branch\" data-testid=\"merge-commit-sha\">{{\n          mergeCommitSha\n        }}</gl-link>\n      </template>\n    </gl-sprintf>\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!./added_commit_message.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./added_commit_message.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./added_commit_message.vue?vue&type=template&id=13c1a54c\"\nimport script from \"./added_commit_message.vue?vue&type=script&lang=js\"\nexport * from \"./added_commit_message.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-sprintf',{attrs:{\"message\":_vm.message},scopedSlots:_vm._u([{key:\"commitCount\",fn:function(){return [_c('gl-sprintf',{attrs:{\"message\":_vm.commitsCountMessage},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(content))])]}}])})]},proxy:true},{key:\"mergeCommitCount\",fn:function(){return [_c('gl-sprintf',{attrs:{\"message\":_vm.$options.mergeCommitCount},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(content))])]}}])})]},proxy:true},{key:\"targetBranch\",fn:function(){return [_c('span',{staticClass:\"label-branch gl-font-bold\"},[_vm._v(_vm._s(_vm.targetBranchEscaped))])]},proxy:true},{key:\"squashedCommits\",fn:function(){return [(_vm.isSquashEnabled)?[_c('gl-sprintf',{attrs:{\"message\":_vm.squashCommitMessage},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(content))])]}}],null,false,3587834121)})]:_vm._e()]},proxy:true},{key:\"mergeCommitSha\",fn:function(){return [_c('gl-link',{staticClass:\"label-branch\",attrs:{\"href\":_vm.mergeCommitPath,\"data-testid\":\"merge-commit-sha\"}},[_vm._v(_vm._s(_vm.mergeCommitSha))])]},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!./mr_widget_related_links.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_related_links.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink } from '@gitlab/ui';\nimport { STATUS_CLOSED, STATUS_MERGED } from '~/issues/constants';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { s__, n__ } from '~/locale';\n\nexport default {\n  name: 'MRWidgetRelatedLinks',\n  directives: {\n    SafeHtml,\n  },\n  components: {\n    GlLink,\n  },\n  props: {\n    relatedLinks: {\n      type: Object,\n      required: true,\n      default: () => ({}),\n    },\n    state: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showAssignToMe: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n  },\n  computed: {\n    closesText() {\n      if (this.state === STATUS_MERGED) {\n        return s__('mrWidget|Closed');\n      }\n      if (this.state === STATUS_CLOSED) {\n        return s__('mrWidget|Did not close');\n      }\n\n      return n__('mrWidget|Closes issue', 'mrWidget|Closes issues', this.relatedLinks.closingCount);\n    },\n    assignIssueText() {\n      if (this.relatedLinks.unassignedCount > 1) {\n        return s__('mrWidget|Assign yourself to these issues');\n      }\n      return s__('mrWidget|Assign yourself to this issue');\n    },\n    shouldShowAssignToMeLink() {\n      return (\n        this.relatedLinks.unassignedCount && this.relatedLinks.assignToMe && this.showAssignToMe\n      );\n    },\n  },\n};\n</script>\n<template>\n  <section>\n    <p v-if=\"relatedLinks.closing\" class=\"gl-m-0 gl-inline !gl-text-sm\">\n      {{ closesText }}\n      <span v-safe-html=\"relatedLinks.closing\"></span>\n    </p>\n    <p v-if=\"relatedLinks.mentioned\" class=\"gl-m-0 gl-inline !gl-text-sm\">\n      <span v-if=\"relatedLinks.closing\">&middot;</span>\n      {{ n__('mrWidget|Mentions issue', 'mrWidget|Mentions issues', relatedLinks.mentionedCount) }}\n      <span v-safe-html=\"relatedLinks.mentioned\"></span>\n    </p>\n    <p v-if=\"shouldShowAssignToMeLink\" class=\"gl-m-0 gl-inline !gl-text-sm\">\n      <span>\n        <gl-link rel=\"nofollow\" data-method=\"post\" :href=\"relatedLinks.assignToMe\">{{\n          assignIssueText\n        }}</gl-link>\n      </span>\n    </p>\n  </section>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_related_links.vue?vue&type=template&id=b3a6c6ea\"\nimport script from \"./mr_widget_related_links.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_related_links.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('section',[(_vm.relatedLinks.closing)?_c('p',{staticClass:\"gl-m-0 gl-inline !gl-text-sm\"},[_vm._v(\"\\n    \"+_vm._s(_vm.closesText)+\"\\n    \"),_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.relatedLinks.closing),expression:\"relatedLinks.closing\"}]})]):_vm._e(),_vm._v(\" \"),(_vm.relatedLinks.mentioned)?_c('p',{staticClass:\"gl-m-0 gl-inline !gl-text-sm\"},[(_vm.relatedLinks.closing)?_c('span',[_vm._v(\"·\")]):_vm._e(),_vm._v(\"\\n    \"+_vm._s(_vm.n__('mrWidget|Mentions issue', 'mrWidget|Mentions issues', _vm.relatedLinks.mentionedCount))+\"\\n    \"),_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.relatedLinks.mentioned),expression:\"relatedLinks.mentioned\"}]})]):_vm._e(),_vm._v(\" \"),(_vm.shouldShowAssignToMeLink)?_c('p',{staticClass:\"gl-m-0 gl-inline !gl-text-sm\"},[_c('span',[_c('gl-link',{attrs:{\"rel\":\"nofollow\",\"data-method\":\"post\",\"href\":_vm.relatedLinks.assignToMe}},[_vm._v(_vm._s(_vm.assignIssueText))])],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_edit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_edit.vue?vue&type=script&lang=js\"","<script>\nimport { GlFormTextarea } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlFormTextarea,\n  },\n  model: {\n    prop: 'value',\n    event: 'input',\n  },\n  props: {\n    value: {\n      type: String,\n      required: true,\n    },\n    label: {\n      type: String,\n      required: true,\n    },\n    inputId: {\n      type: String,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <li>\n    <div class=\"commit-message-editor\">\n      <div class=\"justify-content-between gl-mb-3 gl-flex gl-flex-wrap gl-items-center\">\n        <label class=\"col-form-label\" :for=\"inputId\">\n          <strong>{{ label }}</strong>\n        </label>\n        <slot name=\"header\"></slot>\n      </div>\n      <gl-form-textarea\n        :id=\"inputId\"\n        :value=\"value\"\n        class=\"form-control js-gfm-input commit-message-edit gl-mb-3 !gl-font-monospace\"\n        dir=\"auto\"\n        required=\"required\"\n        rows=\"7\"\n        max-rows=\"32\"\n        no-resize\n        @input=\"(val) => $emit('input', val)\"\n      />\n    </div>\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./commit_edit.vue?vue&type=template&id=ba709e08\"\nimport script from \"./commit_edit.vue?vue&type=script&lang=js\"\nexport * from \"./commit_edit.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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',[_c('div',{staticClass:\"commit-message-editor\"},[_c('div',{staticClass:\"justify-content-between gl-mb-3 gl-flex gl-flex-wrap gl-items-center\"},[_c('label',{staticClass:\"col-form-label\",attrs:{\"for\":_vm.inputId}},[_c('strong',[_vm._v(_vm._s(_vm.label))])]),_vm._v(\" \"),_vm._t(\"header\")],2),_vm._v(\" \"),_c('gl-form-textarea',{staticClass:\"form-control js-gfm-input commit-message-edit gl-mb-3 !gl-font-monospace\",attrs:{\"id\":_vm.inputId,\"value\":_vm.value,\"dir\":\"auto\",\"required\":\"required\",\"rows\":\"7\",\"max-rows\":\"32\",\"no-resize\":\"\"},on:{\"input\":(val) => _vm.$emit('input', val)}})],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!./commit_message_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!./commit_message_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdown, GlButtonGroup } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlButtonGroup,\n    GlDisclosureDropdown,\n    AiCommitMessage: () =>\n      import('ee_component/vue_merge_request_widget/components/ai_commit_message.vue'),\n  },\n  props: {\n    commits: {\n      type: Array,\n      required: true,\n      default: () => [],\n    },\n    aiCommitMessageEnabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    mrId: {\n      type: Number,\n      required: false,\n      default: null,\n    },\n  },\n  computed: {\n    dropdownItems() {\n      return this.commits.map((commit) => ({\n        text: commit.title,\n        extraAttrs: {\n          text: commit.shortId || commit.short_Id,\n        },\n        action: () => {\n          this.$emit('input', commit.message);\n        },\n      }));\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button-group>\n    <ai-commit-message\n      v-if=\"aiCommitMessageEnabled\"\n      :id=\"mrId\"\n      button-class=\"!gl-rounded-br-none !gl-rounded-tr-none\"\n      @update=\"(val) => $emit('append', val)\"\n    />\n    <gl-disclosure-dropdown\n      placement=\"bottom-end\"\n      toggle-text=\"Use an existing commit message\"\n      :category=\"aiCommitMessageEnabled ? 'primary' : 'tertiary'\"\n      :items=\"dropdownItems\"\n      size=\"small\"\n      :text-sr-only=\"aiCommitMessageEnabled\"\n      class=\"mr-commit-dropdown\"\n    >\n      <template v-if=\"aiCommitMessageEnabled\" #header>\n        <div\n          class=\"gl-flex gl-items-center gl-border-b-1 gl-border-b-dropdown gl-px-4 gl-py-3 gl-border-b-solid\"\n        >\n          <span class=\"gl-grow gl-pr-2 gl-text-sm gl-font-bold\">\n            {{ __('Use existing commit message') }}\n          </span>\n        </div>\n      </template>\n      <template #list-item=\"{ item }\">\n        <span class=\"gl-mr-2\">{{ item.extraAttrs.text }}</span>\n        {{ item.text }}\n      </template>\n    </gl-disclosure-dropdown>\n  </gl-button-group>\n</template>\n","import { render, staticRenderFns } from \"./commit_message_dropdown.vue?vue&type=template&id=6cd25c33\"\nimport script from \"./commit_message_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./commit_message_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-button-group',[(_vm.aiCommitMessageEnabled)?_c('ai-commit-message',{attrs:{\"id\":_vm.mrId,\"button-class\":\"!gl-rounded-br-none !gl-rounded-tr-none\"},on:{\"update\":(val) => _vm.$emit('append', val)}}):_vm._e(),_vm._v(\" \"),_c('gl-disclosure-dropdown',{staticClass:\"mr-commit-dropdown\",attrs:{\"placement\":\"bottom-end\",\"toggle-text\":\"Use an existing commit message\",\"category\":_vm.aiCommitMessageEnabled ? 'primary' : 'tertiary',\"items\":_vm.dropdownItems,\"size\":\"small\",\"text-sr-only\":_vm.aiCommitMessageEnabled},scopedSlots:_vm._u([(_vm.aiCommitMessageEnabled)?{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-items-center gl-border-b-1 gl-border-b-dropdown gl-px-4 gl-py-3 gl-border-b-solid\"},[_c('span',{staticClass:\"gl-grow gl-pr-2 gl-text-sm gl-font-bold\"},[_vm._v(\"\\n          \"+_vm._s(_vm.__('Use existing commit message'))+\"\\n        \")])])]},proxy:true}:null,{key:\"list-item\",fn:function({ item }){return [_c('span',{staticClass:\"gl-mr-2\"},[_vm._v(_vm._s(item.extraAttrs.text))]),_vm._v(\"\\n      \"+_vm._s(item.text)+\"\\n    \")]}}],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!./squash_before_merge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./squash_before_merge.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlFormCheckbox, GlLink } from '@gitlab/ui';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport { SQUASH_BEFORE_MERGE } from '../../i18n';\n\nexport default {\n  components: {\n    GlFormCheckbox,\n    GlLink,\n    HelpIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  i18n: {\n    ...SQUASH_BEFORE_MERGE,\n  },\n  props: {\n    value: {\n      type: Boolean,\n      required: true,\n    },\n    helpPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isDisabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    tooltipTitle() {\n      return this.isDisabled ? this.$options.i18n.tooltipTitle : null;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex\">\n    <gl-form-checkbox\n      v-gl-tooltip\n      :checked=\"value\"\n      :disabled=\"isDisabled\"\n      name=\"squash\"\n      class=\"js-squash-checkbox gl-mr-2\"\n      data-testid=\"squash-checkbox\"\n      :title=\"tooltipTitle\"\n      @change=\"(checked) => $emit('input', checked)\"\n    >\n      {{ $options.i18n.checkboxLabel }}\n    </gl-form-checkbox>\n    <gl-link\n      v-if=\"helpPath\"\n      v-gl-tooltip\n      :href=\"helpPath\"\n      :title=\"$options.i18n.helpLabel\"\n      class=\"gl-leading-1\"\n      target=\"_blank\"\n    >\n      <help-icon :aria-label=\"$options.i18n.helpLabel\" />\n    </gl-link>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./squash_before_merge.vue?vue&type=template&id=900b9806\"\nimport script from \"./squash_before_merge.vue?vue&type=script&lang=js\"\nexport * from \"./squash_before_merge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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\"},[_c('gl-form-checkbox',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"js-squash-checkbox gl-mr-2\",attrs:{\"checked\":_vm.value,\"disabled\":_vm.isDisabled,\"name\":\"squash\",\"data-testid\":\"squash-checkbox\",\"title\":_vm.tooltipTitle},on:{\"change\":(checked) => _vm.$emit('input', checked)}},[_vm._v(\"\\n    \"+_vm._s(_vm.$options.i18n.checkboxLabel)+\"\\n  \")]),_vm._v(\" \"),(_vm.helpPath)?_c('gl-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-leading-1\",attrs:{\"href\":_vm.helpPath,\"title\":_vm.$options.i18n.helpLabel,\"target\":\"_blank\"}},[_c('help-icon',{attrs:{\"aria-label\":_vm.$options.i18n.helpLabel}})],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!./merge_failed_pipeline_confirmation_dialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.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_failed_pipeline_confirmation_dialog.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal, GlButton } from '@gitlab/ui';\nimport { __ } from '~/locale';\nimport runPipelineMixin from '../../mixins/run_pipeline';\n\nexport default {\n  name: 'MergeFailedPipelineConfirmationDialog',\n  i18n: {\n    primary: __('Merge unverified changes'),\n    cancel: __('Cancel'),\n    info: __(\n      'The merge checks are incomplete because the latest pipeline failed, the pipeline status cannot be verified, or the merge request target branch was changed. You should run a new pipeline before merging.',\n    ),\n    confirmation: __('Are you sure you want to attempt to merge?'),\n    title: __('Merge unverified changes?'),\n  },\n  components: {\n    GlModal,\n    GlButton,\n  },\n  mixins: [runPipelineMixin],\n  props: {\n    visible: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  methods: {\n    hide() {\n      this.$refs.modal.hide();\n    },\n    cancel() {\n      this.hide();\n      this.$emit('cancel');\n    },\n    focusCancelButton() {\n      this.$refs.cancelButton.$el.focus();\n    },\n    mergeChanges() {\n      this.$emit('mergeWithFailedPipeline');\n      this.hide();\n    },\n  },\n};\n</script>\n<template>\n  <gl-modal\n    ref=\"modal\"\n    size=\"sm\"\n    modal-id=\"merge-train-failed-pipeline-confirmation-dialog\"\n    :title=\"$options.i18n.title\"\n    :visible=\"visible\"\n    data-testid=\"merge-failed-pipeline-confirmation-dialog\"\n    @shown=\"focusCancelButton\"\n    @hide=\"$emit('cancel')\"\n  >\n    <p>{{ $options.i18n.info }}</p>\n    <p>{{ $options.i18n.confirmation }}</p>\n    <template #modal-footer>\n      <gl-button ref=\"cancelButton\" data-testid=\"merge-cancel-btn\" @click=\"cancel\">{{\n        $options.i18n.cancel\n      }}</gl-button>\n      <gl-button\n        variant=\"confirm\"\n        category=\"secondary\"\n        data-testid=\"merge-unverified-changes\"\n        @click=\"mergeChanges\"\n      >\n        {{ $options.i18n.primary }}\n      </gl-button>\n      <gl-button\n        variant=\"confirm\"\n        data-testid=\"run-pipeline-button\"\n        :loading=\"isCreatingPipeline\"\n        @click=\"runPipeline\"\n      >\n        {{ __('Run pipeline') }}\n      </gl-button>\n    </template>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./merge_failed_pipeline_confirmation_dialog.vue?vue&type=template&id=5f613226\"\nimport script from \"./merge_failed_pipeline_confirmation_dialog.vue?vue&type=script&lang=js\"\nexport * from \"./merge_failed_pipeline_confirmation_dialog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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:{\"size\":\"sm\",\"modal-id\":\"merge-train-failed-pipeline-confirmation-dialog\",\"title\":_vm.$options.i18n.title,\"visible\":_vm.visible,\"data-testid\":\"merge-failed-pipeline-confirmation-dialog\"},on:{\"shown\":_vm.focusCancelButton,\"hide\":function($event){return _vm.$emit('cancel')}},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('gl-button',{ref:\"cancelButton\",attrs:{\"data-testid\":\"merge-cancel-btn\"},on:{\"click\":_vm.cancel}},[_vm._v(_vm._s(_vm.$options.i18n.cancel))]),_vm._v(\" \"),_c('gl-button',{attrs:{\"variant\":\"confirm\",\"category\":\"secondary\",\"data-testid\":\"merge-unverified-changes\"},on:{\"click\":_vm.mergeChanges}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.primary)+\"\\n    \")]),_vm._v(\" \"),_c('gl-button',{attrs:{\"variant\":\"confirm\",\"data-testid\":\"run-pipeline-button\",\"loading\":_vm.isCreatingPipeline},on:{\"click\":_vm.runPipeline}},[_vm._v(\"\\n      \"+_vm._s(_vm.__('Run pipeline'))+\"\\n    \")])]},proxy:true}])},[_c('p',[_vm._v(_vm._s(_vm.$options.i18n.info))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$options.i18n.confirmation))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport {\n  GlButton,\n  GlButtonGroup,\n  GlDisclosureDropdown,\n  GlDisclosureDropdownItem,\n  GlFormCheckbox,\n  GlSprintf,\n  GlLink,\n  GlTooltipDirective,\n  GlSkeletonLoader,\n} from '@gitlab/ui';\nimport { isEmpty, isNil } from 'lodash';\nimport readyToMergeMixin from 'ee_else_ce/vue_merge_request_widget/mixins/ready_to_merge';\nimport readyToMergeQuery from 'ee_else_ce/vue_merge_request_widget/queries/states/ready_to_merge.query.graphql';\nimport { createAlert } from '~/alert';\nimport { fetchPolicies } from '~/lib/graphql';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { STATUS_CLOSED, STATUS_MERGED } from '~/issues/constants';\nimport { secondsToMilliseconds } from '~/lib/utils/datetime_utility';\nimport simplePoll from '~/lib/utils/simple_poll';\nimport { __, s__, n__ } from '~/locale';\nimport SmartInterval from '~/smart_interval';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport readyToMergeSubscription from '~/vue_merge_request_widget/queries/states/ready_to_merge.subscription.graphql';\nimport HelpPopover from '~/vue_shared/components/help_popover.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport {\n  AUTO_MERGE_STRATEGIES,\n  MT_MERGE_STRATEGY,\n  PIPELINE_FAILED_STATE,\n  STATE_MACHINE,\n  MT_SKIP_TRAIN,\n  MT_RESTART_TRAIN,\n  MWCP_MERGE_STRATEGY,\n} from '../../constants';\nimport eventHub from '../../event_hub';\nimport mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';\nimport MergeRequestStore from '../../stores/mr_widget_store';\nimport AddedCommitMessage from '../added_commit_message.vue';\nimport RelatedLinks from '../mr_widget_related_links.vue';\nimport CommitEdit from './commit_edit.vue';\nimport CommitMessageDropdown from './commit_message_dropdown.vue';\nimport SquashBeforeMerge from './squash_before_merge.vue';\nimport MergeFailedPipelineConfirmationDialog from './merge_failed_pipeline_confirmation_dialog.vue';\n\nconst PIPELINE_PENDING_STATE = 'pending';\nconst PIPELINE_SUCCESS_STATE = 'success';\n\nconst MERGE_FAILED_STATUS = 'failed';\nconst MERGE_SUCCESS_STATUS = 'success';\nconst MERGE_HOOK_VALIDATION_ERROR_STATUS = 'hook_validation_error';\n\nconst { transitions } = STATE_MACHINE;\nconst { MERGE, MERGE_FAILURE, AUTO_MERGE, MERGING } = transitions;\n\nexport default {\n  name: 'ReadyToMerge',\n  apollo: {\n    state: {\n      query: readyToMergeQuery,\n      fetchPolicy: fetchPolicies.NO_CACHE,\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      manual: true,\n      result({ data }) {\n        if (!data?.project?.mergeRequest) {\n          return;\n        }\n\n        if (Object.keys(this.state).length === 0) {\n          this.removeSourceBranch =\n            data.project.mergeRequest.shouldRemoveSourceBranch ||\n            data.project.mergeRequest.forceRemoveSourceBranch ||\n            false;\n          this.commitMessage = data.project.mergeRequest.defaultMergeCommitMessage;\n          this.squashBeforeMerge = data.project.mergeRequest.squashOnMerge;\n          this.isSquashReadOnly = data.project.squashReadOnly;\n          this.squashCommitMessage = data.project.mergeRequest.defaultSquashCommitMessage;\n        }\n\n        this.state = {\n          ...data.project.mergeRequest,\n          mergeRequestsFfOnlyEnabled: data.project.mergeRequestsFfOnlyEnabled,\n          onlyAllowMergeIfPipelineSucceeds: data.project.onlyAllowMergeIfPipelineSucceeds,\n          mergeTrainsCount: data.project?.mergeTrains?.nodes[0]?.cars?.count,\n        };\n        this.loading = false;\n\n        if (!this.commitMessageIsTouched) {\n          this.commitMessage = this.state.defaultMergeCommitMessage;\n        }\n        if (!this.squashCommitMessageIsTouched) {\n          this.squashCommitMessage = this.state.defaultSquashCommitMessage;\n        }\n\n        if (!isNil(this.state.mergeTrainsCount) && !this.pollingInterval) {\n          this.initPolling();\n        }\n      },\n      subscribeToMore: {\n        document() {\n          return readyToMergeSubscription;\n        },\n        skip() {\n          return !this.mr?.id || this.loading;\n        },\n        variables() {\n          return {\n            issuableId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.mr?.id),\n          };\n        },\n        updateQuery(\n          _,\n          {\n            subscriptionData: {\n              data: { mergeRequestMergeStatusUpdated },\n            },\n          },\n        ) {\n          if (mergeRequestMergeStatusUpdated) {\n            this.state = {\n              ...mergeRequestMergeStatusUpdated,\n              mergeRequestsFfOnlyEnabled: this.state.mergeRequestsFfOnlyEnabled,\n              onlyAllowMergeIfPipelineSucceeds: this.state.onlyAllowMergeIfPipelineSucceeds,\n            };\n\n            if (!this.commitMessageIsTouched) {\n              this.commitMessage = mergeRequestMergeStatusUpdated.defaultMergeCommitMessage;\n            }\n\n            if (!this.squashCommitMessageIsTouched) {\n              this.squashCommitMessage = mergeRequestMergeStatusUpdated.defaultSquashCommitMessage;\n            }\n          }\n        },\n      },\n    },\n  },\n  components: {\n    SquashBeforeMerge,\n    CommitEdit,\n    CommitMessageDropdown,\n    GlSprintf,\n    GlLink,\n    GlButton,\n    GlButtonGroup,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownItem,\n    GlFormCheckbox,\n    GlSkeletonLoader,\n    MergeFailedPipelineConfirmationDialog,\n    MergeImmediatelyConfirmationDialog: () =>\n      import(\n        'ee_component/vue_merge_request_widget/components/merge_immediately_confirmation_dialog.vue'\n      ),\n    MergeTrainFailedPipelineConfirmationDialog: () =>\n      import(\n        'ee_component/vue_merge_request_widget/components/merge_train_failed_pipeline_confirmation_dialog.vue'\n      ),\n    MergeTrainRestartTrainConfirmationDialog: () =>\n      import(\n        'ee_component/vue_merge_request_widget/components/merge_train_restart_train_confirmation_dialog.vue'\n      ),\n    AddedCommitMessage,\n    RelatedLinks,\n    HelpPopover,\n    AiCommitMessage: () =>\n      import('ee_component/vue_merge_request_widget/components/ai_commit_message.vue'),\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [readyToMergeMixin, mergeRequestQueryVariablesMixin, glFeatureFlagsMixin()],\n  props: {\n    mr: { type: Object, required: true },\n    service: { type: Object, required: true },\n  },\n  data() {\n    return {\n      loading: true,\n      state: {},\n      removeSourceBranch: this.mr.shouldRemoveSourceBranch,\n      isMakingRequest: false,\n      isMergingImmediately: false,\n      commitMessage: this.mr.commitMessage,\n      commitMessageIsTouched: false,\n      squashBeforeMerge: this.mr.squashIsSelected,\n      isSquashReadOnly: this.mr.squashIsReadonly,\n      squashCommitMessage: this.mr.squashCommitMessage,\n      squashCommitMessageIsTouched: false,\n      isPipelineFailedModalVisibleMergeTrain: false,\n      isPipelineFailedModalVisibleNormalMerge: false,\n      isMergeTrainBeingForceMerged: false,\n      mergeTrainMergeType: MT_RESTART_TRAIN,\n      skipMergeTrain: false,\n      mergeTrainsSkipAllowed: this.mr.mergeTrainsSkipAllowed,\n      editCommitMessage: false,\n    };\n  },\n  computed: {\n    hasCI() {\n      return this.state.hasCI || this.state.hasCi;\n    },\n    isAutoMergeAvailable() {\n      return !isEmpty(this.state.availableAutoMergeStrategies);\n    },\n    pipeline() {\n      return this.state.headPipeline;\n    },\n    isPipelineFailed() {\n      return ['FAILED', 'CANCELED'].indexOf(this.pipeline?.status) !== -1;\n    },\n    showMergeFailedPipelineConfirmationDialog() {\n      return (this.status === PIPELINE_FAILED_STATE && this.isPipelineFailed) || this.mr.retargeted;\n    },\n    isMergeAllowed() {\n      return this.state.mergeable || false;\n    },\n    canRemoveSourceBranch() {\n      return this.state.userPermissions.removeSourceBranch;\n    },\n    commitTemplateHelpPage() {\n      return helpPagePath('user/project/merge_requests/commit_templates.md');\n    },\n    commitTemplateHintText() {\n      if (this.shouldShowSquashEdit && this.shouldShowMergeEdit) {\n        return this.$options.i18n.mergeAndSquashCommitTemplatesHintText;\n      }\n      if (this.shouldShowSquashEdit) {\n        return this.$options.i18n.squashCommitTemplateHintText;\n      }\n      return this.$options.i18n.mergeCommitTemplateHintText;\n    },\n    commits() {\n      return this.state.commitsWithoutMergeCommits?.nodes;\n    },\n    commitsCount() {\n      return this.state.commitCount || 0;\n    },\n    preferredAutoMergeStrategy() {\n      return MergeRequestStore.getPreferredAutoMergeStrategy(\n        this.state.availableAutoMergeStrategies,\n      );\n    },\n    isPreferredAutoMergeStrategyMWPC() {\n      return this.preferredAutoMergeStrategy === MWCP_MERGE_STRATEGY;\n    },\n    squashIsSelected() {\n      return this.isSquashReadOnly ? this.state.squashOnMerge : this.state.squash;\n    },\n    status() {\n      const ciStatus = this.pipeline?.status?.toLowerCase();\n\n      if ((this.hasCI && !ciStatus) || this.hasPipelineMustSucceedConflict) {\n        return PIPELINE_FAILED_STATE;\n      }\n\n      if (this.isAutoMergeAvailable) {\n        return PIPELINE_PENDING_STATE;\n      }\n\n      if (this.pipeline && this.isPipelineFailed) {\n        return PIPELINE_FAILED_STATE;\n      }\n\n      return PIPELINE_SUCCESS_STATE;\n    },\n    mergeButtonText() {\n      if (this.isMergingImmediately) {\n        return __('Merge in progress');\n      }\n      if (this.isAutoMergeAvailable) {\n        return this.autoMergeText;\n      }\n\n      if (this.status === PIPELINE_FAILED_STATE || this.isPipelineFailed) {\n        return __('Merge...');\n      }\n\n      return __('Merge');\n    },\n    showAutoMergeHelperText() {\n      return this.isAutoMergeAvailable;\n    },\n    hasPipelineMustSucceedConflict() {\n      return !this.hasCI && this.state.onlyAllowMergeIfPipelineSucceeds;\n    },\n    isNotClosed() {\n      return this.mr.state !== STATUS_CLOSED;\n    },\n    isMerged() {\n      return this.mr.state === STATUS_MERGED;\n    },\n    isNeitherClosedNorMerged() {\n      return this.mr.state !== STATUS_CLOSED && this.mr.state !== STATUS_MERGED;\n    },\n    isRemoveSourceBranchButtonDisabled() {\n      return this.isMergeButtonDisabled;\n    },\n    shouldShowSquashBeforeMerge() {\n      const { enableSquashBeforeMerge } = this.mr;\n\n      if (this.isSquashReadOnly && !this.squashIsSelected) {\n        return false;\n      }\n\n      return enableSquashBeforeMerge;\n    },\n    shouldShowSquashEdit() {\n      return this.squashBeforeMerge && this.shouldShowSquashBeforeMerge;\n    },\n    shouldShowMergeEdit() {\n      return !this.state.mergeRequestsFfOnlyEnabled;\n    },\n    shaMismatchLink() {\n      return this.mr.mergeRequestDiffsPath;\n    },\n    showDangerMessageForMergeTrain() {\n      return this.preferredAutoMergeStrategy === MT_MERGE_STRATEGY && this.isPipelineFailed;\n    },\n    shouldShowMergeControls() {\n      return (\n        this.state.userPermissions?.canMerge &&\n        !this.mr.autoMergeEnabled &&\n        this.mr.state === 'readyToMerge'\n      );\n    },\n    sourceBranchPreMergeText() {\n      return this.removeSourceBranch\n        ? __('Source branch will be deleted.')\n        : __('Source branch will not be deleted.');\n    },\n    sourceBranchMergedText() {\n      return this.mr.sourceBranchRemoved\n        ? __('Deleted the source branch.')\n        : __('Did not delete the source branch.');\n    },\n    sourceHasDivergedFromTarget() {\n      return this.mr.divergedCommitsCount > 0;\n    },\n    showMergeDetailsHeader() {\n      return !['readyToMerge'].includes(this.mr.state);\n    },\n    autoMergeHelpPopoverOptions() {\n      return {\n        title: this.autoMergePopoverSettings.title,\n      };\n    },\n    isSkipMergeTrainAvailable() {\n      return this.mergeTrainsSkipAllowed && this.glFeatures.mergeTrainsSkipTrain;\n    },\n    displaySkipMergeTrainOptions() {\n      return this.shouldDisplayMergeImmediatelyDropdownOptions && this.isSkipMergeTrainAvailable;\n    },\n  },\n  watch: {\n    'mr.state': function mrStateWatcher() {\n      this.isMakingRequest = false;\n    },\n    'state.autoMergeEnabled': function mrAutoMergeEnabledWatcher() {\n      this.isMakingRequest = false;\n    },\n  },\n  mounted() {\n    eventHub.$on('ApprovalUpdated', this.updateGraphqlState);\n    eventHub.$on('MRWidgetUpdateRequested', this.updateGraphqlState);\n    eventHub.$on('mr.discussion.updated', this.updateGraphqlState);\n  },\n  beforeDestroy() {\n    eventHub.$off('ApprovalUpdated', this.updateGraphqlState);\n    eventHub.$off('MRWidgetUpdateRequested', this.updateGraphqlState);\n    eventHub.$off('mr.discussion.updated', this.updateGraphqlState);\n    eventHub.$off('ApprovalUpdated', this.updateGraphqlState);\n\n    if (this.pollingInterval) {\n      this.pollingInterval.destroy();\n    }\n  },\n  methods: {\n    initPolling() {\n      const startingPollInterval = secondsToMilliseconds(5);\n\n      this.pollingInterval = new SmartInterval({\n        callback: () => this.$apollo.queries.state.refetch(),\n        startingInterval: startingPollInterval,\n        maxInterval: startingPollInterval + secondsToMilliseconds(4 * 60),\n        hiddenInterval: secondsToMilliseconds(6 * 60),\n        incrementByFactorOf: 2,\n      });\n    },\n    updateGraphqlState() {\n      return this.$apollo.queries.state.refetch();\n    },\n    handleMergeButtonClick(useAutoMerge, mergeImmediately = false, confirmationClicked = false) {\n      if (\n        this.preferredAutoMergeStrategy !== MT_MERGE_STRATEGY &&\n        this.showMergeFailedPipelineConfirmationDialog &&\n        !confirmationClicked\n      ) {\n        this.isPipelineFailedModalVisibleNormalMerge = true;\n        return;\n      }\n\n      if (this.showFailedPipelineModalMergeTrain && !confirmationClicked) {\n        this.isPipelineFailedModalVisibleMergeTrain = true;\n        return;\n      }\n\n      if (mergeImmediately) {\n        this.isMergingImmediately = true;\n      }\n      const latestSha = this.state.diffHeadSha;\n\n      const options = {\n        sha: latestSha || this.mr.sha,\n        auto_merge_strategy: useAutoMerge ? this.preferredAutoMergeStrategy : undefined,\n        should_remove_source_branch: this.removeSourceBranch === true,\n        squash: this.squashBeforeMerge,\n        skip_merge_train: this.skipMergeTrain,\n      };\n\n      // If users can't alter the squash message (e.g. for 1-commit merge requests),\n      // we shouldn't send the commit message because that would make the backend\n      // do unnecessary work.\n      if (this.shouldShowSquashBeforeMerge && this.squashCommitMessageIsTouched) {\n        options.squash_commit_message = this.squashCommitMessage;\n      }\n\n      if (this.commitMessageIsTouched) {\n        options.commit_message = this.commitMessage;\n      }\n\n      this.isMakingRequest = true;\n      this.editCommitMessage = false;\n\n      if (!useAutoMerge) {\n        this.mr.transitionStateMachine({ transition: MERGE });\n      }\n\n      this.service\n        .merge(options)\n        .then((res) => res.data)\n        .then((data) => {\n          const hasError =\n            data.status === MERGE_FAILED_STATUS ||\n            data.status === MERGE_HOOK_VALIDATION_ERROR_STATUS;\n\n          if (AUTO_MERGE_STRATEGIES.includes(data.status)) {\n            eventHub.$emit('MRWidgetUpdateRequested');\n            this.mr.transitionStateMachine({ transition: AUTO_MERGE });\n          } else if (data.status === MERGE_SUCCESS_STATUS) {\n            this.mr.transitionStateMachine({ transition: MERGING });\n          } else if (hasError) {\n            eventHub.$emit('FailedToMerge', data.merge_error);\n            this.mr.transitionStateMachine({ transition: MERGE_FAILURE });\n          }\n\n          this.updateGraphqlState();\n        })\n        .catch(() => {\n          this.isMakingRequest = false;\n          this.mr.transitionStateMachine({ transition: MERGE_FAILURE });\n          createAlert({\n            message: __('Something went wrong. Please try again.'),\n          });\n        });\n    },\n    handleMergeImmediatelyButtonClick() {\n      if (this.isMergeImmediatelyDangerous) {\n        this.$refs.confirmationDialog.show();\n      } else {\n        this.handleMergeButtonClick(false, true);\n      }\n    },\n    handleMergeTrainMergeImmediatelyButtonClick(type) {\n      this.mergeTrainMergeType = type;\n      this.isMergeTrainBeingForceMerged = true;\n    },\n    processMergeTrain() {\n      if (this.mergeTrainMergeType === MT_SKIP_TRAIN) {\n        this.skipMergeTrain = true;\n      }\n\n      this.handleMergeButtonClick(false, true, true);\n    },\n    onMergeImmediatelyConfirmation() {\n      this.handleMergeButtonClick(false, true, true);\n    },\n    onMergeWithFailedPipelineConfirmation() {\n      this.handleMergeButtonClick(false, true, true);\n    },\n    initiateRemoveSourceBranchPolling() {\n      // We need to show source branch is being removed spinner in another component\n      eventHub.$emit('SetBranchRemoveFlag', [true]);\n\n      simplePoll((continuePolling, stopPolling) => {\n        this.handleRemoveBranchPolling(continuePolling, stopPolling);\n      });\n    },\n    handleRemoveBranchPolling(continuePolling, stopPolling) {\n      this.service\n        .poll()\n        .then((res) => res.data)\n        .then((data) => {\n          // If source branch exists then we should continue polling\n          // because removing a source branch is a background task and takes time\n          if (data.source_branch_exists) {\n            continuePolling();\n          } else {\n            // Branch is removed. Update widget, stop polling and hide the spinner\n            eventHub.$emit('MRWidgetUpdateRequested', () => {\n              eventHub.$emit('SetBranchRemoveFlag', [false]);\n            });\n            stopPolling();\n          }\n        })\n        .catch(() => {\n          createAlert({\n            message: __('Something went wrong while deleting the source branch. Please try again.'),\n          });\n        });\n    },\n    setCommitMessage(val) {\n      this.commitMessage = val;\n      this.commitMessageIsTouched = true;\n    },\n    setSquashCommitMessage(val) {\n      this.squashCommitMessage = val;\n      this.squashCommitMessageIsTouched = true;\n    },\n    appendCommitMessage(messageType, val) {\n      this[`${messageType}Message`] = `${this[`${messageType}Message`]}\\n\\n${val}`;\n      this[`${messageType}MessageIsTouched`] = true;\n    },\n    updateRemoveSourceBranchSettings(checked) {\n      this.removeSourceBranch = checked;\n      this.mr.setRemoveSourceBranch(checked);\n    },\n  },\n  i18n: {\n    mergeCommitTemplateHintText: s__(\n      'mrWidget|To change this default message, edit the template for merge commit messages. %{linkStart}Learn more%{linkEnd}.',\n    ),\n    squashCommitTemplateHintText: s__(\n      'mrWidget|To change this default message, edit the template for squash commit messages. %{linkStart}Learn more%{linkEnd}.',\n    ),\n    mergeAndSquashCommitTemplatesHintText: s__(\n      'mrWidget|To change these default messages, edit the templates for both the merge and squash commit messages. %{linkStart}Learn more%{linkEnd}.',\n    ),\n    sourceDivergedFromTargetText: s__('mrWidget|The source branch is %{link} the target branch.'),\n    divergedCommits: (count) => n__('%d commit behind', '%d commits behind', count),\n  },\n  MT_SKIP_TRAIN,\n  MT_RESTART_TRAIN,\n};\n</script>\n\n<template>\n  <div\n    :class=\"{ 'gl-bg-subtle': isNeitherClosedNorMerged }\"\n    data-testid=\"ready_to_merge_state\"\n    class=\"gl-border-t gl-border-t-section gl-bg-subtle gl-pl-7\"\n  >\n    <div v-if=\"loading\" class=\"mr-widget-body\">\n      <div class=\"mr-ready-to-merge-loader gl-w-full\">\n        <gl-skeleton-loader :width=\"418\" :height=\"86\">\n          <rect x=\"0\" y=\"0\" width=\"144\" height=\"20\" rx=\"4\" />\n          <rect x=\"0\" y=\"26\" width=\"100\" height=\"16\" rx=\"4\" />\n          <rect x=\"108\" y=\"26\" width=\"100\" height=\"16\" rx=\"4\" />\n          <rect x=\"0\" y=\"48\" width=\"130\" height=\"16\" rx=\"4\" />\n          <rect x=\"0\" y=\"70\" width=\"80\" height=\"16\" rx=\"4\" />\n          <rect x=\"88\" y=\"70\" width=\"90\" height=\"16\" rx=\"4\" />\n        </gl-skeleton-loader>\n      </div>\n    </div>\n    <template v-else>\n      <div class=\"mr-widget-body mr-widget-body-ready-merge media gl-flex gl-items-center\">\n        <div class=\"media-body\">\n          <div class=\"mr-widget-body-controls gl-flex gl-flex-wrap gl-items-center\">\n            <template v-if=\"shouldShowMergeControls\">\n              <div\n                class=\"gl-flex gl-w-full gl-flex-col gl-flex-wrap md:gl-flex-row md:gl-items-center\"\n              >\n                <gl-form-checkbox\n                  v-if=\"canRemoveSourceBranch\"\n                  id=\"remove-source-branch-input\"\n                  :disabled=\"isRemoveSourceBranchButtonDisabled\"\n                  :checked=\"removeSourceBranch\"\n                  class=\"js-remove-source-branch-checkbox gl-mr-5 gl-flex gl-items-center\"\n                  data-testid=\"delete-source-branch-checkbox\"\n                  @change=\"updateRemoveSourceBranchSettings\"\n                >\n                  {{ __('Delete source branch') }}\n                </gl-form-checkbox>\n\n                <!-- Placeholder for EE extension of this component -->\n                <squash-before-merge\n                  v-if=\"shouldShowSquashBeforeMerge\"\n                  v-model=\"squashBeforeMerge\"\n                  :help-path=\"mr.squashBeforeMergeHelpPath\"\n                  :is-disabled=\"isSquashReadOnly\"\n                  class=\"gl-mr-5\"\n                />\n\n                <gl-form-checkbox\n                  v-if=\"shouldShowSquashEdit || shouldShowMergeEdit\"\n                  v-model=\"editCommitMessage\"\n                  data-testid=\"widget_edit_commit_message\"\n                >\n                  {{ __('Edit commit message') }}\n                </gl-form-checkbox>\n              </div>\n              <div v-if=\"editCommitMessage\" class=\"gl-w-full\" data-testid=\"edit_commit_message\">\n                <ul class=\"border-top commits-list flex-list gl-list-none gl-p-0 gl-pt-4\">\n                  <commit-edit\n                    v-if=\"shouldShowSquashEdit\"\n                    :label=\"__('Squash commit message')\"\n                    :value=\"squashCommitMessage\"\n                    input-id=\"squash-message-edit\"\n                    class=\"!gl-m-0 !gl-p-0\"\n                    @input=\"setSquashCommitMessage\"\n                  >\n                    <template #header>\n                      <commit-message-dropdown\n                        :ai-commit-message-enabled=\"mr.aiCommitMessageEnabled\"\n                        :mr-id=\"mr.id\"\n                        :commits=\"commits\"\n                        @append=\"(val) => appendCommitMessage('squashCommit', val)\"\n                        @input=\"setSquashCommitMessage\"\n                      />\n                    </template>\n                  </commit-edit>\n                  <commit-edit\n                    v-if=\"shouldShowMergeEdit\"\n                    v-model=\"commitMessage\"\n                    :label=\"__('Merge commit message')\"\n                    input-id=\"merge-message-edit\"\n                    class=\"!gl-m-0 !gl-p-0\"\n                    data-testid=\"merge-commit-message\"\n                    @input=\"setCommitMessage\"\n                  >\n                    <template #header>\n                      <ai-commit-message\n                        v-if=\"mr.aiCommitMessageEnabled\"\n                        :id=\"mr.id\"\n                        @update=\"(val) => appendCommitMessage('commit', val)\"\n                      />\n                    </template>\n                  </commit-edit>\n                  <li class=\"!gl-m-0 !gl-p-0\">\n                    <p class=\"form-text gl-text-subtle\">\n                      <gl-sprintf :message=\"commitTemplateHintText\">\n                        <template #link=\"{ content }\">\n                          <gl-link\n                            :href=\"commitTemplateHelpPage\"\n                            class=\"inline-link\"\n                            target=\"_blank\"\n                            >{{ content }}</gl-link\n                          >\n                        </template>\n                      </gl-sprintf>\n                    </p>\n                  </li>\n                </ul>\n              </div>\n              <div class=\"mr-widget-merge-details gl-mb-3 gl-w-full gl-text-subtle\">\n                <template v-if=\"sourceHasDivergedFromTarget\">\n                  <gl-sprintf :message=\"$options.i18n.sourceDivergedFromTargetText\">\n                    <template #link>\n                      <gl-link :href=\"mr.targetBranchPath\">{{\n                        $options.i18n.divergedCommits(mr.divergedCommitsCount)\n                      }}</gl-link>\n                    </template>\n                  </gl-sprintf>\n                  &middot;\n                </template>\n                <added-commit-message\n                  :is-squash-enabled=\"squashBeforeMerge\"\n                  :is-fast-forward-enabled=\"!shouldShowMergeEdit\"\n                  :commits-count=\"commitsCount\"\n                  :target-branch=\"state.targetBranch\"\n                />\n                <template v-if=\"mr.relatedLinks\">\n                  &middot;\n                  <related-links\n                    :state=\"mr.state\"\n                    :related-links=\"mr.relatedLinks\"\n                    :show-assign-to-me=\"false\"\n                    :diverged-commits-count=\"mr.divergedCommitsCount\"\n                    :target-branch-path=\"mr.targetBranchPath\"\n                    class=\"mr-ready-merge-related-links gl-inline\"\n                  />\n                </template>\n              </div>\n              <gl-button-group class=\"gl-self-start\">\n                <gl-button\n                  size=\"medium\"\n                  category=\"primary\"\n                  class=\"accept-merge-request\"\n                  data-testid=\"merge-button\"\n                  variant=\"confirm\"\n                  :disabled=\"isMergeButtonDisabled\"\n                  :loading=\"isMakingRequest\"\n                  @click=\"handleMergeButtonClick(isAutoMergeAvailable)\"\n                  >{{ mergeButtonText }}</gl-button\n                >\n                <gl-disclosure-dropdown\n                  v-if=\"shouldShowMergeImmediatelyDropdown\"\n                  v-gl-tooltip.hover.focus=\"__('Select merge moment')\"\n                  :disabled=\"isMergeButtonDisabled\"\n                  variant=\"confirm\"\n                  data-testid=\"merge-immediately-dropdown\"\n                  toggle-class=\"btn-icon js-merge-moment\"\n                  :toggle-text=\"__('Select a merge moment')\"\n                  text-sr-only\n                >\n                  <gl-disclosure-dropdown-item\n                    v-if=\"\n                      !shouldDisplayMergeImmediatelyDropdownOptions || !isSkipMergeTrainAvailable\n                    \"\n                    data-testid=\"merge-immediately-button\"\n                    @action=\"handleMergeImmediatelyButtonClick\"\n                  >\n                    <template #list-item> {{ __('Merge immediately') }} </template>\n                  </gl-disclosure-dropdown-item>\n                  <gl-disclosure-dropdown-item\n                    v-if=\"displaySkipMergeTrainOptions\"\n                    data-testid=\"mt-merge-now-restart-button\"\n                    @action=\"handleMergeTrainMergeImmediatelyButtonClick($options.MT_RESTART_TRAIN)\"\n                  >\n                    <template #list-item>\n                      <strong>{{ __(`Merge now and restart train`) }}</strong>\n                      <p class=\"gl-mb-0 gl-text-sm gl-text-subtle\">\n                        {{ __('Restart merge train pipelines with the merged changes.') }}\n                      </p>\n                    </template>\n                  </gl-disclosure-dropdown-item>\n                  <gl-disclosure-dropdown-item\n                    v-if=\"displaySkipMergeTrainOptions\"\n                    data-testid=\"mt-merge-now-skip-restart-button\"\n                    @action=\"handleMergeTrainMergeImmediatelyButtonClick($options.MT_SKIP_TRAIN)\"\n                  >\n                    <template #list-item>\n                      <strong>{{ __(`Merge now and don't restart train`) }}</strong>\n                      <p class=\"gl-mb-0 gl-text-sm gl-text-subtle\">\n                        {{ __('Merge train pipelines continue without the merged changes.') }}\n                      </p>\n                    </template>\n                  </gl-disclosure-dropdown-item>\n                </gl-disclosure-dropdown>\n              </gl-button-group>\n              <template v-if=\"showAutoMergeHelperText\">\n                <div class=\"gl-ml-4 gl-text-sm gl-text-subtle\" data-testid=\"auto-merge-helper-text\">\n                  {{ autoMergeHelperText }}\n                </div>\n                <help-popover\n                  class=\"gl-ml-2 gl-inline-flex\"\n                  :options=\"autoMergeHelpPopoverOptions\"\n                  data-testid=\"auto-merge-helper-text-icon\"\n                >\n                  <gl-sprintf :message=\"autoMergePopoverSettings.bodyText\">\n                    <template #link=\"{ content }\">\n                      <gl-link\n                        :href=\"autoMergePopoverSettings.helpLink\"\n                        target=\"_blank\"\n                        class=\"gl-text-sm\"\n                      >\n                        {{ content }}\n                      </gl-link>\n                    </template>\n                  </gl-sprintf>\n                </help-popover>\n              </template>\n            </template>\n            <div\n              v-else\n              class=\"mr-widget-merge-details -gl-order-1 gl-w-full\"\n              data-testid=\"merged-status-content\"\n            >\n              <p v-if=\"showMergeDetailsHeader\" class=\"gl-mb-2 gl-text-default\">\n                {{ __('Merge details') }}\n              </p>\n              <ul class=\"gl-mb-0 gl-ml-3 gl-pl-4 gl-text-subtle\">\n                <li v-if=\"sourceHasDivergedFromTarget\" class=\"gl-leading-normal\">\n                  <gl-sprintf :message=\"$options.i18n.sourceDivergedFromTargetText\">\n                    <template #link>\n                      <gl-link :href=\"mr.targetBranchPath\">{{\n                        $options.i18n.divergedCommits(mr.divergedCommitsCount)\n                      }}</gl-link>\n                    </template>\n                  </gl-sprintf>\n                </li>\n                <li class=\"gl-leading-normal\">\n                  <added-commit-message\n                    :state=\"mr.state\"\n                    :merge-commit-sha=\"mr.shortMergeCommitSha\"\n                    :is-squash-enabled=\"squashBeforeMerge\"\n                    :is-fast-forward-enabled=\"!shouldShowMergeEdit\"\n                    :commits-count=\"commitsCount\"\n                    :target-branch=\"state.targetBranch\"\n                    :merge-commit-path=\"mr.mergeCommitPath\"\n                  />\n                </li>\n                <li\n                  v-if=\"isNotClosed\"\n                  class=\"gl-leading-normal\"\n                  data-testid=\"source-branch-deleted-text\"\n                >\n                  {{ isMerged ? sourceBranchMergedText : sourceBranchPreMergeText }}\n                </li>\n                <li v-if=\"mr.relatedLinks\" class=\"gl-leading-normal\">\n                  <related-links\n                    :state=\"mr.state\"\n                    :related-links=\"mr.relatedLinks\"\n                    :show-assign-to-me=\"false\"\n                    class=\"mr-ready-merge-related-links gl-inline\"\n                  />\n                </li>\n                <li v-if=\"state.autoMergeEnabled\" class=\"gl-leading-normal\">\n                  {{ s__('mrWidget|Auto-merge enabled') }}\n                </li>\n              </ul>\n            </div>\n          </div>\n        </div>\n      </div>\n      <merge-immediately-confirmation-dialog\n        v-if=\"mr.mergeImmediatelyDocsPath\"\n        ref=\"confirmationDialog\"\n        :docs-url=\"mr.mergeImmediatelyDocsPath\"\n        @mergeImmediately=\"onMergeImmediatelyConfirmation\"\n      />\n      <merge-train-failed-pipeline-confirmation-dialog\n        :visible=\"isPipelineFailedModalVisibleMergeTrain\"\n        @startMergeTrain=\"onStartMergeTrainConfirmation\"\n        @cancel=\"isPipelineFailedModalVisibleMergeTrain = false\"\n      />\n      <merge-train-restart-train-confirmation-dialog\n        v-if=\"isSkipMergeTrainAvailable\"\n        :visible=\"isMergeTrainBeingForceMerged\"\n        :merge-train-type=\"mergeTrainMergeType\"\n        @processMergeTrainMerge=\"processMergeTrain\"\n        @cancel=\"isMergeTrainBeingForceMerged = false\"\n      />\n      <merge-failed-pipeline-confirmation-dialog\n        :visible=\"isPipelineFailedModalVisibleNormalMerge\"\n        :target-project-id=\"mr.targetProjectId\"\n        :iid=\"mr.iid\"\n        @mergeWithFailedPipeline=\"onMergeWithFailedPipelineConfirmation\"\n        @cancel=\"isPipelineFailedModalVisibleNormalMerge = false\"\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!./ready_to_merge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ready_to_merge.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ready_to_merge.vue?vue&type=template&id=761c54ba\"\nimport script from \"./ready_to_merge.vue?vue&type=script&lang=js\"\nexport * from \"./ready_to_merge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-t gl-border-t-section gl-bg-subtle gl-pl-7\",class:{ 'gl-bg-subtle': _vm.isNeitherClosedNorMerged },attrs:{\"data-testid\":\"ready_to_merge_state\"}},[(_vm.loading)?_c('div',{staticClass:\"mr-widget-body\"},[_c('div',{staticClass:\"mr-ready-to-merge-loader gl-w-full\"},[_c('gl-skeleton-loader',{attrs:{\"width\":418,\"height\":86}},[_c('rect',{attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"144\",\"height\":\"20\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"0\",\"y\":\"26\",\"width\":\"100\",\"height\":\"16\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"108\",\"y\":\"26\",\"width\":\"100\",\"height\":\"16\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"0\",\"y\":\"48\",\"width\":\"130\",\"height\":\"16\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"0\",\"y\":\"70\",\"width\":\"80\",\"height\":\"16\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"88\",\"y\":\"70\",\"width\":\"90\",\"height\":\"16\",\"rx\":\"4\"}})])],1)]):[_c('div',{staticClass:\"mr-widget-body mr-widget-body-ready-merge media gl-flex gl-items-center\"},[_c('div',{staticClass:\"media-body\"},[_c('div',{staticClass:\"mr-widget-body-controls gl-flex gl-flex-wrap gl-items-center\"},[(_vm.shouldShowMergeControls)?[_c('div',{staticClass:\"gl-flex gl-w-full gl-flex-col gl-flex-wrap md:gl-flex-row md:gl-items-center\"},[(_vm.canRemoveSourceBranch)?_c('gl-form-checkbox',{staticClass:\"js-remove-source-branch-checkbox gl-mr-5 gl-flex gl-items-center\",attrs:{\"id\":\"remove-source-branch-input\",\"disabled\":_vm.isRemoveSourceBranchButtonDisabled,\"checked\":_vm.removeSourceBranch,\"data-testid\":\"delete-source-branch-checkbox\"},on:{\"change\":_vm.updateRemoveSourceBranchSettings}},[_vm._v(\"\\n                \"+_vm._s(_vm.__('Delete source branch'))+\"\\n              \")]):_vm._e(),_vm._v(\" \"),(_vm.shouldShowSquashBeforeMerge)?_c('squash-before-merge',{staticClass:\"gl-mr-5\",attrs:{\"help-path\":_vm.mr.squashBeforeMergeHelpPath,\"is-disabled\":_vm.isSquashReadOnly},model:{value:(_vm.squashBeforeMerge),callback:function ($$v) {_vm.squashBeforeMerge=$$v},expression:\"squashBeforeMerge\"}}):_vm._e(),_vm._v(\" \"),(_vm.shouldShowSquashEdit || _vm.shouldShowMergeEdit)?_c('gl-form-checkbox',{attrs:{\"data-testid\":\"widget_edit_commit_message\"},model:{value:(_vm.editCommitMessage),callback:function ($$v) {_vm.editCommitMessage=$$v},expression:\"editCommitMessage\"}},[_vm._v(\"\\n                \"+_vm._s(_vm.__('Edit commit message'))+\"\\n              \")]):_vm._e()],1),_vm._v(\" \"),(_vm.editCommitMessage)?_c('div',{staticClass:\"gl-w-full\",attrs:{\"data-testid\":\"edit_commit_message\"}},[_c('ul',{staticClass:\"border-top commits-list flex-list gl-list-none gl-p-0 gl-pt-4\"},[(_vm.shouldShowSquashEdit)?_c('commit-edit',{staticClass:\"!gl-m-0 !gl-p-0\",attrs:{\"label\":_vm.__('Squash commit message'),\"value\":_vm.squashCommitMessage,\"input-id\":\"squash-message-edit\"},on:{\"input\":_vm.setSquashCommitMessage},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('commit-message-dropdown',{attrs:{\"ai-commit-message-enabled\":_vm.mr.aiCommitMessageEnabled,\"mr-id\":_vm.mr.id,\"commits\":_vm.commits},on:{\"append\":(val) => _vm.appendCommitMessage('squashCommit', val),\"input\":_vm.setSquashCommitMessage}})]},proxy:true}],null,false,2580512050)}):_vm._e(),_vm._v(\" \"),(_vm.shouldShowMergeEdit)?_c('commit-edit',{staticClass:\"!gl-m-0 !gl-p-0\",attrs:{\"label\":_vm.__('Merge commit message'),\"input-id\":\"merge-message-edit\",\"data-testid\":\"merge-commit-message\"},on:{\"input\":_vm.setCommitMessage},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [(_vm.mr.aiCommitMessageEnabled)?_c('ai-commit-message',{attrs:{\"id\":_vm.mr.id},on:{\"update\":(val) => _vm.appendCommitMessage('commit', val)}}):_vm._e()]},proxy:true}],null,false,3871858321),model:{value:(_vm.commitMessage),callback:function ($$v) {_vm.commitMessage=$$v},expression:\"commitMessage\"}}):_vm._e(),_vm._v(\" \"),_c('li',{staticClass:\"!gl-m-0 !gl-p-0\"},[_c('p',{staticClass:\"form-text gl-text-subtle\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.commitTemplateHintText},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"inline-link\",attrs:{\"href\":_vm.commitTemplateHelpPage,\"target\":\"_blank\"}},[_vm._v(_vm._s(content))])]}}],null,false,1357541771)})],1)])],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"mr-widget-merge-details gl-mb-3 gl-w-full gl-text-subtle\"},[(_vm.sourceHasDivergedFromTarget)?[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.sourceDivergedFromTargetText},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.mr.targetBranchPath}},[_vm._v(_vm._s(_vm.$options.i18n.divergedCommits(_vm.mr.divergedCommitsCount)))])]},proxy:true}],null,false,808100932)}),_vm._v(\"\\n                ·\\n              \")]:_vm._e(),_vm._v(\" \"),_c('added-commit-message',{attrs:{\"is-squash-enabled\":_vm.squashBeforeMerge,\"is-fast-forward-enabled\":!_vm.shouldShowMergeEdit,\"commits-count\":_vm.commitsCount,\"target-branch\":_vm.state.targetBranch}}),_vm._v(\" \"),(_vm.mr.relatedLinks)?[_vm._v(\"\\n                ·\\n                \"),_c('related-links',{staticClass:\"mr-ready-merge-related-links gl-inline\",attrs:{\"state\":_vm.mr.state,\"related-links\":_vm.mr.relatedLinks,\"show-assign-to-me\":false,\"diverged-commits-count\":_vm.mr.divergedCommitsCount,\"target-branch-path\":_vm.mr.targetBranchPath}})]:_vm._e()],2),_vm._v(\" \"),_c('gl-button-group',{staticClass:\"gl-self-start\"},[_c('gl-button',{staticClass:\"accept-merge-request\",attrs:{\"size\":\"medium\",\"category\":\"primary\",\"data-testid\":\"merge-button\",\"variant\":\"confirm\",\"disabled\":_vm.isMergeButtonDisabled,\"loading\":_vm.isMakingRequest},on:{\"click\":function($event){return _vm.handleMergeButtonClick(_vm.isAutoMergeAvailable)}}},[_vm._v(_vm._s(_vm.mergeButtonText))]),_vm._v(\" \"),(_vm.shouldShowMergeImmediatelyDropdown)?_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover.focus\",value:(_vm.__('Select merge moment')),expression:\"__('Select merge moment')\",modifiers:{\"hover\":true,\"focus\":true}}],attrs:{\"disabled\":_vm.isMergeButtonDisabled,\"variant\":\"confirm\",\"data-testid\":\"merge-immediately-dropdown\",\"toggle-class\":\"btn-icon js-merge-moment\",\"toggle-text\":_vm.__('Select a merge moment'),\"text-sr-only\":\"\"}},[(\n                    !_vm.shouldDisplayMergeImmediatelyDropdownOptions || !_vm.isSkipMergeTrainAvailable\n                  )?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"merge-immediately-button\"},on:{\"action\":_vm.handleMergeImmediatelyButtonClick},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.__('Merge immediately'))+\" \")]},proxy:true}],null,false,3098986359)}):_vm._e(),_vm._v(\" \"),(_vm.displaySkipMergeTrainOptions)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"mt-merge-now-restart-button\"},on:{\"action\":function($event){return _vm.handleMergeTrainMergeImmediatelyButtonClick(_vm.$options.MT_RESTART_TRAIN)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.__(`Merge now and restart train`)))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-0 gl-text-sm gl-text-subtle\"},[_vm._v(\"\\n                      \"+_vm._s(_vm.__('Restart merge train pipelines with the merged changes.'))+\"\\n                    \")])]},proxy:true}],null,false,2314009729)}):_vm._e(),_vm._v(\" \"),(_vm.displaySkipMergeTrainOptions)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"mt-merge-now-skip-restart-button\"},on:{\"action\":function($event){return _vm.handleMergeTrainMergeImmediatelyButtonClick(_vm.$options.MT_SKIP_TRAIN)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('strong',[_vm._v(_vm._s(_vm.__(`Merge now and don't restart train`)))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-0 gl-text-sm gl-text-subtle\"},[_vm._v(\"\\n                      \"+_vm._s(_vm.__('Merge train pipelines continue without the merged changes.'))+\"\\n                    \")])]},proxy:true}],null,false,1837323087)}):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(_vm.showAutoMergeHelperText)?[_c('div',{staticClass:\"gl-ml-4 gl-text-sm gl-text-subtle\",attrs:{\"data-testid\":\"auto-merge-helper-text\"}},[_vm._v(\"\\n                \"+_vm._s(_vm.autoMergeHelperText)+\"\\n              \")]),_vm._v(\" \"),_c('help-popover',{staticClass:\"gl-ml-2 gl-inline-flex\",attrs:{\"options\":_vm.autoMergeHelpPopoverOptions,\"data-testid\":\"auto-merge-helper-text-icon\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.autoMergePopoverSettings.bodyText},scopedSlots:_vm._u([{key:\"link\",fn:function({ content }){return [_c('gl-link',{staticClass:\"gl-text-sm\",attrs:{\"href\":_vm.autoMergePopoverSettings.helpLink,\"target\":\"_blank\"}},[_vm._v(\"\\n                      \"+_vm._s(content)+\"\\n                    \")])]}}],null,false,407787336)})],1)]:_vm._e()]:_c('div',{staticClass:\"mr-widget-merge-details -gl-order-1 gl-w-full\",attrs:{\"data-testid\":\"merged-status-content\"}},[(_vm.showMergeDetailsHeader)?_c('p',{staticClass:\"gl-mb-2 gl-text-default\"},[_vm._v(\"\\n              \"+_vm._s(_vm.__('Merge details'))+\"\\n            \")]):_vm._e(),_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-ml-3 gl-pl-4 gl-text-subtle\"},[(_vm.sourceHasDivergedFromTarget)?_c('li',{staticClass:\"gl-leading-normal\"},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.sourceDivergedFromTargetText},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('gl-link',{attrs:{\"href\":_vm.mr.targetBranchPath}},[_vm._v(_vm._s(_vm.$options.i18n.divergedCommits(_vm.mr.divergedCommitsCount)))])]},proxy:true}],null,false,808100932)})],1):_vm._e(),_vm._v(\" \"),_c('li',{staticClass:\"gl-leading-normal\"},[_c('added-commit-message',{attrs:{\"state\":_vm.mr.state,\"merge-commit-sha\":_vm.mr.shortMergeCommitSha,\"is-squash-enabled\":_vm.squashBeforeMerge,\"is-fast-forward-enabled\":!_vm.shouldShowMergeEdit,\"commits-count\":_vm.commitsCount,\"target-branch\":_vm.state.targetBranch,\"merge-commit-path\":_vm.mr.mergeCommitPath}})],1),_vm._v(\" \"),(_vm.isNotClosed)?_c('li',{staticClass:\"gl-leading-normal\",attrs:{\"data-testid\":\"source-branch-deleted-text\"}},[_vm._v(\"\\n                \"+_vm._s(_vm.isMerged ? _vm.sourceBranchMergedText : _vm.sourceBranchPreMergeText)+\"\\n              \")]):_vm._e(),_vm._v(\" \"),(_vm.mr.relatedLinks)?_c('li',{staticClass:\"gl-leading-normal\"},[_c('related-links',{staticClass:\"mr-ready-merge-related-links gl-inline\",attrs:{\"state\":_vm.mr.state,\"related-links\":_vm.mr.relatedLinks,\"show-assign-to-me\":false}})],1):_vm._e(),_vm._v(\" \"),(_vm.state.autoMergeEnabled)?_c('li',{staticClass:\"gl-leading-normal\"},[_vm._v(\"\\n                \"+_vm._s(_vm.s__('mrWidget|Auto-merge enabled'))+\"\\n              \")]):_vm._e()])])],2)])]),_vm._v(\" \"),(_vm.mr.mergeImmediatelyDocsPath)?_c('merge-immediately-confirmation-dialog',{ref:\"confirmationDialog\",attrs:{\"docs-url\":_vm.mr.mergeImmediatelyDocsPath},on:{\"mergeImmediately\":_vm.onMergeImmediatelyConfirmation}}):_vm._e(),_vm._v(\" \"),_c('merge-train-failed-pipeline-confirmation-dialog',{attrs:{\"visible\":_vm.isPipelineFailedModalVisibleMergeTrain},on:{\"startMergeTrain\":_vm.onStartMergeTrainConfirmation,\"cancel\":function($event){_vm.isPipelineFailedModalVisibleMergeTrain = false}}}),_vm._v(\" \"),(_vm.isSkipMergeTrainAvailable)?_c('merge-train-restart-train-confirmation-dialog',{attrs:{\"visible\":_vm.isMergeTrainBeingForceMerged,\"merge-train-type\":_vm.mergeTrainMergeType},on:{\"processMergeTrainMerge\":_vm.processMergeTrain,\"cancel\":function($event){_vm.isMergeTrainBeingForceMerged = false}}}):_vm._e(),_vm._v(\" \"),_c('merge-failed-pipeline-confirmation-dialog',{attrs:{\"visible\":_vm.isPipelineFailedModalVisibleNormalMerge,\"target-project-id\":_vm.mr.targetProjectId,\"iid\":_vm.mr.iid},on:{\"mergeWithFailedPipeline\":_vm.onMergeWithFailedPipelineConfirmation,\"cancel\":function($event){_vm.isPipelineFailedModalVisibleNormalMerge = false}}})]],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!./sha_mismatch.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sha_mismatch.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton } from '@gitlab/ui';\nimport BoldText from '~/vue_merge_request_widget/components/bold_text.vue';\nimport { I18N_SHA_MISMATCH } from '../../i18n';\nimport StateContainer from '../state_container.vue';\n\nexport default {\n  name: 'ShaMismatch',\n  components: {\n    BoldText,\n    GlButton,\n    StateContainer,\n  },\n  i18n: {\n    I18N_SHA_MISMATCH,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <state-container status=\"failed\" is-collapsible>\n    <span class=\"!gl-ml-0 gl-grow !gl-text-default md:gl-mr-3\" data-testid=\"head-mismatch-content\">\n      <bold-text :message=\"$options.i18n.I18N_SHA_MISMATCH.warningMessage\" />\n    </span>\n    <template #actions>\n      <gl-button\n        data-testid=\"action-button\"\n        size=\"small\"\n        category=\"primary\"\n        variant=\"confirm\"\n        class=\"gl-self-start\"\n        :href=\"mr.mergeRequestDiffsPath\"\n      >\n        {{ $options.i18n.I18N_SHA_MISMATCH.actionButtonLabel }}\n      </gl-button>\n    </template>\n  </state-container>\n</template>\n","import { render, staticRenderFns } from \"./sha_mismatch.vue?vue&type=template&id=6b14be7e\"\nimport script from \"./sha_mismatch.vue?vue&type=script&lang=js\"\nexport * from \"./sha_mismatch.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"failed\",\"is-collapsible\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('gl-button',{staticClass:\"gl-self-start\",attrs:{\"data-testid\":\"action-button\",\"size\":\"small\",\"category\":\"primary\",\"variant\":\"confirm\",\"href\":_vm.mr.mergeRequestDiffsPath}},[_vm._v(\"\\n      \"+_vm._s(_vm.$options.i18n.I18N_SHA_MISMATCH.actionButtonLabel)+\"\\n    \")])]},proxy:true}])},[_c('span',{staticClass:\"!gl-ml-0 gl-grow !gl-text-default md:gl-mr-3\",attrs:{\"data-testid\":\"head-mismatch-content\"}},[_c('bold-text',{attrs:{\"message\":_vm.$options.i18n.I18N_SHA_MISMATCH.warningMessage}})],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!./app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf } from '@gitlab/ui';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport StateContainer from '../state_container.vue';\n\nexport default {\n  components: {\n    GlSprintf,\n    StateContainer,\n    MrSecurityWidget: () =>\n      import('~/vue_merge_request_widget/widgets/security_reports/mr_widget_security_reports.vue'),\n    MrTestReportWidget: () => import('~/vue_merge_request_widget/widgets/test_report/index.vue'),\n    MrTerraformWidget: () => import('~/vue_merge_request_widget/widgets/terraform/index.vue'),\n    MrCodeQualityWidget: () => import('~/vue_merge_request_widget/widgets/code_quality/index.vue'),\n    MrAccessibilityWidget: () =>\n      import('~/vue_merge_request_widget/widgets/accessibility/index.vue'),\n  },\n  mixins: [glFeatureFlagsMixin()],\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      collapsed: this.glFeatures.mrReportsTab,\n    };\n  },\n  computed: {\n    testReportWidget() {\n      return this.mr.testResultsPath && 'MrTestReportWidget';\n    },\n\n    terraformPlansWidget() {\n      return this.mr.terraformReportsPath && 'MrTerraformWidget';\n    },\n\n    codeQualityWidget() {\n      return this.mr.codequalityReportsPath ? 'MrCodeQualityWidget' : undefined;\n    },\n\n    accessibilityWidget() {\n      return this.mr.accessibilityReportPath ? 'MrAccessibilityWidget' : undefined;\n    },\n\n    widgets() {\n      return [\n        this.codeQualityWidget,\n        this.testReportWidget,\n        this.terraformPlansWidget,\n        'MrSecurityWidget',\n        this.accessibilityWidget,\n      ].filter((w) => w);\n    },\n  },\n};\n</script>\n\n<template>\n  <section\n    v-if=\"widgets.length\"\n    role=\"region\"\n    :aria-label=\"__('Merge request reports')\"\n    data-testid=\"mr-widget-app\"\n    class=\"mr-section-container\"\n  >\n    <state-container\n      v-if=\"glFeatures.mrReportsTab\"\n      status=\"success\"\n      is-collapsible\n      collapse-on-desktop\n      :collapsed=\"collapsed\"\n      :expand-details-tooltip=\"__('Expand merge request reports')\"\n      :collapse-details-tooltip=\"__('Collapse merge request reports')\"\n      @toggle=\"collapsed = !collapsed\"\n    >\n      <strong>\n        <gl-sprintf :message=\"__('Merge reports (%{reportsCount}):')\">\n          <template #reportsCount>{{ widgets.length }}</template>\n        </gl-sprintf>\n      </strong>\n    </state-container>\n    <div\n      v-show=\"!collapsed\"\n      data-testid=\"reports-widgets-container\"\n      :class=\"{\n        'gl-border-t gl-relative gl-border-t-section gl-bg-subtle': glFeatures.mrReportsTab,\n      }\"\n    >\n      <component\n        :is=\"widget\"\n        v-for=\"(widget, index) in widgets\"\n        :key=\"widget.name || index\"\n        :mr=\"mr\"\n        class=\"mr-widget-section\"\n        :class=\"{ 'gl-border-t gl-border-t-section': index > 0 }\"\n      />\n    </div>\n  </section>\n</template>\n","import { render, staticRenderFns } from \"./app.vue?vue&type=template&id=1d02caf0\"\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 (_vm.widgets.length)?_c('section',{staticClass:\"mr-section-container\",attrs:{\"role\":\"region\",\"aria-label\":_vm.__('Merge request reports'),\"data-testid\":\"mr-widget-app\"}},[(_vm.glFeatures.mrReportsTab)?_c('state-container',{attrs:{\"status\":\"success\",\"is-collapsible\":\"\",\"collapse-on-desktop\":\"\",\"collapsed\":_vm.collapsed,\"expand-details-tooltip\":_vm.__('Expand merge request reports'),\"collapse-details-tooltip\":_vm.__('Collapse merge request reports')},on:{\"toggle\":function($event){_vm.collapsed = !_vm.collapsed}}},[_c('strong',[_c('gl-sprintf',{attrs:{\"message\":_vm.__('Merge reports (%{reportsCount}):')},scopedSlots:_vm._u([{key:\"reportsCount\",fn:function(){return [_vm._v(_vm._s(_vm.widgets.length))]},proxy:true}],null,false,2947337955)})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.collapsed),expression:\"!collapsed\"}],class:{\n      'gl-border-t gl-relative gl-border-t-section gl-bg-subtle': _vm.glFeatures.mrReportsTab,\n    },attrs:{\"data-testid\":\"reports-widgets-container\"}},_vm._l((_vm.widgets),function(widget,index){return _c(widget,{key:widget.name || index,tag:\"component\",staticClass:\"mr-widget-section\",class:{ 'gl-border-t gl-border-t-section': index > 0 },attrs:{\"mr\":_vm.mr}})}),1)],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!./new_ready_to_merge.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./new_ready_to_merge.vue?vue&type=script&lang=js\"","<script>\nimport mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';\nimport readyToMergeQuery from '../../queries/states/new_ready_to_merge.query.graphql';\nimport StatusIcon from '../mr_widget_status_icon.vue';\n\nexport default {\n  apollo: {\n    canMerge: {\n      query: readyToMergeQuery,\n      skip() {\n        return !this.mr;\n      },\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      update: (data) => data?.project?.mergeRequest?.userPermissions?.canMerge,\n    },\n  },\n  components: {\n    StatusIcon,\n  },\n  mixins: [mergeRequestQueryVariablesMixin],\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      canMerge: null,\n    };\n  },\n};\n</script>\n\n<template>\n  <div class=\"mr-widget-body media\">\n    <status-icon status=\"success\" />\n    <p class=\"media-body !gl-mb-0 gl-mt-1 gl-font-bold !gl-text-default\">\n      <template v-if=\"canMerge\">\n        {{ __('Ready to merge!') }}\n      </template>\n      <template v-else>\n        {{ __('Ready to merge by members who can write to the target branch.') }}\n      </template>\n    </p>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./new_ready_to_merge.vue?vue&type=template&id=4ab12257\"\nimport script from \"./new_ready_to_merge.vue?vue&type=script&lang=js\"\nexport * from \"./new_ready_to_merge.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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-widget-body media\"},[_c('status-icon',{attrs:{\"status\":\"success\"}}),_vm._v(\" \"),_c('p',{staticClass:\"media-body !gl-mb-0 gl-mt-1 gl-font-bold !gl-text-default\"},[(_vm.canMerge)?[_vm._v(\"\\n      \"+_vm._s(_vm.__('Ready to merge!'))+\"\\n    \")]:[_vm._v(\"\\n      \"+_vm._s(_vm.__('Ready to merge by members who can write to the target branch.'))+\"\\n    \")]],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!./merge_checks.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_checks.vue?vue&type=script&lang=js\"","<script>\nimport { GlSkeletonLoader } from '@gitlab/ui';\nimport { __, n__, sprintf } from '~/locale';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport {\n  COMPONENTS,\n  FAILURE_REASONS,\n} from '~/vue_merge_request_widget/components/checks/constants';\nimport mergeRequestQueryVariablesMixin from '../mixins/merge_request_query_variables';\nimport mergeChecksQuery from '../queries/merge_checks.query.graphql';\nimport mergeChecksSubscription from '../queries/merge_checks.subscription.graphql';\nimport StateContainer from './state_container.vue';\nimport BoldText from './bold_text.vue';\n\nexport default {\n  apollo: {\n    state: {\n      query: mergeChecksQuery,\n      skip() {\n        return !this.mr;\n      },\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      update: (data) => data?.project?.mergeRequest,\n      subscribeToMore: {\n        document() {\n          return mergeChecksSubscription;\n        },\n        skip() {\n          return !this.mr?.id;\n        },\n        variables() {\n          return {\n            issuableId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.mr?.id),\n          };\n        },\n        updateQuery(\n          _,\n          {\n            subscriptionData: {\n              data: { mergeRequestMergeStatusUpdated },\n            },\n          },\n        ) {\n          if (mergeRequestMergeStatusUpdated) {\n            this.state = mergeRequestMergeStatusUpdated;\n          }\n        },\n      },\n    },\n  },\n  components: {\n    GlSkeletonLoader,\n    StateContainer,\n    BoldText,\n  },\n  mixins: [mergeRequestQueryVariablesMixin],\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n    service: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      collapsed: true,\n      state: {},\n    };\n  },\n  computed: {\n    isLoading() {\n      return this.$apollo.queries.state.loading;\n    },\n    statusIcon() {\n      if (this.warningChecks.length) {\n        return 'warning';\n      }\n\n      if (this.checkingMergeChecks.length) {\n        return 'loading';\n      }\n\n      return this.failedChecks.length ? 'failed' : 'success';\n    },\n    summaryText() {\n      if (this.warningChecks.length) {\n        return this.state?.userPermissions?.canMerge\n          ? __('%{boldStart}Merge with caution%{boldEnd}: Override added')\n          : __('%{boldStart}Ready to be merged with caution%{boldEnd}: Override added');\n      }\n\n      if (this.checkingMergeChecks.length) {\n        return __('Checking if merge request can be merged...');\n      }\n\n      if (!this.failedChecks.length) {\n        return this.state?.userPermissions?.canMerge\n          ? __('%{boldStart}Ready to merge!%{boldEnd}')\n          : __(\n              '%{boldStart}Ready to merge by members who can write to the target branch.%{boldEnd}',\n            );\n      }\n\n      return sprintf(\n        n__(\n          '%{boldStart}Merge blocked:%{boldEnd} %{count} check failed',\n          '%{boldStart}Merge blocked:%{boldEnd} %{count} checks failed',\n          this.failedChecks.length,\n        ),\n        { count: this.failedChecks.length },\n      );\n    },\n    checks() {\n      return this.state?.mergeabilityChecks || [];\n    },\n    sortedChecks() {\n      const order = ['CHECKING', 'FAILED', 'WARNING', 'SUCCESS'];\n\n      return [...this.checks]\n        .filter((s) => {\n          if (this.isStatusInactive(s) || !this.hasMessage(s)) return false;\n\n          return this.collapsed ? this.isStatusFailed(s) || this.isStatusChecking(s) : true;\n        })\n        .sort((a, b) => order.indexOf(a.status) - order.indexOf(b.status));\n    },\n    checkingMergeChecks() {\n      return this.checks.filter((c) => this.isStatusChecking(c));\n    },\n    failedChecks() {\n      return this.checks.filter((c) => this.isStatusFailed(c));\n    },\n    warningChecks() {\n      return this.checks.filter((c) => this.isStatusWarning(c));\n    },\n    showChecks() {\n      return this.failedChecks.length > 0 || this.checkingMergeChecks.length || !this.collapsed;\n    },\n  },\n  methods: {\n    toggleCollapsed() {\n      this.collapsed = !this.collapsed;\n    },\n    checkComponent(check) {\n      return COMPONENTS[check.identifier.toLowerCase()] || COMPONENTS.default;\n    },\n    hasMessage(check) {\n      return Boolean(FAILURE_REASONS[check.identifier.toLowerCase()]);\n    },\n    isStatusInactive(check) {\n      return check.status === 'INACTIVE';\n    },\n    isStatusFailed(check) {\n      return check.status === 'FAILED';\n    },\n    isStatusWarning(check) {\n      return check.status === 'WARNING';\n    },\n    isStatusChecking(check) {\n      return check.status === 'CHECKING';\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <state-container\n      :is-loading=\"isLoading\"\n      :status=\"statusIcon\"\n      is-collapsible\n      collapse-on-desktop\n      :collapsed=\"collapsed\"\n      :expand-details-tooltip=\"__('Expand merge checks')\"\n      :collapse-details-tooltip=\"__('Collapse merge checks')\"\n      @toggle=\"toggleCollapsed\"\n    >\n      <template v-if=\"isLoading\" #loading>\n        <gl-skeleton-loader :width=\"334\" :height=\"24\">\n          <rect x=\"0\" y=\"0\" width=\"24\" height=\"24\" rx=\"4\" />\n          <rect x=\"32\" y=\"2\" width=\"302\" height=\"20\" rx=\"4\" />\n        </gl-skeleton-loader>\n      </template>\n      <template v-if=\"!isLoading\" #default>\n        <bold-text :message=\"summaryText\" />\n      </template>\n    </state-container>\n    <div\n      v-if=\"showChecks\"\n      class=\"gl-border-t gl-relative gl-border-t-section gl-bg-subtle\"\n      data-testid=\"merge-checks-full\"\n    >\n      <div>\n        <component\n          :is=\"checkComponent(check)\"\n          v-for=\"(check, index) in sortedChecks\"\n          :key=\"index\"\n          class=\"gl-pl-9 gl-pr-4\"\n          :class=\"{\n            'gl-border-b gl-border-b-section': index !== sortedChecks.length - 1,\n          }\"\n          :check=\"check\"\n          :mr=\"mr\"\n          :service=\"service\"\n          data-testid=\"merge-check\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./merge_checks.vue?vue&type=template&id=14c3ecdc\"\nimport script from \"./merge_checks.vue?vue&type=script&lang=js\"\nexport * from \"./merge_checks.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"is-loading\":_vm.isLoading,\"status\":_vm.statusIcon,\"is-collapsible\":\"\",\"collapse-on-desktop\":\"\",\"collapsed\":_vm.collapsed,\"expand-details-tooltip\":_vm.__('Expand merge checks'),\"collapse-details-tooltip\":_vm.__('Collapse merge checks')},on:{\"toggle\":_vm.toggleCollapsed},scopedSlots:_vm._u([(_vm.isLoading)?{key:\"loading\",fn:function(){return [_c('gl-skeleton-loader',{attrs:{\"width\":334,\"height\":24}},[_c('rect',{attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"24\",\"height\":\"24\",\"rx\":\"4\"}}),_vm._v(\" \"),_c('rect',{attrs:{\"x\":\"32\",\"y\":\"2\",\"width\":\"302\",\"height\":\"20\",\"rx\":\"4\"}})])]},proxy:true}:null,(!_vm.isLoading)?{key:\"default\",fn:function(){return [_c('bold-text',{attrs:{\"message\":_vm.summaryText}})]},proxy:true}:null],null,true)}),_vm._v(\" \"),(_vm.showChecks)?_c('div',{staticClass:\"gl-border-t gl-relative gl-border-t-section gl-bg-subtle\",attrs:{\"data-testid\":\"merge-checks-full\"}},[_c('div',_vm._l((_vm.sortedChecks),function(check,index){return _c(_vm.checkComponent(check),{key:index,tag:\"component\",staticClass:\"gl-pl-9 gl-pr-4\",class:{\n          'gl-border-b gl-border-b-section': index !== _vm.sortedChecks.length - 1,\n        },attrs:{\"check\":check,\"mr\":_vm.mr,\"service\":_vm.service,\"data-testid\":\"merge-check\"}})}),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!./mr_widget_options.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.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_options.vue?vue&type=script&lang=js\"","<script>\nimport { isEmpty, clamp } from 'lodash';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport MrWidgetApprovals from 'ee_else_ce/vue_merge_request_widget/components/approvals/approvals.vue';\nimport MRWidgetService from 'ee_else_ce/vue_merge_request_widget/services/mr_widget_service';\nimport MRWidgetStore from 'ee_else_ce/vue_merge_request_widget/stores/mr_widget_store';\nimport { stateToComponentMap as classState } from 'ee_else_ce/vue_merge_request_widget/stores/state_maps';\nimport { createAlert } from '~/alert';\nimport { STATUS_CLOSED, STATUS_MERGED } from '~/issues/constants';\nimport notify from '~/lib/utils/notify';\nimport { sprintf, s__, __ } from '~/locale';\nimport SmartInterval from '~/smart_interval';\nimport { TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants';\nimport { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { setFaviconOverlay } from '~/lib/utils/favicon';\nimport Loading from './components/loading.vue';\nimport MrWidgetAlertMessage from './components/mr_widget_alert_message.vue';\nimport MrWidgetPipelineContainer from './components/mr_widget_pipeline_container.vue';\nimport WidgetSuggestPipeline from './components/mr_widget_suggest_pipeline.vue';\nimport MrWidgetMigrateJenkins from './components/mr_widget_migrate_jenkins.vue';\nimport SourceBranchRemovalStatus from './components/source_branch_removal_status.vue';\nimport ArchivedState from './components/states/mr_widget_archived.vue';\nimport MrWidgetAutoMergeEnabled from './components/states/mr_widget_auto_merge_enabled.vue';\nimport AutoMergeFailed from './components/states/mr_widget_auto_merge_failed.vue';\nimport CheckingState from './components/states/mr_widget_checking.vue';\nimport PreparingState from './components/states/mr_widget_preparing.vue';\nimport ClosedState from './components/states/mr_widget_closed.vue';\nimport FailedToMerge from './components/states/mr_widget_failed_to_merge.vue';\nimport MergedState from './components/states/mr_widget_merged.vue';\nimport MergingState from './components/states/mr_widget_merging.vue';\nimport MissingBranchState from './components/states/mr_widget_missing_branch.vue';\nimport NothingToMergeState from './components/states/nothing_to_merge.vue';\nimport ReadyToMergeState from './components/states/ready_to_merge.vue';\nimport ShaMismatch from './components/states/sha_mismatch.vue';\nimport WidgetContainer from './components/widget/app.vue';\nimport {\n  STATE_MACHINE,\n  stateToComponentMap,\n  STATE_QUERY_POLLING_INTERVAL_DEFAULT,\n  STATE_QUERY_POLLING_INTERVAL_BACKOFF,\n  FOUR_MINUTES_IN_MS,\n} from './constants';\nimport eventHub from './event_hub';\nimport mergeRequestQueryVariablesMixin from './mixins/merge_request_query_variables';\nimport getStateQuery from './queries/get_state.query.graphql';\nimport getStateSubscription from './queries/get_state.subscription.graphql';\nimport MrWidgetReadyToMerge from './components/states/new_ready_to_merge.vue';\nimport MergeChecks from './components/merge_checks.vue';\n\nexport default {\n  // False positive i18n lint: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/25\n  // eslint-disable-next-line @gitlab/require-i18n-strings\n  name: 'MRWidget',\n  directives: {\n    SafeHtml,\n  },\n  components: {\n    Loading,\n    WidgetContainer,\n    MrWidgetSuggestPipeline: WidgetSuggestPipeline,\n    MrWidgetMigrateJenkins,\n    MrWidgetPipelineContainer,\n    MrWidgetAlertMessage,\n    MrWidgetMerged: MergedState,\n    MrWidgetClosed: ClosedState,\n    MrWidgetMerging: MergingState,\n    MrWidgetFailedToMerge: FailedToMerge,\n    MrWidgetArchived: ArchivedState,\n    MrWidgetNothingToMerge: NothingToMergeState,\n    MrWidgetMissingBranch: MissingBranchState,\n    MrWidgetReadyToMerge,\n    ShaMismatch,\n    MrWidgetChecking: CheckingState,\n    MrWidgetPreparing: PreparingState,\n    MrWidgetAutoMergeEnabled,\n    MrWidgetAutoMergeFailed: AutoMergeFailed,\n    SourceBranchRemovalStatus,\n    MrWidgetApprovals,\n    ReadyToMerge: ReadyToMergeState,\n    MergeChecks,\n  },\n  apollo: {\n    state: {\n      query: getStateQuery,\n      notifyOnNetworkStatusChange: true,\n      manual: true,\n      skip() {\n        return !this.mr;\n      },\n      variables() {\n        return this.mergeRequestQueryVariables;\n      },\n      pollInterval() {\n        return this.pollInterval;\n      },\n      result(response) {\n        // 7 is the value for when the network status is ready\n        if (response.networkStatus !== 7) return;\n\n        this.pollInterval = this.apolloStateQueryPollingInterval;\n\n        if (response.data?.project) {\n          this.mr.setGraphqlData(response.data.project);\n          this.loading = false;\n        }\n\n        this.checkStatus(undefined, undefined, false);\n      },\n      error() {\n        this.pollInterval = null;\n      },\n      subscribeToMore: {\n        document() {\n          return getStateSubscription;\n        },\n        skip() {\n          return !this.mr?.id || this.loading;\n        },\n        variables() {\n          return {\n            issuableId: convertToGraphQLId(TYPENAME_MERGE_REQUEST, this.mr?.id),\n          };\n        },\n        updateQuery(\n          _,\n          {\n            subscriptionData: {\n              data: { mergeRequestMergeStatusUpdated },\n            },\n          },\n        ) {\n          if (mergeRequestMergeStatusUpdated) {\n            this.mr.setGraphqlSubscriptionData(mergeRequestMergeStatusUpdated);\n          }\n        },\n      },\n    },\n  },\n  mixins: [mergeRequestQueryVariablesMixin],\n  props: {\n    mrData: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    const store = this.mrData && new MRWidgetStore(this.mrData);\n\n    return {\n      mr: store,\n      state: store && store.state,\n      service: store && this.createService(store),\n      machineState: store?.machineValue || STATE_MACHINE.definition.initial,\n      loading: true,\n      recomputeComponentName: 0,\n      issuableId: false,\n      startingPollInterval: STATE_QUERY_POLLING_INTERVAL_DEFAULT,\n      pollInterval: STATE_QUERY_POLLING_INTERVAL_DEFAULT,\n    };\n  },\n  computed: {\n    apolloStateQueryMaxPollingInterval() {\n      return this.startingPollInterval + FOUR_MINUTES_IN_MS;\n    },\n    apolloStateQueryPollingInterval() {\n      if (this.startingPollInterval < 0) {\n        return 0;\n      }\n\n      const unboundedInterval = STATE_QUERY_POLLING_INTERVAL_BACKOFF * this.pollInterval;\n\n      return clamp(\n        unboundedInterval,\n        this.startingPollInterval,\n        this.apolloStateQueryMaxPollingInterval,\n      );\n    },\n    shouldRenderApprovals() {\n      return !['preparing', 'nothingToMerge'].includes(this.mr.state);\n    },\n    componentName() {\n      return stateToComponentMap[this.machineState] || classState[this.mr.state];\n    },\n    hasPipelineMustSucceedConflict() {\n      return !this.mr.hasCI && this.mr.onlyAllowMergeIfPipelineSucceeds;\n    },\n    shouldRenderPipelines() {\n      return this.mr.hasCI || this.hasPipelineMustSucceedConflict;\n    },\n    shouldSuggestPipelines() {\n      const { hasCI, mergeRequestAddCiConfigPath, isDismissedSuggestPipeline } = this.mr;\n\n      return !hasCI && mergeRequestAddCiConfigPath && !isDismissedSuggestPipeline;\n    },\n    showRenderMigrateFromJenkins() {\n      const { hasCI, isDismissedJenkinsMigration, ciIntegrationJenkins } = this.mr;\n\n      return hasCI && !isDismissedJenkinsMigration && ciIntegrationJenkins;\n    },\n    shouldRenderCollaborationStatus() {\n      return this.mr.allowCollaboration && this.mr.isOpen;\n    },\n    shouldRenderMergedPipeline() {\n      return this.mr.state === STATUS_MERGED && !isEmpty(this.mr.mergePipeline);\n    },\n    showMergePipelineForkWarning() {\n      return Boolean(\n        this.mr.mergePipelinesEnabled && this.mr.sourceProjectId !== this.mr.targetProjectId,\n      );\n    },\n    showManageStorageDocsLink() {\n      return this.mr.mergeError?.includes(__('Your namespace storage is full'));\n    },\n    mergeError() {\n      let { mergeError } = this.mr;\n\n      if (this.showManageStorageDocsLink) return mergeError;\n\n      if (mergeError && mergeError.slice(-1) === '.') {\n        mergeError = mergeError.slice(0, -1);\n      }\n\n      return sprintf(\n        s__('mrWidget|%{mergeError}. Try again.'),\n        {\n          mergeError,\n        },\n        false,\n      );\n    },\n    formattedHumanAccess() {\n      return (this.mr.humanAccess || '').toLowerCase();\n    },\n    hasMergeError() {\n      return this.mr.mergeError && this.state !== STATUS_CLOSED;\n    },\n    hasAlerts() {\n      return this.hasMergeError || this.showMergePipelineForkWarning;\n    },\n    mergeBlockedComponentVisible() {\n      return !(\n        [\n          'checking',\n          'preparing',\n          'nothingToMerge',\n          'archived',\n          'missingBranch',\n          'merged',\n          'closed',\n          'merging',\n          'shaMismatch',\n        ].includes(this.mr.state) || this.mr.machineValue === 'MERGING'\n      );\n    },\n    autoMergeEnabled() {\n      return this.mr.autoMergeEnabled;\n    },\n  },\n  watch: {\n    'mr.machineValue': {\n      handler(newValue) {\n        this.machineState = newValue;\n      },\n    },\n    state(newVal, oldVal) {\n      if (newVal !== oldVal && this.shouldRenderMergedPipeline) {\n        // init polling\n        this.initPostMergeDeploymentsPolling();\n      }\n    },\n    'mr.ciStatus': {\n      handler(newValue) {\n        if (!newValue || this.loading) return;\n\n        this.handleNotification();\n      },\n    },\n  },\n  mounted() {\n    MRWidgetService.fetchInitialData()\n      .then(({ data, headers }) => {\n        this.startingPollInterval =\n          Number(headers['POLL-INTERVAL']) || STATE_QUERY_POLLING_INTERVAL_DEFAULT;\n        this.initWidget(data);\n      })\n      .catch(() =>\n        createAlert({\n          message: __('Unable to load the merge request widget. Try reloading the page.'),\n        }),\n      );\n  },\n  beforeDestroy() {\n    this.unbindEventListeners();\n\n    if (this.deploymentsInterval) {\n      this.deploymentsInterval.destroy();\n    }\n\n    if (this.postMergeDeploymentsInterval) {\n      this.postMergeDeploymentsInterval.destroy();\n    }\n  },\n  methods: {\n    initWidget(data = {}) {\n      if (this.mr) {\n        this.mr.setData({ ...window.gl.mrWidgetData, ...data });\n      } else {\n        this.mr = new MRWidgetStore({ ...window.gl.mrWidgetData, ...data });\n      }\n\n      this.machineState = this.mr.machineValue;\n\n      if (!this.state) {\n        this.state = this.mr.state;\n      }\n\n      if (!this.service) {\n        this.service = this.createService(this.mr);\n      }\n\n      this.setFaviconHelper();\n      this.initDeploymentsPolling();\n\n      if (this.shouldRenderMergedPipeline) {\n        this.initPostMergeDeploymentsPolling();\n      }\n\n      this.bindEventHubListeners();\n      eventHub.$on('mr.discussion.updated', this.checkStatus);\n    },\n    getServiceEndpoints(store) {\n      return {\n        mergePath: store.mergePath,\n        mergeCheckPath: store.mergeCheckPath,\n        cancelAutoMergePath: store.cancelAutoMergePath,\n        removeWIPPath: store.removeWIPPath,\n        sourceBranchPath: store.sourceBranchPath,\n        ciEnvironmentsStatusPath: store.ciEnvironmentsStatusPath,\n        mergeRequestBasicPath: store.mergeRequestBasicPath,\n        mergeRequestWidgetPath: store.mergeRequestWidgetPath,\n        mergeRequestCachedWidgetPath: store.mergeRequestCachedWidgetPath,\n        mergeActionsContentPath: store.mergeActionsContentPath,\n        rebasePath: store.rebasePath,\n        apiApprovalsPath: store.apiApprovalsPath,\n        apiApprovePath: store.apiApprovePath,\n        apiUnapprovePath: store.apiUnapprovePath,\n      };\n    },\n    createService(store) {\n      return new MRWidgetService(this.getServiceEndpoints(store));\n    },\n    checkStatus(cb, isRebased, refetch = true) {\n      if (refetch) {\n        this.$apollo.queries.state.refetch();\n      }\n\n      return this.service\n        .checkStatus()\n        .then(({ data }) => {\n          if (!Object.keys(data).length) return;\n\n          this.mr.setData(data, isRebased);\n          this.setFaviconHelper();\n\n          if (cb) {\n            cb.call(null, data);\n          }\n        })\n        .catch(() =>\n          createAlert({\n            message: __('Something went wrong. Please try again.'),\n          }),\n        );\n    },\n    setFaviconHelper() {\n      if (this.mr.faviconOverlayPath) {\n        return setFaviconOverlay(this.mr.faviconOverlayPath);\n      }\n      return Promise.resolve();\n    },\n    initDeploymentsPolling() {\n      this.deploymentsInterval = this.deploymentsPoll(this.fetchPreMergeDeployments);\n    },\n    initPostMergeDeploymentsPolling() {\n      this.postMergeDeploymentsInterval = this.deploymentsPoll(this.fetchPostMergeDeployments);\n    },\n    deploymentsPoll(callback) {\n      return new SmartInterval({\n        callback,\n        startingInterval: 30 * 1000,\n        maxInterval: 240 * 1000,\n        incrementByFactorOf: 4,\n        immediateExecution: true,\n      });\n    },\n    fetchDeployments(target) {\n      return this.service.fetchDeployments(target);\n    },\n    fetchPreMergeDeployments() {\n      return this.fetchDeployments()\n        .then(({ data }) => {\n          if (data.length) {\n            this.mr.deployments = data;\n          }\n        })\n        .catch(() => this.throwDeploymentsError());\n    },\n    fetchPostMergeDeployments() {\n      return this.fetchDeployments('merge_commit')\n        .then(({ data }) => {\n          if (data.length) {\n            this.mr.postMergeDeployments = data;\n          }\n        })\n        .catch(() => this.throwDeploymentsError());\n    },\n    throwDeploymentsError() {\n      createAlert({\n        message: __(\n          'Something went wrong while fetching the environments for this merge request. Please try again.',\n        ),\n      });\n    },\n    fetchActionsContent() {\n      this.service\n        .fetchMergeActionsContent()\n        .then((res) => {\n          if (res.data) {\n            const el = document.createElement('div');\n            // eslint-disable-next-line no-unsanitized/property\n            el.innerHTML = res.data;\n            document.body.appendChild(el);\n            document.dispatchEvent(new CustomEvent('merged:UpdateActions'));\n          }\n        })\n        .catch(() =>\n          createAlert({\n            message: __('Something went wrong. Please try again.'),\n          }),\n        );\n    },\n    handleNotification() {\n      const { pipeline } = this.mr;\n\n      if (!pipeline || !Object.keys(pipeline).length) return;\n\n      const { label } = pipeline.details.status;\n      const title = sprintf(__('Pipeline %{label}'), { label });\n      const message = sprintf(__('Pipeline %{label} for \"%{dataTitle}\"'), {\n        dataTitle: this.mr.title,\n        label,\n      });\n\n      notify.notifyMe(title, message, this.mr.gitlabLogo);\n    },\n    resumePolling() {\n      this.$apollo.queries.state.startPolling(this.pollInterval);\n    },\n    stopPolling() {\n      this.$apollo.queries.state.stopPolling();\n    },\n    checkRebasedStatus(cb) {\n      this.checkStatus(cb, true);\n    },\n    setIsRemovingSourceBranch([value]) {\n      this.mr.isRemovingSourceBranch = value;\n    },\n    setMergeError(mergeError) {\n      this.mr.state = 'failedToMerge';\n      this.mr.mergeError = mergeError;\n    },\n    setMrData(data) {\n      this.mr.setData(data);\n    },\n    onFetchDeployments() {\n      this.fetchPreMergeDeployments();\n      if (this.shouldRenderMergedPipeline) {\n        this.fetchPostMergeDeployments();\n      }\n    },\n    bindEventHubListeners() {\n      eventHub.$on('MRWidgetUpdateRequested', this.checkStatus);\n      eventHub.$on('MRWidgetRebaseSuccess', this.checkRebasedStatus);\n      eventHub.$on('SetBranchRemoveFlag', this.setIsRemovingSourceBranch);\n      eventHub.$on('FailedToMerge', this.setMergeError);\n      eventHub.$on('UpdateWidgetData', this.setMrData);\n      eventHub.$on('FetchActionsContent', this.fetchActionsContent);\n      eventHub.$on('EnablePolling', this.resumePolling);\n      eventHub.$on('DisablePolling', this.stopPolling);\n      eventHub.$on('FetchDeployments', this.onFetchDeployments);\n    },\n    unbindEventListeners() {\n      eventHub.$off('MRWidgetUpdateRequested', this.checkStatus);\n      eventHub.$off('MRWidgetRebaseSuccess', this.checkRebasedStatus);\n      eventHub.$off('SetBranchRemoveFlag', this.setIsRemovingSourceBranch);\n      eventHub.$off('FailedToMerge', this.setMergeError);\n      eventHub.$off('UpdateWidgetData', this.setMrData);\n      eventHub.$off('FetchActionsContent', this.fetchActionsContent);\n      eventHub.$off('EnablePolling', this.resumePolling);\n      eventHub.$off('DisablePolling', this.stopPolling);\n      eventHub.$off('FetchDeployments', this.onFetchDeployments);\n      eventHub.$off('mr.discussion.updated', this.checkStatus);\n    },\n    dismissSuggestPipelines() {\n      this.mr.isDismissedSuggestPipeline = true;\n    },\n    dismissMigrateFromJenkins() {\n      this.mr.isDismissedJenkinsMigration = true;\n    },\n  },\n};\n</script>\n<template>\n  <div v-if=\"!loading\" id=\"widget-state\" class=\"mr-state-widget gl-mt-5\">\n    <header v-if=\"shouldRenderCollaborationStatus\" class=\"mr-section-container gl-overflow-hidden\">\n      <mr-widget-alert-message type=\"info\">\n        {{ s__('mrWidget|Members who can merge are allowed to add commits.') }}\n      </mr-widget-alert-message>\n    </header>\n    <mr-widget-suggest-pipeline\n      v-if=\"shouldSuggestPipelines\"\n      :pipeline-path=\"mr.mergeRequestAddCiConfigPath\"\n      :pipeline-svg-path=\"mr.pipelinesEmptySvgPath\"\n      :human-access=\"formattedHumanAccess\"\n      :user-callouts-path=\"mr.userCalloutsPath\"\n      :user-callout-feature-id=\"mr.suggestPipelineFeatureId\"\n      @dismiss=\"dismissSuggestPipelines\"\n    />\n    <mr-widget-migrate-jenkins\n      v-if=\"showRenderMigrateFromJenkins\"\n      class=\"mr-widget-workflow\"\n      :human-access=\"formattedHumanAccess\"\n      :path=\"mr.userCalloutsPath\"\n      :feature-id=\"mr.migrateJenkinsFeatureId\"\n      @dismiss=\"dismissMigrateFromJenkins\"\n    />\n    <mr-widget-pipeline-container\n      v-if=\"shouldRenderPipelines\"\n      :mr=\"mr\"\n      data-testid=\"pipeline-container\"\n    />\n    <mr-widget-approvals v-if=\"shouldRenderApprovals\" :mr=\"mr\" :service=\"service\" />\n    <widget-container :mr=\"mr\" />\n    <div class=\"mr-section-container\">\n      <template v-if=\"hasAlerts\">\n        <mr-widget-alert-message\n          v-if=\"hasMergeError\"\n          type=\"danger\"\n          dismissible\n          data-testid=\"merge-error\"\n          class=\"mr-widget-section gl-rounded-b-none gl-border-b-section\"\n        >\n          <span>{{ mergeError }}</span>\n        </mr-widget-alert-message>\n        <mr-widget-alert-message\n          v-if=\"showMergePipelineForkWarning\"\n          type=\"warning\"\n          :help-path=\"mr.mergeRequestPipelinesHelpPath\"\n          class=\"mr-widget-section gl-rounded-b-none gl-border-b-section\"\n          data-testid=\"merge-pipeline-fork-warning\"\n        >\n          {{\n            s__(\n              'mrWidget|If the last pipeline ran in the fork project, it may be inaccurate. Before merge, we advise running a pipeline in this project.',\n            )\n          }}\n          <template #link-content>\n            {{ __('Learn more') }}\n          </template>\n        </mr-widget-alert-message>\n      </template>\n\n      <div class=\"mr-widget-section\" data-testid=\"mr-widget-content\">\n        <template v-if=\"mergeBlockedComponentVisible\">\n          <mr-widget-auto-merge-enabled\n            v-if=\"autoMergeEnabled\"\n            :mr=\"mr\"\n            :service=\"service\"\n            class=\"gl-border-b gl-border-b-section\"\n          />\n          <merge-checks :mr=\"mr\" :service=\"service\" />\n        </template>\n        <component :is=\"componentName\" v-else :mr=\"mr\" :service=\"service\" />\n        <ready-to-merge v-if=\"mr.commitsCount\" :mr=\"mr\" :service=\"service\" />\n      </div>\n    </div>\n    <mr-widget-pipeline-container\n      v-if=\"shouldRenderMergedPipeline\"\n      class=\"js-post-merge-pipeline\"\n      :mr=\"mr\"\n      is-post-merge\n      data-testid=\"merged-pipeline-container\"\n    />\n  </div>\n  <loading v-else />\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_options.vue?vue&type=template&id=578c78b9\"\nimport script from \"./mr_widget_options.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_options.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.loading)?_c('div',{staticClass:\"mr-state-widget gl-mt-5\",attrs:{\"id\":\"widget-state\"}},[(_vm.shouldRenderCollaborationStatus)?_c('header',{staticClass:\"mr-section-container gl-overflow-hidden\"},[_c('mr-widget-alert-message',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.s__('mrWidget|Members who can merge are allowed to add commits.'))+\"\\n    \")])],1):_vm._e(),_vm._v(\" \"),(_vm.shouldSuggestPipelines)?_c('mr-widget-suggest-pipeline',{attrs:{\"pipeline-path\":_vm.mr.mergeRequestAddCiConfigPath,\"pipeline-svg-path\":_vm.mr.pipelinesEmptySvgPath,\"human-access\":_vm.formattedHumanAccess,\"user-callouts-path\":_vm.mr.userCalloutsPath,\"user-callout-feature-id\":_vm.mr.suggestPipelineFeatureId},on:{\"dismiss\":_vm.dismissSuggestPipelines}}):_vm._e(),_vm._v(\" \"),(_vm.showRenderMigrateFromJenkins)?_c('mr-widget-migrate-jenkins',{staticClass:\"mr-widget-workflow\",attrs:{\"human-access\":_vm.formattedHumanAccess,\"path\":_vm.mr.userCalloutsPath,\"feature-id\":_vm.mr.migrateJenkinsFeatureId},on:{\"dismiss\":_vm.dismissMigrateFromJenkins}}):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderPipelines)?_c('mr-widget-pipeline-container',{attrs:{\"mr\":_vm.mr,\"data-testid\":\"pipeline-container\"}}):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderApprovals)?_c('mr-widget-approvals',{attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}):_vm._e(),_vm._v(\" \"),_c('widget-container',{attrs:{\"mr\":_vm.mr}}),_vm._v(\" \"),_c('div',{staticClass:\"mr-section-container\"},[(_vm.hasAlerts)?[(_vm.hasMergeError)?_c('mr-widget-alert-message',{staticClass:\"mr-widget-section gl-rounded-b-none gl-border-b-section\",attrs:{\"type\":\"danger\",\"dismissible\":\"\",\"data-testid\":\"merge-error\"}},[_c('span',[_vm._v(_vm._s(_vm.mergeError))])]):_vm._e(),_vm._v(\" \"),(_vm.showMergePipelineForkWarning)?_c('mr-widget-alert-message',{staticClass:\"mr-widget-section gl-rounded-b-none gl-border-b-section\",attrs:{\"type\":\"warning\",\"help-path\":_vm.mr.mergeRequestPipelinesHelpPath,\"data-testid\":\"merge-pipeline-fork-warning\"},scopedSlots:_vm._u([{key:\"link-content\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.__('Learn more'))+\"\\n        \")]},proxy:true}],null,false,3123720884)},[_vm._v(\"\\n        \"+_vm._s(_vm.s__(\n            'mrWidget|If the last pipeline ran in the fork project, it may be inaccurate. Before merge, we advise running a pipeline in this project.',\n          ))+\"\\n        \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"mr-widget-section\",attrs:{\"data-testid\":\"mr-widget-content\"}},[(_vm.mergeBlockedComponentVisible)?[(_vm.autoMergeEnabled)?_c('mr-widget-auto-merge-enabled',{staticClass:\"gl-border-b gl-border-b-section\",attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}):_vm._e(),_vm._v(\" \"),_c('merge-checks',{attrs:{\"mr\":_vm.mr,\"service\":_vm.service}})]:_c(_vm.componentName,{tag:\"component\",attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}),_vm._v(\" \"),(_vm.mr.commitsCount)?_c('ready-to-merge',{attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}):_vm._e()],2)],2),_vm._v(\" \"),(_vm.shouldRenderMergedPipeline)?_c('mr-widget-pipeline-container',{staticClass:\"js-post-merge-pipeline\",attrs:{\"mr\":_vm.mr,\"is-post-merge\":\"\",\"data-testid\":\"merged-pipeline-container\"}}):_vm._e()],1):_c('loading')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { s__ } from '~/locale';\nimport StateContainer from '~/vue_merge_request_widget/components/state_container.vue';\nimport BoldText from '~/vue_merge_request_widget/components/bold_text.vue';\n\nconst message = s__(\n  'mrWidget|%{boldStart}Merge blocked:%{boldEnd} a Jira issue key must be mentioned in the title or description.',\n);\n\nexport default {\n  name: 'MrWidgetJiraAssociationMissing',\n  message,\n  components: {\n    BoldText,\n    StateContainer,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <state-container status=\"failed\" is-collapsible>\n    <bold-text :message=\"$options.message\" />\n  </state-container>\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_widget_jira_association_missing.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.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_jira_association_missing.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_jira_association_missing.vue?vue&type=template&id=17446cb8\"\nimport script from \"./mr_widget_jira_association_missing.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_jira_association_missing.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"failed\",\"is-collapsible\":\"\"}},[_c('bold-text',{attrs:{\"message\":_vm.$options.message}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { s__ } from '~/locale';\nimport StateContainer from '~/vue_merge_request_widget/components/state_container.vue';\nimport BoldText from '~/vue_merge_request_widget/components/bold_text.vue';\n\nconst message = s__(\n  'mrWidget|%{boldStart}Merge blocked:%{boldEnd} denied licenses must be removed.',\n);\n\nexport default {\n  name: 'MRWidgetPolicyViolation',\n  message,\n  components: {\n    BoldText,\n    StateContainer,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <state-container status=\"failed\" is-collapsible>\n    <bold-text :message=\"$options.message\" />\n  </state-container>\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_widget_policy_violation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.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_policy_violation.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_policy_violation.vue?vue&type=template&id=492ed97f\"\nimport script from \"./mr_widget_policy_violation.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_policy_violation.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"failed\",\"is-collapsible\":\"\"}},[_c('bold-text',{attrs:{\"message\":_vm.$options.message}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlTooltipDirective } from '@gitlab/ui';\nimport { s__ } from '~/locale';\nimport StateContainer from '~/vue_merge_request_widget/components/state_container.vue';\nimport BoldText from '~/vue_merge_request_widget/components/bold_text.vue';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\n\nconst message = s__(\n  'mrWidget|%{boldStart}Merge unavailable:%{boldEnd} merge requests are read-only in a secondary Geo node.',\n);\n\nexport default {\n  message,\n  components: {\n    BoldText,\n    HelpIcon,\n    StateContainer,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    mr: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <state-container status=\"failed\" is-collapsible>\n    <bold-text :message=\"$options.message\" />\n    <a\n      v-gl-tooltip\n      class=\"gl-ml-2\"\n      :href=\"mr.geoSecondaryHelpPath\"\n      :title=\"__('About this feature')\"\n      target=\"_blank\"\n      rel=\"noopener noreferrer nofollow\"\n    >\n      <help-icon />\n    </a>\n  </state-container>\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_widget_secondary_geo_node.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.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_secondary_geo_node.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./mr_widget_secondary_geo_node.vue?vue&type=template&id=2acebeb6\"\nimport script from \"./mr_widget_secondary_geo_node.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_secondary_geo_node.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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('state-container',{attrs:{\"status\":\"failed\",\"is-collapsible\":\"\"}},[_c('bold-text',{attrs:{\"message\":_vm.$options.message}}),_vm._v(\" \"),_c('a',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-ml-2\",attrs:{\"href\":_vm.mr.geoSecondaryHelpPath,\"title\":_vm.__('About this feature'),\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\"}},[_c('help-icon')],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!./app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"","<script>\nimport CEWidgetApp from '~/vue_merge_request_widget/components/widget/app.vue';\n\nexport default {\n  components: {\n    MrBrowserPerformanceWidget: () =>\n      import('ee/vue_merge_request_widget/widgets/browser_performance/index.vue'),\n    MrLoadPerformanceWidget: () =>\n      import('ee/vue_merge_request_widget/widgets/load_performance/index.vue'),\n    MrMetricsWidget: () => import('ee/vue_merge_request_widget/widgets/metrics/index.vue'),\n    MrSecurityWidgetEE: () =>\n      import('ee/vue_merge_request_widget/widgets/security_reports/mr_widget_security_reports.vue'),\n    MrSecurityWidgetCE: () =>\n      import('~/vue_merge_request_widget/widgets/security_reports/mr_widget_security_reports.vue'),\n    MrStatusChecksWidget: () =>\n      import('ee/vue_merge_request_widget/widgets/status_checks/index.vue'),\n    MrLicenseComplianceWidget: () =>\n      import('ee/vue_merge_request_widget/widgets/license_compliance/index.vue'),\n  },\n\n  extends: CEWidgetApp,\n\n  computed: {\n    licenseComplianceWidget() {\n      return this.mr?.enabledReports?.licenseScanning ? 'MrLicenseComplianceWidget' : undefined;\n    },\n\n    browserPerformanceWidget() {\n      return this.mr.browserPerformance ? 'MrBrowserPerformanceWidget' : undefined;\n    },\n\n    loadPerformanceWidget() {\n      return this.mr.loadPerformance ? 'MrLoadPerformanceWidget' : undefined;\n    },\n\n    metricsWidget() {\n      return this.mr.metricsReportsPath ? 'MrMetricsWidget' : undefined;\n    },\n\n    statusChecksWidget() {\n      return this.mr.apiStatusChecksPath && !this.mr.isNothingToMergeState\n        ? 'MrStatusChecksWidget'\n        : undefined;\n    },\n\n    securityReportsWidget() {\n      return this.mr.canReadVulnerabilities ? 'MrSecurityWidgetEE' : 'MrSecurityWidgetCE';\n    },\n\n    widgets() {\n      return [\n        this.licenseComplianceWidget,\n        this.codeQualityWidget,\n        this.browserPerformanceWidget,\n        this.loadPerformanceWidget,\n        this.testReportWidget,\n        this.metricsWidget,\n        this.statusChecksWidget,\n        this.terraformPlansWidget,\n        this.securityReportsWidget,\n        this.accessibilityWidget,\n      ].filter((w) => w);\n    },\n  },\n\n  render: CEWidgetApp.render,\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./app.vue?vue&type=script&lang=js\"\nexport * from \"./app.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mr_widget_options.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_options.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlLink } from '@gitlab/ui';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { s__ } from '~/locale';\nimport reportsMixin from 'ee/vue_shared/security_reports/mixins/reports_mixin';\nimport CEWidgetOptions from '~/vue_merge_request_widget/mr_widget_options.vue';\nimport MrWidgetAlertMessage from '~/vue_merge_request_widget/components/mr_widget_alert_message.vue';\nimport MrWidgetSuggestPipeline from '~/vue_merge_request_widget/components/mr_widget_suggest_pipeline.vue';\nimport MrWidgetPipelineContainer from '~/vue_merge_request_widget/components/mr_widget_pipeline_container.vue';\nimport MrWidgetApprovals from 'ee_else_ce/vue_merge_request_widget/components/approvals/approvals.vue';\nimport MrWidgetMigrateJenkins from '~/vue_merge_request_widget/components/mr_widget_migrate_jenkins.vue';\nimport MrWidgetAutoMergeEnabled from '~/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue';\nimport MergeChecks from '~/vue_merge_request_widget/components/merge_checks.vue';\nimport ReadyToMerge from '~/vue_merge_request_widget/components/states/ready_to_merge.vue';\nimport Loading from '~/vue_merge_request_widget/components/loading.vue';\nimport MrWidgetJiraAssociationMissing from './components/states/mr_widget_jira_association_missing.vue';\nimport MrWidgetPolicyViolation from './components/states/mr_widget_policy_violation.vue';\nimport MrWidgetGeoSecondaryNode from './components/states/mr_widget_secondary_geo_node.vue';\nimport WidgetContainer from './components/widget/app.vue';\n\nexport default {\n  components: {\n    GlSprintf,\n    GlLink,\n    WidgetContainer,\n    MrWidgetGeoSecondaryNode,\n    MrWidgetPolicyViolation,\n    MrWidgetJiraAssociationMissing,\n    MrWidgetAlertMessage,\n    MrWidgetSuggestPipeline,\n    MrWidgetMigrateJenkins,\n    MrWidgetPipelineContainer,\n    MrWidgetApprovals,\n    MrWidgetAutoMergeEnabled,\n    Loading,\n    MergeChecks,\n    ReadyToMerge,\n    BlockingMergeRequestsReport: () =>\n      import('./components/blocking_merge_requests/blocking_merge_requests_report.vue'),\n  },\n  manageStorageDocsMsg: s__(\n    'mrWidget|To continue, %{docLinkStart}manage your storage usage%{docLinkEnd}.',\n  ),\n  manageStorageDocsLink: helpPagePath('user/storage_usage_quotas'),\n  directives: {\n    SafeHtml,\n  },\n  extends: CEWidgetOptions,\n  mixins: [reportsMixin],\n  methods: {\n    getServiceEndpoints(store) {\n      const base = CEWidgetOptions.methods.getServiceEndpoints(store);\n\n      return {\n        ...base,\n        apiApprovalSettingsPath: store.apiApprovalSettingsPath,\n      };\n    },\n  },\n};\n</script>\n<template>\n  <div v-if=\"!loading\" id=\"widget-state\" class=\"mr-state-widget gl-mt-5\">\n    <header v-if=\"shouldRenderCollaborationStatus\" class=\"mr-section-container gl-overflow-hidden\">\n      <mr-widget-alert-message type=\"info\">\n        {{ s__('mrWidget|Members who can merge are allowed to add commits.') }}\n      </mr-widget-alert-message>\n    </header>\n    <mr-widget-suggest-pipeline\n      v-if=\"shouldSuggestPipelines\"\n      class=\"mr-section-container\"\n      :pipeline-path=\"mr.mergeRequestAddCiConfigPath\"\n      :pipeline-svg-path=\"mr.pipelinesEmptySvgPath\"\n      :human-access=\"formattedHumanAccess\"\n      :user-callouts-path=\"mr.userCalloutsPath\"\n      :user-callout-feature-id=\"mr.suggestPipelineFeatureId\"\n      @dismiss=\"dismissSuggestPipelines\"\n    />\n    <mr-widget-migrate-jenkins\n      v-if=\"showRenderMigrateFromJenkins\"\n      class=\"mr-widget-workflow\"\n      :human-access=\"formattedHumanAccess\"\n      @dismiss=\"dismissMigrateFromJenkins\"\n    />\n    <mr-widget-pipeline-container\n      v-if=\"shouldRenderPipelines\"\n      :mr=\"mr\"\n      data-testid=\"pipeline-container\"\n    />\n    <mr-widget-approvals v-if=\"shouldRenderApprovals\" :mr=\"mr\" :service=\"service\" />\n    <widget-container v-if=\"mr\" :mr=\"mr\" />\n    <div class=\"mr-section-container\">\n      <template v-if=\"hasAlerts\">\n        <mr-widget-alert-message\n          v-if=\"hasMergeError\"\n          type=\"danger\"\n          dismissible\n          data-testid=\"merge-error\"\n          class=\"mr-widget-section gl-rounded-b-none gl-border-b-section\"\n        >\n          <span>{{ mergeError }}</span>\n\n          <gl-sprintf v-if=\"showManageStorageDocsLink\" :message=\"$options.manageStorageDocsMsg\">\n            <template #docLink=\"{ content }\">\n              <gl-link :href=\"$options.manageStorageDocsLink\" target=\"_blank\">\n                {{ content }}\n              </gl-link>\n            </template>\n          </gl-sprintf>\n        </mr-widget-alert-message>\n        <mr-widget-alert-message\n          v-if=\"showMergePipelineForkWarning\"\n          type=\"warning\"\n          :help-path=\"mr.mergeRequestPipelinesHelpPath\"\n          class=\"mr-widget-section gl-rounded-b-none gl-border-b-section\"\n          data-testid=\"merge-pipeline-fork-warning\"\n        >\n          {{\n            s__(\n              'mrWidget|If the last pipeline ran in the fork project, it may be inaccurate. Before merge, we advise running a pipeline in this project.',\n            )\n          }}\n          <template #link-content>\n            {{ __('Learn more') }}\n          </template>\n        </mr-widget-alert-message>\n      </template>\n      <blocking-merge-requests-report class=\"gl-border-b gl-border-b-section\" :mr=\"mr\" />\n\n      <div class=\"mr-widget-section\">\n        <template v-if=\"mergeBlockedComponentVisible\">\n          <mr-widget-auto-merge-enabled\n            v-if=\"autoMergeEnabled\"\n            :mr=\"mr\"\n            :service=\"service\"\n            class=\"gl-border-b gl-border-b-section\"\n          />\n          <merge-checks :mr=\"mr\" :service=\"service\" />\n        </template>\n        <component :is=\"componentName\" v-else :mr=\"mr\" :service=\"service\" />\n        <ready-to-merge v-if=\"mr.commitsCount\" :mr=\"mr\" :service=\"service\" />\n      </div>\n    </div>\n    <mr-widget-pipeline-container\n      v-if=\"shouldRenderMergedPipeline\"\n      class=\"js-post-merge-pipeline\"\n      data-testid=\"merged-pipeline-container\"\n      :mr=\"mr\"\n      is-post-merge\n    />\n  </div>\n  <loading v-else />\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_options.vue?vue&type=template&id=229c140a\"\nimport script from \"./mr_widget_options.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_options.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.loading)?_c('div',{staticClass:\"mr-state-widget gl-mt-5\",attrs:{\"id\":\"widget-state\"}},[(_vm.shouldRenderCollaborationStatus)?_c('header',{staticClass:\"mr-section-container gl-overflow-hidden\"},[_c('mr-widget-alert-message',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.s__('mrWidget|Members who can merge are allowed to add commits.'))+\"\\n    \")])],1):_vm._e(),_vm._v(\" \"),(_vm.shouldSuggestPipelines)?_c('mr-widget-suggest-pipeline',{staticClass:\"mr-section-container\",attrs:{\"pipeline-path\":_vm.mr.mergeRequestAddCiConfigPath,\"pipeline-svg-path\":_vm.mr.pipelinesEmptySvgPath,\"human-access\":_vm.formattedHumanAccess,\"user-callouts-path\":_vm.mr.userCalloutsPath,\"user-callout-feature-id\":_vm.mr.suggestPipelineFeatureId},on:{\"dismiss\":_vm.dismissSuggestPipelines}}):_vm._e(),_vm._v(\" \"),(_vm.showRenderMigrateFromJenkins)?_c('mr-widget-migrate-jenkins',{staticClass:\"mr-widget-workflow\",attrs:{\"human-access\":_vm.formattedHumanAccess},on:{\"dismiss\":_vm.dismissMigrateFromJenkins}}):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderPipelines)?_c('mr-widget-pipeline-container',{attrs:{\"mr\":_vm.mr,\"data-testid\":\"pipeline-container\"}}):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderApprovals)?_c('mr-widget-approvals',{attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}):_vm._e(),_vm._v(\" \"),(_vm.mr)?_c('widget-container',{attrs:{\"mr\":_vm.mr}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"mr-section-container\"},[(_vm.hasAlerts)?[(_vm.hasMergeError)?_c('mr-widget-alert-message',{staticClass:\"mr-widget-section gl-rounded-b-none gl-border-b-section\",attrs:{\"type\":\"danger\",\"dismissible\":\"\",\"data-testid\":\"merge-error\"}},[_c('span',[_vm._v(_vm._s(_vm.mergeError))]),_vm._v(\" \"),(_vm.showManageStorageDocsLink)?_c('gl-sprintf',{attrs:{\"message\":_vm.$options.manageStorageDocsMsg},scopedSlots:_vm._u([{key:\"docLink\",fn:function({ content }){return [_c('gl-link',{attrs:{\"href\":_vm.$options.manageStorageDocsLink,\"target\":\"_blank\"}},[_vm._v(\"\\n              \"+_vm._s(content)+\"\\n            \")])]}}],null,false,2081334429)}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showMergePipelineForkWarning)?_c('mr-widget-alert-message',{staticClass:\"mr-widget-section gl-rounded-b-none gl-border-b-section\",attrs:{\"type\":\"warning\",\"help-path\":_vm.mr.mergeRequestPipelinesHelpPath,\"data-testid\":\"merge-pipeline-fork-warning\"},scopedSlots:_vm._u([{key:\"link-content\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.__('Learn more'))+\"\\n        \")]},proxy:true}],null,false,3123720884)},[_vm._v(\"\\n        \"+_vm._s(_vm.s__(\n            'mrWidget|If the last pipeline ran in the fork project, it may be inaccurate. Before merge, we advise running a pipeline in this project.',\n          ))+\"\\n        \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('blocking-merge-requests-report',{staticClass:\"gl-border-b gl-border-b-section\",attrs:{\"mr\":_vm.mr}}),_vm._v(\" \"),_c('div',{staticClass:\"mr-widget-section\"},[(_vm.mergeBlockedComponentVisible)?[(_vm.autoMergeEnabled)?_c('mr-widget-auto-merge-enabled',{staticClass:\"gl-border-b gl-border-b-section\",attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}):_vm._e(),_vm._v(\" \"),_c('merge-checks',{attrs:{\"mr\":_vm.mr,\"service\":_vm.service}})]:_c(_vm.componentName,{tag:\"component\",attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}),_vm._v(\" \"),(_vm.mr.commitsCount)?_c('ready-to-merge',{attrs:{\"mr\":_vm.mr,\"service\":_vm.service}}):_vm._e()],2)],2),_vm._v(\" \"),(_vm.shouldRenderMergedPipeline)?_c('mr-widget-pipeline-container',{staticClass:\"js-post-merge-pipeline\",attrs:{\"data-testid\":\"merged-pipeline-container\",\"mr\":_vm.mr,\"is-post-merge\":\"\"}}):_vm._e()],1):_c('loading')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport MrWidgetOptions from 'any_else_ce/vue_merge_request_widget/mr_widget_options.vue';\nimport createDefaultClient from '~/lib/graphql';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport Translate from '../vue_shared/translate';\n\nVue.use(Translate);\nVue.use(VueApollo);\n\nconst apolloProvider = new VueApollo({\n  defaultClient: createDefaultClient(\n    {},\n    {\n      cacheConfig: {\n        typePolicies: {\n          MergeRequestApprovalState: {\n            merge: true,\n          },\n        },\n      },\n    },\n  ),\n});\n\nexport default () => {\n  if (gl.mrWidget) return;\n\n  gl.mrWidgetData.gitlabLogo = gon.gitlab_logo;\n  gl.mrWidgetData.defaultAvatarUrl = gon.default_avatar_url;\n\n  const dismissalDescriptions = JSON.parse(gl.mrWidgetData.dismissal_descriptions || '{}');\n\n  // This is a false violation of @gitlab/no-runtime-template-compiler, since it\n  // creates a new Vue instance by spreading a _valid_ Vue component definition\n  // into the Vue constructor.\n  // eslint-disable-next-line @gitlab/no-runtime-template-compiler\n  const vm = new Vue({\n    el: '#js-vue-mr-widget',\n    provide: {\n      artifactsEndpoint: gl.mrWidgetData.artifacts_endpoint,\n      artifactsEndpointPlaceholder: gl.mrWidgetData.artifacts_endpoint_placeholder,\n      falsePositiveDocUrl: gl.mrWidgetData.false_positive_doc_url,\n      canViewFalsePositive: parseBoolean(gl.mrWidgetData.can_view_false_positive),\n      canCreatePipelineInTargetProject: parseBoolean(\n        gl.mrWidgetData.can_create_pipeline_in_target_project,\n      ),\n      commitPathTemplate: gl.mrWidgetData.commit_path_template,\n      dismissalDescriptions,\n    },\n    ...MrWidgetOptions,\n    apolloProvider,\n  });\n\n  window.gl.mrWidget = {\n    checkStatus: vm.checkStatus,\n  };\n};\n","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapState, mapGetters } from 'vuex';\nimport { apolloProvider } from '~/graphql_shared/issuable_client';\n\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport { parseBoolean } from '~/lib/utils/common_utils';\nimport store from '~/mr_notes/stores';\nimport notesEventHub from '~/notes/event_hub';\nimport discussionNavigator from '../notes/components/discussion_navigator.vue';\nimport NotesApp from '../notes/components/notes_app.vue';\nimport { getNotesFilterData } from '../notes/utils/get_notes_filter_data';\nimport initWidget from '../vue_merge_request_widget';\n\nexport default () => {\n  requestIdleCallback(\n    () => {\n      renderGFM(document.getElementById('diff-notes-app'));\n    },\n    { timeout: 500 },\n  );\n\n  const el = document.getElementById('js-vue-mr-discussions');\n  if (!el) {\n    return;\n  }\n\n  Vue.use(VueApollo);\n\n  const notesFilterProps = getNotesFilterData(el);\n  const notesDataset = el.dataset;\n\n  // eslint-disable-next-line no-new\n  new Vue({\n    el,\n    name: 'MergeRequestDiscussions',\n    components: {\n      NotesApp,\n    },\n    store,\n    apolloProvider,\n    provide: {\n      reportAbusePath: notesDataset.reportAbusePath,\n      newCommentTemplatePaths: JSON.parse(notesDataset.newCommentTemplatePaths),\n      mrFilter: true,\n      newCustomEmojiPath: notesDataset.newCustomEmojiPath,\n    },\n    data() {\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\n      return {\n        noteableData,\n        endpoints: {\n          metadata: notesDataset.endpointMetadata,\n        },\n        notesData: JSON.parse(notesDataset.notesData),\n        helpPagePath: notesDataset.helpPagePath,\n      };\n    },\n    computed: {\n      ...mapGetters(['isNotesFetched']),\n      ...mapState({\n        activeTab: (state) => state.page.activeTab,\n      }),\n      isShowTabActive() {\n        return this.activeTab === 'show';\n      },\n    },\n    watch: {\n      isShowTabActive: {\n        handler(newVal) {\n          if (newVal) {\n            initWidget();\n          }\n        },\n        immediate: true,\n      },\n    },\n    created() {\n      this.setEndpoints(this.endpoints);\n\n      if (!this.isNotesFetched) {\n        notesEventHub.$emit('fetchNotesData');\n      }\n\n      this.fetchMrMetadata();\n    },\n    methods: {\n      ...mapActions(['setEndpoints', 'fetchMrMetadata']),\n    },\n    render(createElement) {\n      // NOTE: Even though `discussionNavigator` is added to the `notes-app`,\n      // it adds a global key listener so it works on the diffs tab as well.\n      // If we create a single Vue app for all of the MR tabs, we should move this\n      // up the tree, to the root.\n      return createElement(discussionNavigator, [\n        createElement('notes-app', {\n          props: {\n            noteableData: this.noteableData,\n            notesData: this.notesData,\n            userData: this.currentUserData,\n            shouldShow: this.isShowTabActive,\n            helpPagePath: this.helpPagePath,\n            ...notesFilterProps,\n          },\n        }),\n      ]);\n    },\n  });\n};\n","import initNotes from './init_notes';\n\n// this module is required for the EE functions to work properly with merge request tabs\nexport default () => {\n  initNotes();\n};\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","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","import { convertToGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_GROUP, TYPENAME_USER } from '~/graphql_shared/constants';\nimport { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';\nimport { defaultClient } from 'ee/vue_shared/security_configuration/graphql/provider';\nimport { POLICY_TYPE_COMPONENT_OPTIONS } from './components/constants';\nimport { GROUP_TYPE, ROLE_TYPE, USER_TYPE } from './constants';\n\n/**\n * Get a property from a policy's typename\n * @param {String} typeName policy's typename from GraphQL\n * @param {String} field\n * @returns {String|null} policy property if available\n */\nexport const getPolicyType = (typeName = '', field = 'value') => {\n  return Object.values(POLICY_TYPE_COMPONENT_OPTIONS).find(\n    (component) => component.typeName === typeName,\n  )?.[field];\n};\n\n/**\n * Separate existing approvers by type\n * @param {Array} existingApprovers all approvers\n * @returns {Object} approvers separated by type\n */\nexport const decomposeApprovers = (existingApprovers) => {\n  return existingApprovers.map((approvers) => {\n    const output = {};\n\n    const { users = [], groups = [], roles = [] } = approvers;\n\n    const hasUsers = users.length > 0;\n    const hasGroups = groups.length > 0;\n    const hasRoles = roles.length > 0;\n\n    if (hasRoles) {\n      output[ROLE_TYPE] = approvers.roles || [];\n    }\n\n    if (hasUsers) {\n      output[USER_TYPE] =\n        approvers.users\n          .map((user) => ({\n            ...user,\n            type: USER_TYPE,\n            value: convertToGraphQLId(TYPENAME_USER, user.id),\n          }))\n          .map(convertObjectPropsToCamelCase) || [];\n    }\n\n    if (hasGroups) {\n      output[GROUP_TYPE] =\n        approvers.groups\n          .map((group) => ({\n            ...group,\n            type: GROUP_TYPE,\n            value: convertToGraphQLId(TYPENAME_GROUP, group.id),\n          }))\n          .map(convertObjectPropsToCamelCase) || [];\n    }\n\n    return output;\n  });\n};\n\n/**\n * Removes initial line dashes from a policy YAML that is received from the API, which\n * is not required for the user.\n * @param {String} manifest the policy from the API request\n * @returns {String} the policy without the initial dashes or the initial string\n */\nexport const removeUnnecessaryDashes = (manifest) => {\n  return manifest.replace('---\\n', '');\n};\n\n/**\n * Create GraphQL Client for security policies\n */\nexport const gqClient = defaultClient;\n\n/**\n * Transforms a key-value mapping into an array of objects suitable for use with\n * GlCollapsibleListbox component.\n *\n * @param {Object} textMap - An object where keys represent values and values represent display text.\n * @returns {Array<Object>} An array of objects, each containing 'value' and 'text' properties.\n *\n * @example\n * const mapping = { 'key1': 'Text 1', 'key2': 'Text 2' };\n * const listBoxItems = mapToListboxItems(mapping);\n * // returns: [{ value: 'key1', text: 'Text 1' }, { value: 'key2', text: 'Text 2' }]\n */\n\nexport const mapToListboxItems = (textMap) =>\n  Object.entries(textMap).map(([value, text]) => ({\n    value,\n    text,\n  }));\n","import { calculateRemainingMilliseconds, formatTime } from '~/lib/utils/datetime_utility';\n\nexport default {\n  data() {\n    return {\n      remainingTime: formatTime(0),\n      remainingTimeIntervalId: null,\n    };\n  },\n\n  mounted() {\n    this.startRemainingTimeInterval();\n  },\n\n  beforeDestroy() {\n    if (this.remainingTimeIntervalId) {\n      clearInterval(this.remainingTimeIntervalId);\n    }\n  },\n\n  computed: {\n    isDelayedJob() {\n      return this.job?.scheduled || this.job?.scheduledAt;\n    },\n    scheduledTime() {\n      return this.job.scheduled_at || this.job.scheduledAt;\n    },\n  },\n\n  watch: {\n    isDelayedJob() {\n      this.startRemainingTimeInterval();\n    },\n  },\n\n  methods: {\n    startRemainingTimeInterval() {\n      if (this.remainingTimeIntervalId) {\n        clearInterval(this.remainingTimeIntervalId);\n      }\n\n      if (this.isDelayedJob) {\n        this.updateRemainingTime();\n        this.remainingTimeIntervalId = setInterval(() => this.updateRemainingTime(), 1000);\n      }\n    },\n\n    updateRemainingTime() {\n      const remainingMilliseconds = calculateRemainingMilliseconds(this.scheduledTime);\n      this.remainingTime = formatTime(remainingMilliseconds);\n    },\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-button-group',{staticClass:\"js-comment-button js-comment-submit-button comment-type-dropdown gl-mb-3 gl-w-full sm:gl-mb-0 sm:gl-w-auto\",attrs:{\"data-track-label\":_vm.trackingLabel,\"data-track-action\":\"click_button\",\"data-testid\":\"comment-button\"}},[_c('gl-button',{attrs:{\"type\":\"submit\",\"variant\":\"confirm\",\"disabled\":_vm.disabled},on:{\"click\":_vm.handleClick}},[_vm._v(\"\\n    \"+_vm._s(_vm.commentButtonTitle)+\"\\n  \")]),_vm._v(\" \"),_c('gl-collapsible-listbox',{attrs:{\"variant\":\"confirm\",\"text-sr-only\":\"\",\"toggle-text\":_vm.$options.i18n.toggleSrText,\"disabled\":_vm.disabled,\"items\":_vm.dropdownItems,\"selected\":_vm.noteType},on:{\"select\":_vm.setNoteType},scopedSlots:_vm._u([{key:\"list-item\",fn:function({ item }){return [_c('div',{attrs:{\"data-testid\":item.testid}},[_c('strong',[_vm._v(_vm._s(item.text))]),_vm._v(\" \"),_c('p',{staticClass:\"gl-m-0\"},[_vm._v(_vm._s(item.description))])])]}}])})],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!./comment_type_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!./comment_type_dropdown.vue?vue&type=script&lang=js\"","<script>\nimport { GlButtonGroup, GlButton, GlCollapsibleListbox } from '@gitlab/ui';\n\nimport { sprintf, __ } from '~/locale';\nimport { COMMENT_FORM } from '~/notes/i18n';\nimport * as constants from '../constants';\n\nexport default {\n  name: 'CommentTypeDropdown',\n  i18n: {\n    ...COMMENT_FORM,\n    toggleSrText: __('Comment type'),\n  },\n  components: {\n    GlButtonGroup,\n    GlButton,\n    GlCollapsibleListbox,\n  },\n  model: {\n    prop: 'noteType',\n    event: 'change',\n  },\n  props: {\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    trackingLabel: {\n      type: String,\n      required: false,\n      default: undefined,\n    },\n    discussionsRequireResolution: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isInternalNote: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    noteableDisplayName: {\n      type: String,\n      required: true,\n    },\n    noteType: {\n      type: String,\n      required: true,\n    },\n    isReviewDropdown: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    isNoteTypeComment() {\n      return this.noteType === constants.COMMENT;\n    },\n    isNoteTypeDiscussion() {\n      return this.noteType === constants.DISCUSSION;\n    },\n    dropdownCommentButtonTitle() {\n      const { comment, internalComment } = this.$options.i18n.submitButton;\n\n      return this.isInternalNote ? internalComment : comment;\n    },\n    dropdownStartThreadButtonTitle() {\n      const { startThread, startInternalThread } = this.$options.i18n.submitButton;\n\n      return this.isInternalNote ? startInternalThread : startThread;\n    },\n    commentButtonTitle() {\n      const { comment, internalComment, startThread, startInternalThread } = this.$options.i18n;\n      const { saveThread, saveComment } = this.$options.i18n.addToReviewButton;\n\n      if (this.isInternalNote) {\n        return this.noteType === constants.COMMENT ? internalComment : startInternalThread;\n      }\n\n      if (this.isReviewDropdown) {\n        return this.noteType === constants.COMMENT ? saveComment : saveThread;\n      }\n\n      return this.noteType === constants.COMMENT ? comment : startThread;\n    },\n    startDiscussionDescription() {\n      const {\n        discussionThatNeedsResolution,\n        internalDiscussionThatNeedsResolution,\n        discussion,\n        internalDiscussion,\n      } = this.$options.i18n;\n\n      if (this.isInternalNote) {\n        return this.discussionsRequireResolution\n          ? internalDiscussionThatNeedsResolution\n          : internalDiscussion;\n      }\n      return this.discussionsRequireResolution ? discussionThatNeedsResolution : discussion;\n    },\n    commentDescription() {\n      const { commentHelp, internalCommentHelp } = this.$options.i18n.submitButton;\n\n      return sprintf(this.isInternalNote ? internalCommentHelp : commentHelp, {\n        noteableDisplayName: this.noteableDisplayName,\n      });\n    },\n    dropdownItems() {\n      return [\n        {\n          text: this.dropdownCommentButtonTitle,\n          description: this.commentDescription,\n          value: constants.COMMENT,\n        },\n        {\n          text: this.dropdownStartThreadButtonTitle,\n          description: this.startDiscussionDescription,\n          value: constants.DISCUSSION,\n          testid: 'discussion-menu-item',\n        },\n      ];\n    },\n  },\n  methods: {\n    handleClick() {\n      this.$emit('click');\n    },\n    setNoteType(value) {\n      this.$emit('change', value);\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-button-group\n    class=\"js-comment-button js-comment-submit-button comment-type-dropdown gl-mb-3 gl-w-full sm:gl-mb-0 sm:gl-w-auto\"\n    :data-track-label=\"trackingLabel\"\n    data-track-action=\"click_button\"\n    data-testid=\"comment-button\"\n  >\n    <gl-button type=\"submit\" variant=\"confirm\" :disabled=\"disabled\" @click=\"handleClick\">\n      {{ commentButtonTitle }}\n    </gl-button>\n    <gl-collapsible-listbox\n      variant=\"confirm\"\n      text-sr-only\n      :toggle-text=\"$options.i18n.toggleSrText\"\n      :disabled=\"disabled\"\n      :items=\"dropdownItems\"\n      :selected=\"noteType\"\n      @select=\"setNoteType\"\n    >\n      <template #list-item=\"{ item }\">\n        <div :data-testid=\"item.testid\">\n          <strong>{{ item.text }}</strong>\n          <p class=\"gl-m-0\">{{ item.description }}</p>\n        </div>\n      </template>\n    </gl-collapsible-listbox>\n  </gl-button-group>\n</template>\n","import { render, staticRenderFns } from \"./comment_type_dropdown.vue?vue&type=template&id=63ac1d67\"\nimport script from \"./comment_type_dropdown.vue?vue&type=script&lang=js\"\nexport * from \"./comment_type_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-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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"labels-select-wrapper gl-relative\",class:{\n    'is-standalone': _vm.isDropdownVariantStandalone(_vm.variant),\n    'is-embedded': _vm.isDropdownVariantEmbedded(_vm.variant),\n  },attrs:{\"data-testid\":\"sidebar-labels\"}},[(_vm.isDropdownVariantSidebar(_vm.variant))?[_c('sidebar-editable-item',{ref:\"editable\",attrs:{\"title\":_vm.__('Labels'),\"edit-tooltip\":_vm.labelTooltip,\"edit-aria-label\":_vm.labelShortcutDescription,\"edit-keyshortcuts\":_vm.labelShortcutKey,\"loading\":_vm.isLoading,\"can-edit\":_vm.allowLabelEdit},on:{\"open\":function($event){_vm.oldIid = null}},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_c('dropdown-value',{staticClass:\"gl-pt-2\",attrs:{\"disable-labels\":_vm.labelsSelectInProgress,\"selected-labels\":_vm.issuableLabels,\"allow-label-remove\":_vm.allowLabelRemove,\"supports-lock-on-merge\":_vm.isLockOnMergeSupported,\"labels-filter-base-path\":_vm.labelsFilterBasePath,\"labels-filter-param\":_vm.labelsFilterParam},on:{\"onLabelRemove\":_vm.handleLabelRemove,\"onCollapsedValueClick\":_vm.handleCollapsedValueClick}},[_vm._t(\"default\")],2)]},proxy:true},{key:\"default\",fn:function({ edit }){return [_c('dropdown-value',{staticClass:\"gl-mb-2\",attrs:{\"disable-labels\":_vm.labelsSelectInProgress,\"selected-labels\":_vm.issuableLabels,\"allow-label-remove\":_vm.allowLabelRemove,\"supports-lock-on-merge\":_vm.isLockOnMergeSupported,\"labels-filter-base-path\":_vm.labelsFilterBasePath,\"labels-filter-param\":_vm.labelsFilterParam},on:{\"onLabelRemove\":_vm.handleLabelRemove}},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('dropdown-contents',{ref:\"dropdownContents\",staticClass:\"gl-mt-3 gl-w-full\",attrs:{\"dropdown-button-text\":_vm.dropdownButtonText,\"allow-multiselect\":_vm.allowMultiselect,\"labels-list-title\":_vm.labelsListTitle,\"footer-create-label-title\":_vm.footerCreateLabelTitle,\"footer-manage-label-title\":_vm.footerManageLabelTitle,\"labels-create-title\":_vm.labelsCreateTitle,\"selected-labels\":_vm.issuableLabels,\"variant\":_vm.variant,\"is-visible\":edit,\"full-path\":_vm.fullPath,\"workspace-type\":_vm.workspaceType,\"attr-workspace-path\":_vm.attrWorkspacePath,\"label-create-type\":_vm.labelCreateType},on:{\"setLabels\":_vm.handleDropdownClose,\"closeDropdown\":_vm.collapseEditableItem}})]}}],null,true)})]:[_c('dropdown-contents',{ref:\"dropdownContents\",staticClass:\"issuable-form-select-holder\",attrs:{\"dropdown-button-text\":_vm.dropdownButtonText,\"allow-multiselect\":_vm.allowMultiselect,\"labels-list-title\":_vm.labelsListTitle,\"footer-create-label-title\":_vm.footerCreateLabelTitle,\"footer-manage-label-title\":_vm.footerManageLabelTitle,\"labels-create-title\":_vm.labelsCreateTitle,\"selected-labels\":_vm.issuableLabels,\"variant\":_vm.variant,\"full-path\":_vm.fullPath,\"workspace-type\":_vm.workspaceType,\"attr-workspace-path\":_vm.attrWorkspacePath,\"label-create-type\":_vm.labelCreateType},on:{\"setLabels\":_vm.handleDropdownClose}}),_vm._v(\" \"),(_vm.isLabelListEnabled)?_c('embedded-labels-list',{attrs:{\"disabled\":_vm.labelsSelectInProgress,\"selected-labels\":_vm.issuableLabels,\"allow-label-remove\":_vm.allowLabelRemove,\"supports-lock-on-merge\":_vm.isLockOnMergeSupported,\"labels-filter-base-path\":_vm.labelsFilterBasePath,\"labels-filter-param\":_vm.labelsFilterParam},on:{\"onLabelRemove\":_vm.handleLabelRemove}}):_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!./dropdown_contents_labels_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!./dropdown_contents_labels_view.vue?vue&type=script&lang=js\"","<script>\nimport { GlDropdownItem, GlLoadingIcon, GlIntersectionObserver } from '@gitlab/ui';\nimport fuzzaldrinPlus from 'fuzzaldrin-plus';\nimport { createAlert } from '~/alert';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { __ } from '~/locale';\nimport { workspaceLabelsQueries } from '../../../queries/constants';\nimport LabelItem from './label_item.vue';\n\nexport default {\n  components: {\n    GlDropdownItem,\n    GlLoadingIcon,\n    GlIntersectionObserver,\n    LabelItem,\n  },\n  model: {\n    prop: 'localSelectedLabels',\n  },\n  props: {\n    allowMultiselect: {\n      type: Boolean,\n      required: true,\n    },\n    localSelectedLabels: {\n      type: Array,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    searchKey: {\n      type: String,\n      required: true,\n    },\n    workspaceType: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      labels: [],\n      isVisible: false,\n    };\n  },\n  apollo: {\n    labels: {\n      query() {\n        return workspaceLabelsQueries[this.workspaceType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          searchTerm: this.searchKey,\n        };\n      },\n      skip() {\n        return this.searchKey.length === 1 || !this.isVisible;\n      },\n      update: (data) => data.workspace?.labels?.nodes || [],\n      error() {\n        createAlert({ message: __('Error fetching labels.') });\n      },\n    },\n  },\n  computed: {\n    labelsFetchInProgress() {\n      return this.$apollo.queries.labels.loading;\n    },\n    localSelectedLabelsIds() {\n      return this.localSelectedLabels.map((label) => getIdFromGraphQLId(label.id));\n    },\n    visibleLabels() {\n      if (this.searchKey) {\n        return fuzzaldrinPlus.filter(this.labels, this.searchKey, {\n          key: ['title'],\n        });\n      }\n      return this.labels;\n    },\n    showNoMatchingResultsMessage() {\n      return Boolean(this.searchKey) && this.visibleLabels.length === 0;\n    },\n    shouldHighlightFirstItem() {\n      return this.searchKey !== '' && this.visibleLabels.length > 0;\n    },\n  },\n  methods: {\n    isLabelSelected(label) {\n      return this.localSelectedLabelsIds.includes(getIdFromGraphQLId(label.id));\n    },\n    /**\n     * This method scrolls item from dropdown into\n     * the view if it is off the viewable area of the\n     * container.\n     */\n    scrollIntoViewIfNeeded() {\n      const highlightedLabel = this.$refs.labelsListContainer.querySelector('.is-focused');\n\n      if (highlightedLabel) {\n        const container = this.$refs.labelsListContainer.getBoundingClientRect();\n        const label = highlightedLabel.getBoundingClientRect();\n\n        if (label.bottom > container.bottom) {\n          this.$refs.labelsListContainer.scrollTop += label.bottom - container.bottom;\n        } else if (label.top < container.top) {\n          this.$refs.labelsListContainer.scrollTop -= container.top - label.top;\n        }\n      }\n    },\n    updateSelectedLabels(label) {\n      let labels;\n      if (this.isLabelSelected(label)) {\n        labels = this.localSelectedLabels.filter(\n          ({ id }) => id !== getIdFromGraphQLId(label.id) && id !== label.id,\n        );\n      } else {\n        labels = [...this.localSelectedLabels, label];\n      }\n      this.$emit('input', labels);\n    },\n    handleLabelClick(label) {\n      this.updateSelectedLabels(label);\n      if (!this.allowMultiselect) {\n        this.$emit('closeDropdown', this.localSelectedLabels);\n      }\n    },\n    onDropdownAppear() {\n      this.isVisible = true;\n    },\n    selectFirstItem() {\n      if (this.shouldHighlightFirstItem) {\n        this.handleLabelClick(this.visibleLabels[0]);\n      }\n    },\n    handleFocus(event, index) {\n      if (index === 0 && event.target.classList.contains('is-focused')) {\n        event.target.classList.remove('is-focused');\n\n        // Focus next element (if available) as the first item was already focused.\n        if (event.target.parentNode?.nextElementSibling?.querySelector('button')) {\n          event.target.parentNode.nextElementSibling.querySelector('button').focus();\n        }\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-intersection-observer @appear=\"onDropdownAppear\">\n    <div class=\"js-labels-list\">\n      <div ref=\"labelsListContainer\" data-testid=\"dropdown-content\">\n        <gl-loading-icon\n          v-if=\"labelsFetchInProgress\"\n          class=\"labels-fetch-loading gl-mb-3 gl-h-full gl-w-full gl-items-center\"\n          size=\"sm\"\n        />\n        <template v-else>\n          <gl-dropdown-item\n            v-for=\"(label, index) in visibleLabels\"\n            :key=\"label.id\"\n            :is-checked=\"isLabelSelected(label)\"\n            is-check-item\n            :active=\"shouldHighlightFirstItem && index === 0\"\n            active-class=\"is-focused\"\n            data-testid=\"labels-list\"\n            @focus.capture.native=\"handleFocus($event, index)\"\n            @click.capture.native.stop=\"handleLabelClick(label)\"\n          >\n            <label-item :label=\"label\" />\n          </gl-dropdown-item>\n          <gl-dropdown-item\n            v-show=\"showNoMatchingResultsMessage\"\n            class=\"gl-p-3 gl-text-center\"\n            data-testid=\"no-results\"\n          >\n            {{ __('No matching results') }}\n          </gl-dropdown-item>\n        </template>\n      </div>\n    </div>\n  </gl-intersection-observer>\n</template>\n","import { render, staticRenderFns } from \"./dropdown_contents_labels_view.vue?vue&type=template&id=c7ae369c\"\nimport script from \"./dropdown_contents_labels_view.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown_contents_labels_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('gl-intersection-observer',{on:{\"appear\":_vm.onDropdownAppear}},[_c('div',{staticClass:\"js-labels-list\"},[_c('div',{ref:\"labelsListContainer\",attrs:{\"data-testid\":\"dropdown-content\"}},[(_vm.labelsFetchInProgress)?_c('gl-loading-icon',{staticClass:\"labels-fetch-loading gl-mb-3 gl-h-full gl-w-full gl-items-center\",attrs:{\"size\":\"sm\"}}):[_vm._l((_vm.visibleLabels),function(label,index){return _c('gl-dropdown-item',{key:label.id,attrs:{\"is-checked\":_vm.isLabelSelected(label),\"is-check-item\":\"\",\"active\":_vm.shouldHighlightFirstItem && index === 0,\"active-class\":\"is-focused\",\"data-testid\":\"labels-list\"},nativeOn:{\"!focus\":function($event){return _vm.handleFocus($event, index)},\"!click\":function($event){$event.stopPropagation();return _vm.handleLabelClick(label)}}},[_c('label-item',{attrs:{\"label\":label}})],1)}),_vm._v(\" \"),_c('gl-dropdown-item',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showNoMatchingResultsMessage),expression:\"showNoMatchingResultsMessage\"}],staticClass:\"gl-p-3 gl-text-center\",attrs:{\"data-testid\":\"no-results\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.__('No matching results'))+\"\\n        \")])]],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VARIANT_EMBEDDED, VARIANT_SIDEBAR, VARIANT_STANDALONE } from './constants';\n\n/**\n * Returns boolean representing whether dropdown variant\n * is `sidebar`\n * @param {string} variant\n */\nexport const isDropdownVariantSidebar = (variant) => variant === VARIANT_SIDEBAR;\n\n/**\n * Returns boolean representing whether dropdown variant\n * is `standalone`\n * @param {string} variant\n */\nexport const isDropdownVariantStandalone = (variant) => variant === VARIANT_STANDALONE;\n\n/**\n * Returns boolean representing whether dropdown variant\n * is `embedded`\n * @param {string} variant\n */\nexport const isDropdownVariantEmbedded = (variant) => variant === VARIANT_EMBEDDED;\n","<script>\nimport { GlButton, GlDropdown, GlDropdownItem, GlLink } from '@gitlab/ui';\nimport { debounce } from 'lodash';\nimport { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';\nimport { __, s__, sprintf } from '~/locale';\nimport DropdownContentsCreateView from './dropdown_contents_create_view.vue';\nimport DropdownContentsLabelsView from './dropdown_contents_labels_view.vue';\nimport DropdownFooter from './dropdown_footer.vue';\nimport DropdownHeader from './dropdown_header.vue';\nimport { isDropdownVariantStandalone, isDropdownVariantSidebar } from './utils';\n\nexport default {\n  components: {\n    DropdownContentsLabelsView,\n    DropdownContentsCreateView,\n    DropdownHeader,\n    DropdownFooter,\n    GlButton,\n    GlDropdown,\n    GlDropdownItem,\n    GlLink,\n  },\n  inject: {\n    toggleAttrs: {\n      default: () => ({}),\n    },\n  },\n  props: {\n    labelsCreateTitle: {\n      type: String,\n      required: true,\n    },\n    selectedLabels: {\n      type: Array,\n      required: true,\n    },\n    allowMultiselect: {\n      type: Boolean,\n      required: true,\n    },\n    labelsListTitle: {\n      type: String,\n      required: true,\n    },\n    dropdownButtonText: {\n      type: String,\n      required: true,\n    },\n    footerCreateLabelTitle: {\n      type: String,\n      required: true,\n    },\n    footerManageLabelTitle: {\n      type: String,\n      required: true,\n    },\n    variant: {\n      type: String,\n      required: true,\n    },\n    isVisible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    workspaceType: {\n      type: String,\n      required: true,\n    },\n    attrWorkspacePath: {\n      type: String,\n      required: true,\n    },\n    labelCreateType: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      showDropdownContentsCreateView: false,\n      localSelectedLabels: [...this.selectedLabels],\n      isDirty: false,\n      searchKey: '',\n    };\n  },\n  computed: {\n    dropdownContentsView() {\n      if (this.showDropdownContentsCreateView) {\n        return 'dropdown-contents-create-view';\n      }\n      return 'dropdown-contents-labels-view';\n    },\n    dropdownTitle() {\n      return this.showDropdownContentsCreateView ? this.labelsCreateTitle : this.labelsListTitle;\n    },\n    buttonText() {\n      if (!this.localSelectedLabels.length) {\n        return this.dropdownButtonText || __('Label');\n      }\n      if (this.localSelectedLabels.length > 1) {\n        return sprintf(s__('LabelSelect|%{firstLabelName} +%{remainingLabelCount} more'), {\n          firstLabelName: this.localSelectedLabels[0].title,\n          remainingLabelCount: this.localSelectedLabels.length - 1,\n        });\n      }\n      return this.localSelectedLabels[0].title;\n    },\n    showDropdownFooter() {\n      return !this.showDropdownContentsCreateView && !this.isStandalone;\n    },\n    isStandalone() {\n      return isDropdownVariantStandalone(this.variant);\n    },\n    isSidebar() {\n      return isDropdownVariantSidebar(this.variant);\n    },\n  },\n  watch: {\n    localSelectedLabels: {\n      handler() {\n        this.isDirty = true;\n      },\n      deep: true,\n    },\n    isVisible(newVal) {\n      if (newVal) {\n        this.$refs.dropdown.show();\n        this.isDirty = false;\n        this.localSelectedLabels = this.selectedLabels;\n      } else {\n        this.$refs.dropdown.hide();\n        this.setLabels();\n      }\n    },\n    selectedLabels(newVal) {\n      if (!this.isDirty || !this.isSidebar) {\n        this.localSelectedLabels = newVal;\n      }\n    },\n  },\n  created() {\n    this.debouncedSearchKeyUpdate = debounce(this.setSearchKey, DEFAULT_DEBOUNCE_AND_THROTTLE_MS);\n  },\n  beforeDestroy() {\n    this.debouncedSearchKeyUpdate.cancel();\n  },\n  methods: {\n    toggleDropdownContentsCreateView() {\n      this.showDropdownContentsCreateView = !this.showDropdownContentsCreateView;\n    },\n    toggleDropdownContent() {\n      this.toggleDropdownContentsCreateView();\n      // Required to recalculate dropdown position as its size changes\n      if (this.$refs.dropdown?.$refs.dropdown) {\n        this.$refs.dropdown.$refs.dropdown.$_popper.scheduleUpdate();\n      }\n    },\n    setLabels() {\n      if (!this.isDirty) {\n        return;\n      }\n      this.$emit('setLabels', this.localSelectedLabels);\n    },\n    handleDropdownHide() {\n      this.$emit('closeDropdown');\n      if (!this.isSidebar) {\n        this.setLabels();\n      }\n    },\n    setSearchKey(value) {\n      this.searchKey = value;\n    },\n    setFocus() {\n      this.$refs.header.focusInput();\n    },\n    hideDropdown() {\n      this.$refs.dropdown.hide();\n    },\n    showDropdown() {\n      this.$refs.dropdown.show();\n    },\n    clearSearch() {\n      if (!this.allowMultiselect || this.isStandalone) {\n        return;\n      }\n      this.searchKey = '';\n      this.setFocus();\n    },\n    selectFirstItem() {\n      this.$refs.dropdownContentsView.selectFirstItem();\n    },\n    handleNewLabel(label) {\n      this.localSelectedLabels = [...this.localSelectedLabels, label];\n      this.toggleDropdownContent();\n      this.clearSearch();\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-dropdown\n    ref=\"dropdown\"\n    :text=\"buttonText\"\n    block\n    data-testid=\"labels-select-dropdown-contents\"\n    :toggle-attrs=\"toggleAttrs\"\n    @hide=\"handleDropdownHide\"\n    @shown=\"setFocus\"\n  >\n    <template #header>\n      <dropdown-header\n        ref=\"header\"\n        :search-key=\"searchKey\"\n        :labels-create-title=\"labelsCreateTitle\"\n        :labels-list-title=\"labelsListTitle\"\n        :show-dropdown-contents-create-view=\"showDropdownContentsCreateView\"\n        :is-standalone=\"isStandalone\"\n        @toggleDropdownContentsCreateView=\"toggleDropdownContent\"\n        @closeDropdown=\"hideDropdown\"\n        @input=\"debouncedSearchKeyUpdate\"\n        @searchEnter.prevent=\"selectFirstItem\"\n      />\n    </template>\n    <template #default>\n      <component\n        :is=\"dropdownContentsView\"\n        ref=\"dropdownContentsView\"\n        v-model=\"localSelectedLabels\"\n        :search-key=\"searchKey\"\n        :allow-multiselect=\"allowMultiselect\"\n        :full-path=\"fullPath\"\n        :workspace-type=\"workspaceType\"\n        :attr-workspace-path=\"attrWorkspacePath\"\n        :label-create-type=\"labelCreateType\"\n        @hideCreateView=\"toggleDropdownContent\"\n        @labelCreated=\"handleNewLabel\"\n        @input=\"clearSearch\"\n      />\n    </template>\n    <template #footer>\n      <dropdown-footer\n        v-if=\"showDropdownFooter\"\n        :footer-create-label-title=\"footerCreateLabelTitle\"\n        :footer-manage-label-title=\"footerManageLabelTitle\"\n        @toggleDropdownContentsCreateView=\"toggleDropdownContent\"\n      />\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!./dropdown_contents.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dropdown_contents.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dropdown_contents.vue?vue&type=template&id=bc30b3ca\"\nimport script from \"./dropdown_contents.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown_contents.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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:{\"text\":_vm.buttonText,\"block\":\"\",\"data-testid\":\"labels-select-dropdown-contents\",\"toggle-attrs\":_vm.toggleAttrs},on:{\"hide\":_vm.handleDropdownHide,\"shown\":_vm.setFocus},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('dropdown-header',{ref:\"header\",attrs:{\"search-key\":_vm.searchKey,\"labels-create-title\":_vm.labelsCreateTitle,\"labels-list-title\":_vm.labelsListTitle,\"show-dropdown-contents-create-view\":_vm.showDropdownContentsCreateView,\"is-standalone\":_vm.isStandalone},on:{\"toggleDropdownContentsCreateView\":_vm.toggleDropdownContent,\"closeDropdown\":_vm.hideDropdown,\"input\":_vm.debouncedSearchKeyUpdate,\"searchEnter\":function($event){$event.preventDefault();return _vm.selectFirstItem.apply(null, arguments)}}})]},proxy:true},{key:\"default\",fn:function(){return [_c(_vm.dropdownContentsView,{ref:\"dropdownContentsView\",tag:\"component\",attrs:{\"search-key\":_vm.searchKey,\"allow-multiselect\":_vm.allowMultiselect,\"full-path\":_vm.fullPath,\"workspace-type\":_vm.workspaceType,\"attr-workspace-path\":_vm.attrWorkspacePath,\"label-create-type\":_vm.labelCreateType},on:{\"hideCreateView\":_vm.toggleDropdownContent,\"labelCreated\":_vm.handleNewLabel,\"input\":_vm.clearSearch},model:{value:(_vm.localSelectedLabels),callback:function ($$v) {_vm.localSelectedLabels=$$v},expression:\"localSelectedLabels\"}})]},proxy:true},{key:\"footer\",fn:function(){return [(_vm.showDropdownFooter)?_c('dropdown-footer',{attrs:{\"footer-create-label-title\":_vm.footerCreateLabelTitle,\"footer-manage-label-title\":_vm.footerManageLabelTitle},on:{\"toggleDropdownContentsCreateView\":_vm.toggleDropdownContent}}):_vm._e()]},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!./embedded_labels_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!./embedded_labels_list.vue?vue&type=script&lang=js\"","<script>\nimport { GlLabel } from '@gitlab/ui';\nimport { sortBy } from 'lodash';\nimport { isScopedLabel } from '~/lib/utils/common_utils';\n\nexport default {\n  components: {\n    GlLabel,\n  },\n  inject: ['allowScopedLabels'],\n  props: {\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    selectedLabels: {\n      type: Array,\n      required: true,\n    },\n    allowLabelRemove: {\n      type: Boolean,\n      required: true,\n    },\n    supportsLockOnMerge: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    labelsFilterBasePath: {\n      type: String,\n      required: true,\n    },\n    labelsFilterParam: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    sortedSelectedLabels() {\n      return sortBy(this.selectedLabels, (label) => isScopedLabel(label));\n    },\n  },\n  methods: {\n    buildFilterUrl({ title }) {\n      const { labelsFilterBasePath: basePath, labelsFilterParam: filterParam } = this;\n\n      return `${basePath}?${filterParam}[]=${encodeURIComponent(title)}`;\n    },\n    scopedLabel(label) {\n      return this.allowScopedLabels && isScopedLabel(label);\n    },\n    isLabelLocked(label) {\n      // These particular labels were initialized from HAML data, so the attributes are\n      // in snake case instead of camel case\n      return label.lock_on_merge && this.supportsLockOnMerge;\n    },\n    showCloseButton(label) {\n      return this.allowLabelRemove && !this.isLabelLocked(label);\n    },\n    removeLabel(labelId) {\n      this.$emit('onLabelRemove', labelId);\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-mt-3\" data-testid=\"embedded-labels-list\">\n    <gl-label\n      v-for=\"label in sortedSelectedLabels\"\n      :key=\"label.id\"\n      class=\"gl-mb-2 gl-mr-2\"\n      :data-qa-label-name=\"label.title\"\n      :title=\"label.title\"\n      :description=\"label.description\"\n      :background-color=\"label.color\"\n      :target=\"buildFilterUrl(label)\"\n      :scoped=\"scopedLabel(label)\"\n      :show-close-button=\"showCloseButton(label)\"\n      :disabled=\"disabled\"\n      tooltip-placement=\"top\"\n      @close=\"removeLabel(label.id)\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./embedded_labels_list.vue?vue&type=template&id=4cf671a6\"\nimport script from \"./embedded_labels_list.vue?vue&type=script&lang=js\"\nexport * from \"./embedded_labels_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:\"gl-mt-3\",attrs:{\"data-testid\":\"embedded-labels-list\"}},_vm._l((_vm.sortedSelectedLabels),function(label){return _c('gl-label',{key:label.id,staticClass:\"gl-mb-2 gl-mr-2\",attrs:{\"data-qa-label-name\":label.title,\"title\":label.title,\"description\":label.description,\"background-color\":label.color,\"target\":_vm.buildFilterUrl(label),\"scoped\":_vm.scopedLabel(label),\"show-close-button\":_vm.showCloseButton(label),\"disabled\":_vm.disabled,\"tooltip-placement\":\"top\"},on:{\"close\":function($event){return _vm.removeLabel(label.id)}}})}),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!./labels_select_root.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels_select_root.vue?vue&type=script&lang=js\"","<script>\nimport { debounce } from 'lodash';\nimport issuableLabelsSubscription from 'ee_else_ce/sidebar/queries/issuable_labels.subscription.graphql';\nimport { mutationOperationMode, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { createAlert } from '~/alert';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { TYPE_EPIC, TYPE_ISSUE, TYPE_MERGE_REQUEST, TYPE_TEST_CASE } from '~/issues/constants';\n\nimport { __ } from '~/locale';\nimport { keysFor, ISSUABLE_CHANGE_LABEL } from '~/behaviors/shortcuts/keybindings';\nimport { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';\nimport { sanitize } from '~/lib/dompurify';\nimport { issuableLabelsQueries } from '../../../queries/constants';\nimport SidebarEditableItem from '../../sidebar_editable_item.vue';\nimport { DEBOUNCE_DROPDOWN_DELAY, VARIANT_SIDEBAR } from './constants';\nimport DropdownContents from './dropdown_contents.vue';\nimport DropdownValue from './dropdown_value.vue';\nimport EmbeddedLabelsList from './embedded_labels_list.vue';\nimport {\n  isDropdownVariantSidebar,\n  isDropdownVariantStandalone,\n  isDropdownVariantEmbedded,\n} from './utils';\n\nexport default {\n  components: {\n    DropdownValue,\n    DropdownContents,\n    EmbeddedLabelsList,\n    SidebarEditableItem,\n  },\n  mixins: [glFeatureFlagsMixin()],\n  inject: {\n    allowLabelEdit: {\n      default: false,\n    },\n  },\n  props: {\n    iid: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    allowLabelRemove: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    allowMultiselect: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    showEmbeddedLabelsList: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: VARIANT_SIDEBAR,\n    },\n    labelsFilterBasePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    labelsFilterParam: {\n      type: String,\n      required: false,\n      default: 'label_name',\n    },\n    dropdownButtonText: {\n      type: String,\n      required: false,\n      default: __('Label'),\n    },\n    labelsListTitle: {\n      type: String,\n      required: false,\n      default: __('Select labels'),\n    },\n    labelsCreateTitle: {\n      type: String,\n      required: false,\n      default: __('Create group label'),\n    },\n    footerCreateLabelTitle: {\n      type: String,\n      required: false,\n      default: __('Create group label'),\n    },\n    footerManageLabelTitle: {\n      type: String,\n      required: false,\n      default: __('Manage group labels'),\n    },\n    issuableType: {\n      type: String,\n      required: true,\n    },\n    issuableSupportsLockOnMerge: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    workspaceType: {\n      type: String,\n      required: true,\n    },\n    attrWorkspacePath: {\n      type: String,\n      required: true,\n    },\n    labelCreateType: {\n      type: String,\n      required: true,\n    },\n    selectedLabels: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  data() {\n    return {\n      contentIsOnViewport: true,\n      issuable: null,\n      labelsSelectInProgress: false,\n      oldIid: null,\n      sidebarExpandedOnClick: false,\n    };\n  },\n  computed: {\n    isLoading() {\n      return this.labelsSelectInProgress || this.$apollo.queries.issuable.loading;\n    },\n    issuableLabelIds() {\n      return this.issuableLabels.map((label) => label.id);\n    },\n    issuableLabels() {\n      if (this.iid !== '') {\n        return this.issuable?.labels.nodes || [];\n      }\n\n      return this.selectedLabels || [];\n    },\n    issuableId() {\n      return this.issuable?.id;\n    },\n    isRealtimeEnabled() {\n      return this.glFeatures.realtimeLabels;\n    },\n    isLabelListEnabled() {\n      return this.showEmbeddedLabelsList && isDropdownVariantEmbedded(this.variant);\n    },\n    isLockOnMergeSupported() {\n      return this.issuableSupportsLockOnMerge || this.issuable?.supportsLockOnMerge;\n    },\n    labelShortcutDescription() {\n      return shouldDisableShortcuts() ? null : ISSUABLE_CHANGE_LABEL.description;\n    },\n    labelShortcutKey() {\n      return shouldDisableShortcuts() ? null : keysFor(ISSUABLE_CHANGE_LABEL)[0];\n    },\n    labelTooltip() {\n      const description = this.labelShortcutDescription;\n      const key = this.labelShortcutKey;\n      return shouldDisableShortcuts()\n        ? null\n        : sanitize(`${description} <kbd class=\"flat gl-ml-1\" aria-hidden=true>${key}</kbd>`);\n    },\n  },\n  apollo: {\n    issuable: {\n      query() {\n        return issuableLabelsQueries[this.issuableType].issuableQuery;\n      },\n      skip() {\n        return !isDropdownVariantSidebar(this.variant) || !this.iid;\n      },\n      variables() {\n        const queryVariables = {\n          iid: this.iid,\n          fullPath: this.fullPath,\n        };\n\n        if (this.issuableType === TYPE_TEST_CASE) {\n          queryVariables.types = ['TEST_CASE'];\n        }\n\n        return queryVariables;\n      },\n      update(data) {\n        return data.workspace?.issuable;\n      },\n      error() {\n        createAlert({ message: __('Error fetching labels.') });\n      },\n      subscribeToMore: {\n        document() {\n          return issuableLabelsSubscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return !this.issuableId || !this.isDropdownVariantSidebar;\n        },\n        updateQuery(\n          _,\n          {\n            subscriptionData: {\n              data: { issuableLabelsUpdated },\n            },\n          },\n        ) {\n          if (issuableLabelsUpdated) {\n            const {\n              id,\n              labels: { nodes },\n            } = issuableLabelsUpdated;\n            this.$emit('updateSelectedLabels', { id, labels: nodes });\n          }\n        },\n      },\n    },\n  },\n  watch: {\n    iid(_, oldVal) {\n      this.oldIid = oldVal;\n    },\n  },\n  mounted() {\n    document.addEventListener('toggleSidebarRevealLabelsDropdown', this.handleCollapsedValueClick);\n  },\n  beforeDestroy() {\n    document.removeEventListener(\n      'toggleSidebarRevealLabelsDropdown',\n      this.handleCollapsedValueClick,\n    );\n  },\n  methods: {\n    handleDropdownClose(labels) {\n      if (this.iid !== '') {\n        this.updateSelectedLabels(this.getUpdateVariables(labels));\n      } else {\n        this.$emit('updateSelectedLabels', { labels });\n      }\n\n      this.collapseEditableItem();\n    },\n    collapseEditableItem() {\n      this.$refs.editable?.collapse();\n      if (this.sidebarExpandedOnClick) {\n        this.sidebarExpandedOnClick = false;\n        this.$emit('toggleCollapse');\n      }\n    },\n    handleCollapsedValueClick() {\n      this.sidebarExpandedOnClick = true;\n      this.$emit('toggleCollapse');\n      debounce(() => {\n        this.$refs.editable.toggle();\n        this.$refs.dropdownContents.showDropdown();\n      }, DEBOUNCE_DROPDOWN_DELAY)();\n    },\n    getUpdateVariables(labels) {\n      let labelIds = [];\n\n      labelIds = labels.map(({ id }) => id);\n      const currentIid = this.oldIid || this.iid;\n\n      const updateVariables = {\n        iid: currentIid,\n        projectPath: this.fullPath,\n        labelIds,\n      };\n\n      switch (this.issuableType) {\n        case TYPE_ISSUE:\n        case TYPE_TEST_CASE:\n          return updateVariables;\n        case TYPE_MERGE_REQUEST:\n          return {\n            ...updateVariables,\n            operationMode: mutationOperationMode.replace,\n          };\n        case TYPE_EPIC:\n          return {\n            iid: currentIid,\n            groupPath: this.fullPath,\n            addLabelIds: labelIds.map((id) => getIdFromGraphQLId(id)),\n            removeLabelIds: this.issuableLabelIds\n              .filter((id) => !labelIds.includes(id))\n              .map((id) => getIdFromGraphQLId(id)),\n          };\n        default:\n          return {};\n      }\n    },\n    updateSelectedLabels(inputVariables) {\n      this.labelsSelectInProgress = true;\n\n      this.$apollo\n        .mutate({\n          mutation: issuableLabelsQueries[this.issuableType].mutation,\n          variables: { input: inputVariables },\n        })\n        .then(({ data }) => {\n          if (data.updateIssuableLabels?.errors?.length) {\n            throw new Error();\n          }\n\n          this.$emit('updateSelectedLabels', {\n            id: data.updateIssuableLabels?.issuable?.id,\n            labels: data.updateIssuableLabels?.issuable?.labels?.nodes,\n          });\n        })\n        .catch((error) =>\n          createAlert({\n            message: __('An error occurred while updating labels.'),\n            captureError: true,\n            error,\n          }),\n        )\n        .finally(() => {\n          this.labelsSelectInProgress = false;\n        });\n    },\n    getRemoveVariables(labelId) {\n      const removeVariables = {\n        iid: this.iid,\n        projectPath: this.fullPath,\n      };\n\n      switch (this.issuableType) {\n        case TYPE_ISSUE:\n        case TYPE_TEST_CASE:\n          return {\n            ...removeVariables,\n            removeLabelIds: [labelId],\n          };\n        case TYPE_MERGE_REQUEST:\n          return {\n            ...removeVariables,\n            labelIds: [labelId],\n            operationMode: mutationOperationMode.remove,\n          };\n        case TYPE_EPIC:\n          return {\n            iid: this.iid,\n            removeLabelIds: [getIdFromGraphQLId(labelId)],\n            groupPath: this.fullPath,\n          };\n        default:\n          return {};\n      }\n    },\n    handleLabelRemove(labelId) {\n      if (this.iid !== '') {\n        this.updateSelectedLabels(this.getRemoveVariables(labelId));\n      }\n\n      this.$emit('onLabelRemove', labelId);\n    },\n    isDropdownVariantSidebar,\n    isDropdownVariantStandalone,\n    isDropdownVariantEmbedded,\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"labels-select-wrapper gl-relative\"\n    :class=\"{\n      'is-standalone': isDropdownVariantStandalone(variant),\n      'is-embedded': isDropdownVariantEmbedded(variant),\n    }\"\n    data-testid=\"sidebar-labels\"\n  >\n    <template v-if=\"isDropdownVariantSidebar(variant)\">\n      <sidebar-editable-item\n        ref=\"editable\"\n        :title=\"__('Labels')\"\n        :edit-tooltip=\"labelTooltip\"\n        :edit-aria-label=\"labelShortcutDescription\"\n        :edit-keyshortcuts=\"labelShortcutKey\"\n        :loading=\"isLoading\"\n        :can-edit=\"allowLabelEdit\"\n        @open=\"oldIid = null\"\n      >\n        <template #collapsed>\n          <dropdown-value\n            :disable-labels=\"labelsSelectInProgress\"\n            :selected-labels=\"issuableLabels\"\n            :allow-label-remove=\"allowLabelRemove\"\n            :supports-lock-on-merge=\"isLockOnMergeSupported\"\n            :labels-filter-base-path=\"labelsFilterBasePath\"\n            :labels-filter-param=\"labelsFilterParam\"\n            class=\"gl-pt-2\"\n            @onLabelRemove=\"handleLabelRemove\"\n            @onCollapsedValueClick=\"handleCollapsedValueClick\"\n          >\n            <slot></slot>\n          </dropdown-value>\n        </template>\n        <template #default=\"{ edit }\">\n          <dropdown-value\n            :disable-labels=\"labelsSelectInProgress\"\n            :selected-labels=\"issuableLabels\"\n            :allow-label-remove=\"allowLabelRemove\"\n            :supports-lock-on-merge=\"isLockOnMergeSupported\"\n            :labels-filter-base-path=\"labelsFilterBasePath\"\n            :labels-filter-param=\"labelsFilterParam\"\n            class=\"gl-mb-2\"\n            @onLabelRemove=\"handleLabelRemove\"\n          >\n            <slot></slot>\n          </dropdown-value>\n          <dropdown-contents\n            ref=\"dropdownContents\"\n            class=\"gl-mt-3 gl-w-full\"\n            :dropdown-button-text=\"dropdownButtonText\"\n            :allow-multiselect=\"allowMultiselect\"\n            :labels-list-title=\"labelsListTitle\"\n            :footer-create-label-title=\"footerCreateLabelTitle\"\n            :footer-manage-label-title=\"footerManageLabelTitle\"\n            :labels-create-title=\"labelsCreateTitle\"\n            :selected-labels=\"issuableLabels\"\n            :variant=\"variant\"\n            :is-visible=\"edit\"\n            :full-path=\"fullPath\"\n            :workspace-type=\"workspaceType\"\n            :attr-workspace-path=\"attrWorkspacePath\"\n            :label-create-type=\"labelCreateType\"\n            @setLabels=\"handleDropdownClose\"\n            @closeDropdown=\"collapseEditableItem\"\n          />\n        </template>\n      </sidebar-editable-item>\n    </template>\n    <template v-else>\n      <dropdown-contents\n        ref=\"dropdownContents\"\n        class=\"issuable-form-select-holder\"\n        :dropdown-button-text=\"dropdownButtonText\"\n        :allow-multiselect=\"allowMultiselect\"\n        :labels-list-title=\"labelsListTitle\"\n        :footer-create-label-title=\"footerCreateLabelTitle\"\n        :footer-manage-label-title=\"footerManageLabelTitle\"\n        :labels-create-title=\"labelsCreateTitle\"\n        :selected-labels=\"issuableLabels\"\n        :variant=\"variant\"\n        :full-path=\"fullPath\"\n        :workspace-type=\"workspaceType\"\n        :attr-workspace-path=\"attrWorkspacePath\"\n        :label-create-type=\"labelCreateType\"\n        @setLabels=\"handleDropdownClose\"\n      />\n      <embedded-labels-list\n        v-if=\"isLabelListEnabled\"\n        :disabled=\"labelsSelectInProgress\"\n        :selected-labels=\"issuableLabels\"\n        :allow-label-remove=\"allowLabelRemove\"\n        :supports-lock-on-merge=\"isLockOnMergeSupported\"\n        :labels-filter-base-path=\"labelsFilterBasePath\"\n        :labels-filter-param=\"labelsFilterParam\"\n        @onLabelRemove=\"handleLabelRemove\"\n      />\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./labels_select_root.vue?vue&type=template&id=7c2f1289\"\nimport script from \"./labels_select_root.vue?vue&type=script&lang=js\"\nexport * from \"./labels_select_root.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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","import getSharedStateQuery from '../client/queries/shared_drawer_state.query.graphql';\n\nexport default {\n  Mutation: {\n    discardChanges(_, __, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          showDiscardChangesModal: false,\n          formTouched: false,\n        },\n      }));\n    },\n    goFirstStep(_, { profileType, mode }, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          history: [{ profileType, mode }],\n        },\n      }));\n    },\n    goForward(_, { profileType, mode }, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          history: [...sharedData.history, { profileType, mode }],\n        },\n      }));\n    },\n    goBack(_, __, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          history: sharedData.history.slice(0, -1),\n        },\n      }));\n    },\n    resetHistory(_, __, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          history: [],\n        },\n      }));\n    },\n    toggleModal(_, { showDiscardChangesModal }, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          showDiscardChangesModal,\n        },\n      }));\n    },\n    setCachedPayload(_, { cachedPayload = { profileType: '', mode: '' } }, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          cachedPayload,\n        },\n      }));\n    },\n    setFormTouched(_, { formTouched }, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          formTouched,\n        },\n      }));\n    },\n    setResetAndClose(_, { resetAndClose }, { cache }) {\n      cache.updateQuery({ query: getSharedStateQuery }, ({ sharedData }) => ({\n        sharedData: {\n          ...sharedData,\n          resetAndClose,\n        },\n      }));\n    },\n  },\n};\n","import Vue from 'vue';\nimport VueApollo from 'vue-apollo';\nimport createDefaultClient from '~/lib/graphql';\nimport resolvers from './resolvers/resolvers';\nimport typeDefs from './typedefs.graphql';\n\nVue.use(VueApollo);\n\nexport const typePolicies = {\n  Query: {\n    fields: {\n      sharedData: {\n        read(cachedData) {\n          return (\n            cachedData || {\n              showDiscardChangesModal: false,\n              formTouched: false,\n              history: [],\n              cachedPayload: {\n                __typename: 'CachedPayload',\n                profileType: '',\n                mode: '',\n              },\n              resetAndClose: false,\n              __typename: 'SharedData',\n            }\n          );\n        },\n      },\n    },\n  },\n};\n\nexport const defaultClient = createDefaultClient(resolvers, {\n  cacheConfig: { typePolicies },\n  typeDefs,\n});\n\nexport default new VueApollo({\n  defaultClient,\n});\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"getStateSubscription\"},\"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\":\"detailedMergeStatus\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commitCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainPosition\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":342}};\n    doc.loc.source = {\"body\":\"#import \\\"ee_else_ce/vue_merge_request_widget/queries/states/merge_train_position.fragment.graphql\\\"\\n\\nsubscription getStateSubscription($issuableId: IssuableID!) {\\n  mergeRequestMergeStatusUpdated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      id\\n      detailedMergeStatus\\n      commitCount\\n\\n      ...MergeTrainPosition\\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_else_ce/vue_merge_request_widget/queries/states/merge_train_position.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[\"getStateSubscription\"] = oneQuery(doc, \"getStateSubscription\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('timeline-entry-item',{staticClass:\"note note-wrapper note-comment\",class:{ ..._vm.classNameBindings, 'internal-note': _vm.note.internal },attrs:{\"id\":_vm.noteAnchorId,\"data-award-url\":_vm.note.toggle_award_path,\"data-note-id\":_vm.note.id,\"data-testid\":\"noteable-note-container\"}},[(_vm.showMultiLineComment)?_c('div',{staticClass:\"gl-border-b gl-border-section gl-px-5 gl-py-3 gl-text-subtle\",attrs:{\"data-testid\":\"multiline-comment\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.__('Comment on lines %{startLine} to %{endLine}')},scopedSlots:_vm._u([{key:\"startLine\",fn:function(){return [_c('span',{class:_vm.getLineClasses(_vm.startLineNumber)},[_vm._v(_vm._s(_vm.startLineNumber))])]},proxy:true},{key:\"endLine\",fn:function(){return [_c('span',{class:_vm.getLineClasses(_vm.endLineNumber)},[_vm._v(_vm._s(_vm.endLineNumber))])]},proxy:true}],null,false,1413361638)})],1):_vm._e(),_vm._v(\" \"),(_vm.isMRDiffView)?_c('div',{staticClass:\"timeline-avatar gl-float-left gl-pt-2\"},[_c('gl-avatar-link',{staticClass:\"js-user-link\",attrs:{\"href\":_vm.author.path,\"data-user-id\":_vm.authorId,\"data-username\":_vm.author.username}},[_c('gl-avatar',{attrs:{\"src\":_vm.author.avatar_url,\"entity-name\":_vm.author.username,\"alt\":_vm.author.name,\"size\":24}}),_vm._v(\" \"),_vm._t(\"avatar-badge\")],2)],1):_c('div',{staticClass:\"timeline-avatar gl-float-left\"},[_c('gl-avatar-link',{staticClass:\"js-user-link gl-relative\",attrs:{\"href\":_vm.author.path,\"data-user-id\":_vm.authorId,\"data-username\":_vm.author.username}},[_c('gl-avatar',{attrs:{\"src\":_vm.author.avatar_url,\"entity-name\":_vm.author.username,\"alt\":_vm.author.name,\"size\":32}}),_vm._v(\" \"),_vm._t(\"avatar-badge\")],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"timeline-content\"},[_c('div',{staticClass:\"note-header\"},[_c('note-header',{attrs:{\"author\":_vm.author,\"created-at\":_vm.note.created_at,\"note-id\":_vm.note.id,\"is-internal-note\":_vm.note.internal,\"is-imported\":_vm.note.imported,\"noteable-type\":_vm.noteableType,\"email-participant\":_vm.note.external_author},scopedSlots:_vm._u([{key:\"note-header-info\",fn:function(){return [_vm._t(\"note-header-info\")]},proxy:true}],null,true)},[_vm._v(\" \"),(_vm.commit)?_c('span',{directives:[{name:\"safe-html\",rawName:\"v-safe-html\",value:(_vm.actionText),expression:\"actionText\"}]}):(_vm.note.created_at)?_c('span',{staticClass:\"gl-hidden sm:gl-inline\"},[_vm._v(\"·\")]):_vm._e()]),_vm._v(\" \"),_c('note-actions',{attrs:{\"author\":_vm.author,\"author-id\":_vm.authorId,\"note-id\":_vm.note.id,\"note-url\":_vm.note.noteable_note_url,\"access-level\":_vm.note.human_access,\"is-contributor\":_vm.note.is_contributor,\"is-author\":_vm.note.is_noteable_author,\"project-name\":_vm.note.project_name,\"noteable-type\":_vm.note.noteable_type,\"show-reply\":_vm.showReplyButton,\"can-edit\":_vm.canEdit,\"can-award-emoji\":_vm.canAwardEmoji,\"can-delete\":_vm.canEdit,\"can-report-as-abuse\":_vm.canReportAsAbuse,\"can-resolve\":_vm.canResolve,\"resolvable\":_vm.note.resolvable || _vm.note.isDraft,\"is-resolved\":_vm.note.resolved || _vm.note.resolve_discussion,\"is-resolving\":_vm.isResolving,\"resolved-by\":_vm.note.resolved_by,\"is-draft\":_vm.note.isDraft,\"resolve-discussion\":_vm.note.isDraft && _vm.note.resolve_discussion,\"discussion-id\":_vm.discussionId,\"award-path\":_vm.note.toggle_award_path},on:{\"handleEdit\":_vm.editHandler,\"handleDelete\":_vm.deleteHandler,\"handleResolve\":_vm.resolveHandler,\"startReplying\":function($event){return _vm.$emit('startReplying')},\"updateAssignees\":_vm.assigneesUpdate}})],1),_vm._v(\" \"),_c('div',{staticClass:\"timeline-discussion-body\"},[_vm._t(\"discussion-resolved-text\"),_vm._v(\" \"),_vm._t(\"note-body\",function(){return [_c('note-body',{ref:\"noteBody\",attrs:{\"note\":_vm.note,\"can-edit\":_vm.canEdit,\"line\":_vm.line,\"file\":_vm.diffFile,\"is-editing\":_vm.isEditing,\"autosave-key\":_vm.autosaveKey,\"restore-from-autosave\":_vm.restoreFromAutosave,\"help-page-path\":_vm.helpPagePath},on:{\"handleFormUpdate\":_vm.formUpdateHandler,\"cancelForm\":_vm.formCancelHandler}})]}),_vm._v(\" \"),_c('div',{staticClass:\"timeline-discussion-body-footer\"},[_vm._t(\"after-note-body\")],2)],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./timeline_event_button.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./timeline_event_button.vue?vue&type=script&lang=js\"","<script>\nimport { GlTooltipDirective, GlButton } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  i18n: {\n    buttonText: __('Add comment to incident timeline'),\n    addError: __('Error promoting the note to timeline event: %{error}'),\n    addGenericError: __('Something went wrong while promoting the note to timeline event.'),\n  },\n  components: {\n    GlButton,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    noteId: {\n      type: [String, Number],\n      required: true,\n    },\n    isPromotionInProgress: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  methods: {\n    handleButtonClick() {\n      this.$emit('click-promote-comment-to-event', {\n        noteId: this.noteId,\n        addError: this.$options.i18n.addError,\n        addGenericError: this.$options.i18n.addGenericError,\n      });\n    },\n  },\n};\n</script>\n<template>\n  <span v-gl-tooltip :title=\"$options.i18n.buttonText\">\n    <gl-button\n      category=\"tertiary\"\n      icon=\"clock\"\n      :aria-label=\"$options.i18n.buttonText\"\n      :disabled=\"isPromotionInProgress\"\n      @click=\"handleButtonClick\"\n    />\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./timeline_event_button.vue?vue&type=template&id=64e4bc06\"\nimport script from \"./timeline_event_button.vue?vue&type=script&lang=js\"\nexport * from \"./timeline_event_button.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"title\":_vm.$options.i18n.buttonText}},[_c('gl-button',{attrs:{\"category\":\"tertiary\",\"icon\":\"clock\",\"aria-label\":_vm.$options.i18n.buttonText,\"disabled\":_vm.isPromotionInProgress},on:{\"click\":_vm.handleButtonClick}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_actions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_actions.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlTooltipDirective,\n  GlButton,\n  GlDisclosureDropdown,\n  GlDisclosureDropdownItem,\n  GlDisclosureDropdownGroup,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport Api from '~/api';\nimport resolvedStatusMixin from '~/batch_comments/mixins/resolved_status';\nimport { createAlert } from '~/alert';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { __, sprintf } from '~/locale';\nimport UserAccessRoleBadge from '~/vue_shared/components/user_access_role_badge.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport { splitCamelCase } from '~/lib/utils/text_utility';\nimport AbuseCategorySelector from '~/abuse_reports/components/abuse_category_selector.vue';\nimport ReplyButton from './note_actions/reply_button.vue';\nimport TimelineEventButton from './note_actions/timeline_event_button.vue';\n\nexport default {\n  i18n: {\n    editCommentLabel: __('Edit comment'),\n    deleteCommentLabel: __('Delete comment'),\n    moreActionsLabel: __('More actions'),\n    reportAbuse: __('Report abuse'),\n  },\n  name: 'NoteActions',\n  components: {\n    AbuseCategorySelector,\n    EmojiPicker: () => import('~/emoji/components/picker.vue'),\n    GlButton,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup,\n    ReplyButton,\n    TimelineEventButton,\n    UserAccessRoleBadge,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [resolvedStatusMixin, glFeatureFlagsMixin()],\n  props: {\n    author: {\n      type: Object,\n      required: true,\n    },\n    authorId: {\n      type: Number,\n      required: true,\n    },\n    noteId: {\n      type: [String, Number],\n      required: true,\n    },\n    noteUrl: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    accessLevel: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isAuthor: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isContributor: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    noteableType: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    projectName: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    showReply: {\n      type: Boolean,\n      required: true,\n    },\n    canEdit: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canAwardEmoji: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canDelete: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    canResolve: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    resolvable: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isResolved: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isResolving: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    resolvedBy: {\n      type: Object,\n      required: false,\n      default: () => ({}),\n    },\n    canReportAsAbuse: {\n      type: Boolean,\n      required: true,\n    },\n    // This can be undefined when `canAwardEmoji` is false\n    awardPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      isReportAbuseDrawerOpen: false,\n    };\n  },\n  computed: {\n    ...mapState(['isPromoteCommentToTimelineEventInProgress']),\n    ...mapGetters(['getUserDataByProp', 'getNoteableData', 'canUserAddIncidentTimelineEvents']),\n    shouldShowActionsDropdown() {\n      return this.currentUserId;\n    },\n    showDeleteAction() {\n      return this.canDelete && !this.canReportAsAbuse && !this.noteUrl;\n    },\n    currentUserId() {\n      return this.getUserDataByProp('id');\n    },\n    isUserAssigned() {\n      return this.assignees && this.assignees.some(({ id }) => id === this.author.id);\n    },\n    displayAssignUserText() {\n      return this.isUserAssigned\n        ? __('Unassign from commenting user')\n        : __('Assign to commenting user');\n    },\n    targetType() {\n      return this.getNoteableData.targetType;\n    },\n    noteableDisplayName() {\n      return splitCamelCase(this.noteableType).toLowerCase();\n    },\n    assignees() {\n      return this.getNoteableData.assignees || [];\n    },\n    isIssue() {\n      return this.targetType === TYPE_ISSUE;\n    },\n    canAssign() {\n      return this.getNoteableData.current_user?.can_set_issue_metadata && this.isIssue;\n    },\n    displayAuthorBadgeText() {\n      return sprintf(__('This user is the author of this %{noteable}.'), {\n        noteable: this.noteableDisplayName,\n      });\n    },\n    displayMemberBadgeText() {\n      return sprintf(__('This user has the %{access} role in the %{name} project.'), {\n        access: this.accessLevel.toLowerCase(),\n        name: this.projectName,\n      });\n    },\n    displayContributorBadgeText() {\n      return sprintf(__('This user has previously committed to the %{name} project.'), {\n        name: this.projectName,\n      });\n    },\n    resolveIcon() {\n      if (!this.isResolving) {\n        return this.isResolved ? 'check-circle-filled' : 'check-circle';\n      }\n      return null;\n    },\n  },\n  methods: {\n    ...mapActions(['toggleAwardRequest', 'promoteCommentToTimelineEvent']),\n    onEdit() {\n      this.$emit('handleEdit');\n    },\n    onDelete() {\n      this.$emit('handleDelete');\n    },\n    onResolve() {\n      this.$emit('handleResolve');\n    },\n    onAbuse() {\n      this.toggleReportAbuseDrawer(true);\n    },\n    onCopyUrl() {\n      this.$toast.show(__('Link copied to clipboard.'));\n    },\n    handleAssigneeUpdate(assignees) {\n      this.$emit('updateAssignees', assignees);\n    },\n    assignUser() {\n      let { assignees } = this;\n      const { project_id, iid } = this.getNoteableData;\n\n      if (this.isUserAssigned) {\n        assignees = assignees.filter((assignee) => assignee.id !== this.author.id);\n      } else {\n        assignees.push({ id: this.author.id });\n      }\n\n      if (this.targetType === TYPE_ISSUE) {\n        Api.updateIssue(project_id, iid, {\n          assignee_ids: assignees.map((assignee) => assignee.id),\n        })\n          .then(() => this.handleAssigneeUpdate(assignees))\n          .catch(() =>\n            createAlert({\n              message: __('Something went wrong while updating assignees'),\n            }),\n          );\n      }\n    },\n    setAwardEmoji(awardName) {\n      this.toggleAwardRequest({\n        endpoint: this.awardPath,\n        noteId: this.noteId,\n        awardName,\n      });\n    },\n    toggleReportAbuseDrawer(isOpen) {\n      this.isReportAbuseDrawerOpen = isOpen;\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-actions\">\n    <user-access-role-badge\n      v-if=\"isAuthor\"\n      v-gl-tooltip\n      class=\"gl-mr-3 gl-hidden sm:gl-block\"\n      :title=\"displayAuthorBadgeText\"\n    >\n      {{ __('Author') }}\n    </user-access-role-badge>\n    <user-access-role-badge\n      v-if=\"accessLevel\"\n      v-gl-tooltip\n      class=\"gl-mr-3 gl-hidden sm:gl-block\"\n      :title=\"displayMemberBadgeText\"\n    >\n      {{ accessLevel }}\n    </user-access-role-badge>\n    <user-access-role-badge\n      v-else-if=\"isContributor\"\n      v-gl-tooltip\n      class=\"gl-mr-3 gl-hidden sm:gl-block\"\n      :title=\"displayContributorBadgeText\"\n    >\n      {{ __('Contributor') }}\n    </user-access-role-badge>\n    <span class=\"note-actions__mobile-spacer\"></span>\n    <gl-button\n      v-if=\"canResolve\"\n      ref=\"resolveButton\"\n      v-gl-tooltip\n      data-testid=\"resolve-line-button\"\n      category=\"tertiary\"\n      class=\"note-action-button\"\n      :class=\"{ '!gl-text-success': isResolved }\"\n      :title=\"resolveButtonTitle\"\n      :aria-label=\"resolveButtonTitle\"\n      :icon=\"resolveIcon\"\n      :loading=\"isResolving\"\n      @click=\"onResolve\"\n    />\n    <timeline-event-button\n      v-if=\"canUserAddIncidentTimelineEvents\"\n      :note-id=\"noteId\"\n      :is-promotion-in-progress=\"isPromoteCommentToTimelineEventInProgress\"\n      @click-promote-comment-to-event=\"promoteCommentToTimelineEvent\"\n    />\n    <emoji-picker\n      v-if=\"canAwardEmoji\"\n      toggle-class=\"add-reaction-button btn-default-tertiary\"\n      data-testid=\"note-emoji-button\"\n      @click=\"setAwardEmoji\"\n    />\n    <reply-button\n      v-if=\"showReply\"\n      ref=\"replyButton\"\n      class=\"js-reply-button\"\n      @startReplying=\"$emit('startReplying')\"\n    />\n    <gl-button\n      v-if=\"canEdit\"\n      v-gl-tooltip\n      :title=\"$options.i18n.editCommentLabel\"\n      :aria-label=\"$options.i18n.editCommentLabel\"\n      icon=\"pencil\"\n      category=\"tertiary\"\n      class=\"note-action-button js-note-edit\"\n      data-testid=\"note-edit-button\"\n      @click=\"onEdit\"\n    />\n    <gl-button\n      v-if=\"showDeleteAction\"\n      v-gl-tooltip\n      :title=\"$options.i18n.deleteCommentLabel\"\n      :aria-label=\"$options.i18n.deleteCommentLabel\"\n      icon=\"remove\"\n      category=\"tertiary\"\n      class=\"note-action-button js-note-delete\"\n      @click=\"onDelete\"\n    />\n    <div v-else-if=\"shouldShowActionsDropdown\" class=\"more-actions dropdown\">\n      <gl-disclosure-dropdown\n        v-gl-tooltip\n        :title=\"$options.i18n.moreActionsLabel\"\n        :toggle-text=\"$options.i18n.moreActionsLabel\"\n        text-sr-only\n        icon=\"ellipsis_v\"\n        category=\"tertiary\"\n        placement=\"bottom-end\"\n        class=\"note-action-button more-actions-toggle\"\n        no-caret\n      >\n        <gl-disclosure-dropdown-item\n          v-if=\"noteUrl\"\n          class=\"js-btn-copy-note-link\"\n          :data-clipboard-text=\"noteUrl\"\n          @action=\"onCopyUrl\"\n        >\n          <template #list-item>\n            {{ __('Copy link') }}\n          </template>\n        </gl-disclosure-dropdown-item>\n        <gl-disclosure-dropdown-item\n          v-if=\"canAssign\"\n          data-testid=\"assign-user\"\n          @action=\"assignUser\"\n        >\n          <template #list-item>\n            {{ displayAssignUserText }}\n          </template>\n        </gl-disclosure-dropdown-item>\n        <gl-disclosure-dropdown-group v-if=\"canReportAsAbuse || canEdit\" bordered>\n          <gl-disclosure-dropdown-item\n            v-if=\"canReportAsAbuse\"\n            data-testid=\"report-abuse-button\"\n            @action=\"onAbuse\"\n          >\n            <template #list-item>\n              {{ $options.i18n.reportAbuse }}\n            </template>\n          </gl-disclosure-dropdown-item>\n          <gl-disclosure-dropdown-item v-if=\"canEdit\" class=\"js-note-delete\" @action=\"onDelete\">\n            <template #list-item>\n              <span class=\"gl-text-danger\">{{ __('Delete comment') }}</span>\n            </template>\n          </gl-disclosure-dropdown-item>\n        </gl-disclosure-dropdown-group>\n      </gl-disclosure-dropdown>\n    </div>\n    <!-- IMPORTANT: show this component lazily because it causes layout thrashing -->\n    <!-- https://gitlab.com/gitlab-org/gitlab/-/issues/331172#note_1269378396 -->\n    <abuse-category-selector\n      v-if=\"canReportAsAbuse && isReportAbuseDrawerOpen\"\n      :reported-user-id=\"authorId\"\n      :reported-from-url=\"noteUrl\"\n      :show-drawer=\"isReportAbuseDrawerOpen\"\n      @close-drawer=\"toggleReportAbuseDrawer(false)\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_actions.vue?vue&type=template&id=876917c8\"\nimport script from \"./note_actions.vue?vue&type=script&lang=js\"\nexport * from \"./note_actions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-actions\"},[(_vm.isAuthor)?_c('user-access-role-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-3 gl-hidden sm:gl-block\",attrs:{\"title\":_vm.displayAuthorBadgeText}},[_vm._v(\"\\n    \"+_vm._s(_vm.__('Author'))+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(_vm.accessLevel)?_c('user-access-role-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-3 gl-hidden sm:gl-block\",attrs:{\"title\":_vm.displayMemberBadgeText}},[_vm._v(\"\\n    \"+_vm._s(_vm.accessLevel)+\"\\n  \")]):(_vm.isContributor)?_c('user-access-role-badge',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"gl-mr-3 gl-hidden sm:gl-block\",attrs:{\"title\":_vm.displayContributorBadgeText}},[_vm._v(\"\\n    \"+_vm._s(_vm.__('Contributor'))+\"\\n  \")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"note-actions__mobile-spacer\"}),_vm._v(\" \"),(_vm.canResolve)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],ref:\"resolveButton\",staticClass:\"note-action-button\",class:{ '!gl-text-success': _vm.isResolved },attrs:{\"data-testid\":\"resolve-line-button\",\"category\":\"tertiary\",\"title\":_vm.resolveButtonTitle,\"aria-label\":_vm.resolveButtonTitle,\"icon\":_vm.resolveIcon,\"loading\":_vm.isResolving},on:{\"click\":_vm.onResolve}}):_vm._e(),_vm._v(\" \"),(_vm.canUserAddIncidentTimelineEvents)?_c('timeline-event-button',{attrs:{\"note-id\":_vm.noteId,\"is-promotion-in-progress\":_vm.isPromoteCommentToTimelineEventInProgress},on:{\"click-promote-comment-to-event\":_vm.promoteCommentToTimelineEvent}}):_vm._e(),_vm._v(\" \"),(_vm.canAwardEmoji)?_c('emoji-picker',{attrs:{\"toggle-class\":\"add-reaction-button btn-default-tertiary\",\"data-testid\":\"note-emoji-button\"},on:{\"click\":_vm.setAwardEmoji}}):_vm._e(),_vm._v(\" \"),(_vm.showReply)?_c('reply-button',{ref:\"replyButton\",staticClass:\"js-reply-button\",on:{\"startReplying\":function($event){return _vm.$emit('startReplying')}}}):_vm._e(),_vm._v(\" \"),(_vm.canEdit)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"note-action-button js-note-edit\",attrs:{\"title\":_vm.$options.i18n.editCommentLabel,\"aria-label\":_vm.$options.i18n.editCommentLabel,\"icon\":\"pencil\",\"category\":\"tertiary\",\"data-testid\":\"note-edit-button\"},on:{\"click\":_vm.onEdit}}):_vm._e(),_vm._v(\" \"),(_vm.showDeleteAction)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"note-action-button js-note-delete\",attrs:{\"title\":_vm.$options.i18n.deleteCommentLabel,\"aria-label\":_vm.$options.i18n.deleteCommentLabel,\"icon\":\"remove\",\"category\":\"tertiary\"},on:{\"click\":_vm.onDelete}}):(_vm.shouldShowActionsDropdown)?_c('div',{staticClass:\"more-actions dropdown\"},[_c('gl-disclosure-dropdown',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],staticClass:\"note-action-button more-actions-toggle\",attrs:{\"title\":_vm.$options.i18n.moreActionsLabel,\"toggle-text\":_vm.$options.i18n.moreActionsLabel,\"text-sr-only\":\"\",\"icon\":\"ellipsis_v\",\"category\":\"tertiary\",\"placement\":\"bottom-end\",\"no-caret\":\"\"}},[(_vm.noteUrl)?_c('gl-disclosure-dropdown-item',{staticClass:\"js-btn-copy-note-link\",attrs:{\"data-clipboard-text\":_vm.noteUrl},on:{\"action\":_vm.onCopyUrl},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.__('Copy link'))+\"\\n        \")]},proxy:true}],null,false,618784014)}):_vm._e(),_vm._v(\" \"),(_vm.canAssign)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"assign-user\"},on:{\"action\":_vm.assignUser},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.displayAssignUserText)+\"\\n        \")]},proxy:true}],null,false,3812251101)}):_vm._e(),_vm._v(\" \"),(_vm.canReportAsAbuse || _vm.canEdit)?_c('gl-disclosure-dropdown-group',{attrs:{\"bordered\":\"\"}},[(_vm.canReportAsAbuse)?_c('gl-disclosure-dropdown-item',{attrs:{\"data-testid\":\"report-abuse-button\"},on:{\"action\":_vm.onAbuse},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._v(\"\\n            \"+_vm._s(_vm.$options.i18n.reportAbuse)+\"\\n          \")]},proxy:true}],null,false,3009725790)}):_vm._e(),_vm._v(\" \"),(_vm.canEdit)?_c('gl-disclosure-dropdown-item',{staticClass:\"js-note-delete\",on:{\"action\":_vm.onDelete},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('span',{staticClass:\"gl-text-danger\"},[_vm._v(_vm._s(_vm.__('Delete comment')))])]},proxy:true}],null,false,1412744113)}):_vm._e()],1):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),(_vm.canReportAsAbuse && _vm.isReportAbuseDrawerOpen)?_c('abuse-category-selector',{attrs:{\"reported-user-id\":_vm.authorId,\"reported-from-url\":_vm.noteUrl,\"show-drawer\":_vm.isReportAbuseDrawerOpen},on:{\"close-drawer\":function($event){return _vm.toggleReportAbuseDrawer(false)}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_attachment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_attachment.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\n\nexport default {\n  name: 'NoteAttachment',\n  components: {\n    GlIcon,\n  },\n  props: {\n    attachment: {\n      type: Object,\n      required: true,\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-attachment\">\n    <a\n      v-if=\"attachment.image\"\n      ref=\"attachmentImage\"\n      :href=\"attachment.url\"\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n    >\n      <img :src=\"attachment.url\" class=\"note-image-attach col-lg-4\" />\n    </a>\n    <div class=\"attachment\">\n      <a\n        v-if=\"attachment.url\"\n        ref=\"attachmentUrl\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n      >\n        <gl-icon name=\"paperclip\" /> {{ attachment.filename }}\n      </a>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_attachment.vue?vue&type=template&id=ff0e6db4\"\nimport script from \"./note_attachment.vue?vue&type=script&lang=js\"\nexport * from \"./note_attachment.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-attachment\"},[(_vm.attachment.image)?_c('a',{ref:\"attachmentImage\",attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('img',{staticClass:\"note-image-attach col-lg-4\",attrs:{\"src\":_vm.attachment.url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachment\"},[(_vm.attachment.url)?_c('a',{ref:\"attachmentUrl\",attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('gl-icon',{attrs:{\"name\":\"paperclip\"}}),_vm._v(\" \"+_vm._s(_vm.attachment.filename)+\"\\n    \")],1):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_awards_list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_awards_list.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters } from 'vuex';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport AwardsList from '~/vue_shared/components/awards_list.vue';\n\nexport default {\n  components: {\n    AwardsList,\n  },\n  props: {\n    awards: {\n      type: Array,\n      required: true,\n    },\n    toggleAwardPath: {\n      type: String,\n      required: true,\n    },\n    noteAuthorId: {\n      type: Number,\n      required: true,\n    },\n    noteId: {\n      type: String,\n      required: true,\n    },\n    canAwardEmoji: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapGetters(['getUserData']),\n    isAuthoredByMe() {\n      return this.noteAuthorId === this.getUserData.id;\n    },\n  },\n  methods: {\n    ...mapActions(['toggleAwardRequest']),\n    handleAward(awardName) {\n      const data = {\n        endpoint: this.toggleAwardPath,\n        noteId: this.noteId,\n        awardName,\n      };\n\n      this.toggleAwardRequest(data).catch(() =>\n        createAlert({\n          message: __('Something went wrong on our end.'),\n        }),\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"note-awards\">\n    <awards-list\n      :awards=\"awards\"\n      :can-award-emoji=\"canAwardEmoji\"\n      :current-user-id=\"getUserData.id\"\n      @award=\"handleAward($event)\"\n    />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_awards_list.vue?vue&type=template&id=29bdaae6\"\nimport script from \"./note_awards_list.vue?vue&type=script&lang=js\"\nexport * from \"./note_awards_list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"note-awards\"},[_c('awards-list',{attrs:{\"awards\":_vm.awards,\"can-award-emoji\":_vm.canAwardEmoji,\"current-user-id\":_vm.getUserData.id},on:{\"award\":function($event){return _vm.handleAward($event)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_body.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note_body.vue?vue&type=script&lang=js\"","<script>\nimport { escape } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { __ } from '~/locale';\nimport Suggestions from '~/vue_shared/components/markdown/suggestions.vue';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport NoteAttachment from './note_attachment.vue';\nimport NoteAwardsList from './note_awards_list.vue';\nimport NoteEditedText from './note_edited_text.vue';\nimport NoteForm from './note_form.vue';\n\nexport default {\n  components: {\n    NoteEditedText,\n    NoteAwardsList,\n    NoteAttachment,\n    NoteForm,\n    Suggestions,\n    DuoCodeReviewFeedback: () =>\n      import('ee_component/notes/components/duo_code_review_feedback.vue'),\n  },\n  directives: {\n    SafeHtml,\n  },\n  props: {\n    note: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    file: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    canEdit: {\n      type: Boolean,\n      required: true,\n    },\n    isEditing: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    restoreFromAutosave: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  computed: {\n    ...mapGetters(['getDiscussion', 'suggestionsCount', 'getSuggestionsFilePaths']),\n    ...mapGetters('diffs', ['suggestionCommitMessage']),\n    ...mapState({\n      batchSuggestionsInfo: (state) => state.notes.batchSuggestionsInfo,\n      failedToLoadMetadata: (state) => state.page.failedToLoadMetadata,\n    }),\n    discussion() {\n      if (!this.note.isDraft) return {};\n\n      return this.getDiscussion(this.note.discussion_id);\n    },\n    noteBody() {\n      return this.note.note;\n    },\n    saveButtonTitle() {\n      return this.note.internal ? __('Save internal note') : __('Save comment');\n    },\n    hasSuggestion() {\n      return this.note.suggestions && this.note.suggestions.length;\n    },\n    lineType() {\n      return this.line ? this.line.type : null;\n    },\n    commitMessage() {\n      // Please see this issue comment for why these\n      //  are hard-coded to 1:\n      //  https://gitlab.com/gitlab-org/gitlab/-/issues/291027#note_468308022\n      const suggestionsCount = this.batchSuggestionsInfo.length || 1;\n      const batchFilePaths = this.getSuggestionsFilePaths();\n      const filePaths = batchFilePaths.length ? batchFilePaths : [this.file.file_path];\n      const filesCount = filePaths.length;\n      // Can be potentially replaced by calculated co-authors of a particular suggestion or batched suggestion\n      const coAuthoredByTrailer = __('Co-authored-by: ...');\n      const suggestion = this.suggestionCommitMessage({\n        file_paths: filePaths.join(', '),\n        suggestions_count: suggestionsCount,\n        files_count: filesCount,\n        co_authored_by: coAuthoredByTrailer,\n      });\n\n      return escape(suggestion);\n    },\n  },\n  mounted() {\n    this.renderGFM();\n  },\n  updated() {\n    this.renderGFM();\n  },\n  methods: {\n    ...mapActions([\n      'submitSuggestion',\n      'submitSuggestionBatch',\n      'addSuggestionInfoToBatch',\n      'removeSuggestionInfoFromBatch',\n    ]),\n    renderGFM() {\n      renderGFM(this.$refs['note-body']);\n    },\n    // eslint-disable-next-line max-params\n    handleFormUpdate(noteText, parentElement, callback, resolveDiscussion) {\n      this.$emit('handleFormUpdate', { noteText, parentElement, callback, resolveDiscussion });\n    },\n    formCancelHandler(shouldConfirm, isDirty) {\n      this.$emit('cancelForm', { shouldConfirm, isDirty });\n    },\n    applySuggestion({ suggestionId, flashContainer, callback = () => {}, message }) {\n      const { discussion_id: discussionId, id: noteId } = this.note;\n\n      return this.submitSuggestion({\n        discussionId,\n        noteId,\n        suggestionId,\n        flashContainer,\n        message,\n      }).then(callback);\n    },\n    applySuggestionBatch({ message, flashContainer }) {\n      return this.submitSuggestionBatch({ message, flashContainer });\n    },\n    addSuggestionToBatch(suggestionId) {\n      const { discussion_id: discussionId, id: noteId } = this.note;\n\n      this.addSuggestionInfoToBatch({ suggestionId, discussionId, noteId });\n    },\n    removeSuggestionFromBatch(suggestionId) {\n      this.removeSuggestionInfoFromBatch(suggestionId);\n    },\n  },\n  safeHtmlConfig: {\n    ADD_TAGS: ['use', 'gl-emoji', 'copy-code'],\n  },\n};\n</script>\n\n<template>\n  <div\n    ref=\"note-body\"\n    :class=\"{\n      'js-task-list-container': canEdit,\n    }\"\n    class=\"note-body\"\n  >\n    <suggestions\n      v-if=\"hasSuggestion && !isEditing\"\n      :suggestions=\"note.suggestions\"\n      :suggestions-count=\"suggestionsCount\"\n      :batch-suggestions-info=\"batchSuggestionsInfo\"\n      :note-html=\"note.note_html\"\n      :line-type=\"lineType\"\n      :help-page-path=\"helpPagePath\"\n      :default-commit-message=\"commitMessage\"\n      :failed-to-load-metadata=\"failedToLoadMetadata\"\n      @apply=\"applySuggestion\"\n      @applyBatch=\"applySuggestionBatch\"\n      @addToBatch=\"addSuggestionToBatch\"\n      @removeFromBatch=\"removeSuggestionFromBatch\"\n    />\n    <div v-else v-safe-html:[$options.safeHtmlConfig]=\"note.note_html\" class=\"note-text md\"></div>\n    <duo-code-review-feedback\n      v-if=\"note.author.user_type === 'duo_code_review_bot' && note.type !== 'DiffNote'\"\n      class=\"gl-mt-3\"\n      data-testid=\"code-review-feedback\"\n    />\n    <note-form\n      v-if=\"isEditing\"\n      ref=\"noteForm\"\n      :note-body=\"noteBody\"\n      :note-id=\"note.id\"\n      :line=\"line\"\n      :note=\"note\"\n      :diff-file=\"file\"\n      :save-button-title=\"saveButtonTitle\"\n      :help-page-path=\"helpPagePath\"\n      :discussion=\"discussion\"\n      :resolve-discussion=\"note.resolve_discussion\"\n      :autosave-key=\"autosaveKey\"\n      :restore-from-autosave=\"restoreFromAutosave\"\n      @handleFormUpdate=\"handleFormUpdate\"\n      @cancelForm=\"formCancelHandler\"\n    />\n    <!-- eslint-disable vue/no-mutating-props -->\n    <textarea\n      v-if=\"canEdit\"\n      v-model=\"note.note\"\n      :data-update-url=\"note.path\"\n      class=\"hidden js-task-list-field\"\n      dir=\"auto\"\n    ></textarea>\n    <!-- eslint-enable vue/no-mutating-props -->\n    <note-edited-text\n      v-if=\"note.last_edited_at\"\n      :edited-at=\"note.last_edited_at\"\n      :edited-by=\"note.last_edited_by\"\n      :action-text=\"__('Edited')\"\n      class=\"note_edited_ago\"\n    />\n    <note-awards-list\n      v-if=\"note.award_emoji && note.award_emoji.length\"\n      :note-id=\"note.id\"\n      :note-author-id=\"note.author.id\"\n      :awards=\"note.award_emoji\"\n      :toggle-award-path=\"note.toggle_award_path\"\n      :can-award-emoji=\"note.current_user.can_award_emoji\"\n    />\n    <note-attachment v-if=\"note.attachment\" :attachment=\"note.attachment\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./note_body.vue?vue&type=template&id=40f5e1ee\"\nimport script from \"./note_body.vue?vue&type=script&lang=js\"\nexport * from \"./note_body.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"note-body\",staticClass:\"note-body\",class:{\n    'js-task-list-container': _vm.canEdit,\n  }},[(_vm.hasSuggestion && !_vm.isEditing)?_c('suggestions',{attrs:{\"suggestions\":_vm.note.suggestions,\"suggestions-count\":_vm.suggestionsCount,\"batch-suggestions-info\":_vm.batchSuggestionsInfo,\"note-html\":_vm.note.note_html,\"line-type\":_vm.lineType,\"help-page-path\":_vm.helpPagePath,\"default-commit-message\":_vm.commitMessage,\"failed-to-load-metadata\":_vm.failedToLoadMetadata},on:{\"apply\":_vm.applySuggestion,\"applyBatch\":_vm.applySuggestionBatch,\"addToBatch\":_vm.addSuggestionToBatch,\"removeFromBatch\":_vm.removeSuggestionFromBatch}}):_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html:[$options.safeHtmlConfig]\",value:(_vm.note.note_html),expression:\"note.note_html\",arg:_vm.$options.safeHtmlConfig}],staticClass:\"note-text md\"}),_vm._v(\" \"),(_vm.note.author.user_type === 'duo_code_review_bot' && _vm.note.type !== 'DiffNote')?_c('duo-code-review-feedback',{staticClass:\"gl-mt-3\",attrs:{\"data-testid\":\"code-review-feedback\"}}):_vm._e(),_vm._v(\" \"),(_vm.isEditing)?_c('note-form',{ref:\"noteForm\",attrs:{\"note-body\":_vm.noteBody,\"note-id\":_vm.note.id,\"line\":_vm.line,\"note\":_vm.note,\"diff-file\":_vm.file,\"save-button-title\":_vm.saveButtonTitle,\"help-page-path\":_vm.helpPagePath,\"discussion\":_vm.discussion,\"resolve-discussion\":_vm.note.resolve_discussion,\"autosave-key\":_vm.autosaveKey,\"restore-from-autosave\":_vm.restoreFromAutosave},on:{\"handleFormUpdate\":_vm.handleFormUpdate,\"cancelForm\":_vm.formCancelHandler}}):_vm._e(),_vm._v(\" \"),(_vm.canEdit)?_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.note),expression:\"note.note\"}],staticClass:\"hidden js-task-list-field\",attrs:{\"data-update-url\":_vm.note.path,\"dir\":\"auto\"},domProps:{\"value\":(_vm.note.note)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.note, \"note\", $event.target.value)}}}):_vm._e(),_vm._v(\" \"),(_vm.note.last_edited_at)?_c('note-edited-text',{staticClass:\"note_edited_ago\",attrs:{\"edited-at\":_vm.note.last_edited_at,\"edited-by\":_vm.note.last_edited_by,\"action-text\":_vm.__('Edited')}}):_vm._e(),_vm._v(\" \"),(_vm.note.award_emoji && _vm.note.award_emoji.length)?_c('note-awards-list',{attrs:{\"note-id\":_vm.note.id,\"note-author-id\":_vm.note.author.id,\"awards\":_vm.note.award_emoji,\"toggle-award-path\":_vm.note.toggle_award_path,\"can-award-emoji\":_vm.note.current_user.can_award_emoji}}):_vm._e(),_vm._v(\" \"),(_vm.note.attachment)?_c('note-attachment',{attrs:{\"attachment\":_vm.note.attachment}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./noteable_note.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./noteable_note.vue?vue&type=script&lang=js\"","<script>\nimport { GlSprintf, GlAvatarLink, GlAvatar } from '@gitlab/ui';\nimport { escape } from 'lodash';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions } from 'vuex';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';\nimport { INLINE_DIFF_LINES_KEY } from '~/diffs/constants';\nimport { createAlert } from '~/alert';\nimport { HTTP_STATUS_GONE } from '~/lib/utils/http_status';\nimport { ignoreWhilePending } from '~/lib/utils/ignore_while_pending';\nimport { truncateSha } from '~/lib/utils/text_utility';\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\nimport { __, s__, sprintf } from '~/locale';\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport { detectAndConfirmSensitiveTokens } from '~/lib/utils/secret_detection';\nimport eventHub from '../event_hub';\nimport noteable from '../mixins/noteable';\nimport resolvable from '../mixins/resolvable';\nimport { renderMarkdown, updateNoteErrorMessage } from '../utils';\nimport {\n  getStartLineNumber,\n  getEndLineNumber,\n  getLineClasses,\n  commentLineOptions,\n} from './multiline_comment_utils';\nimport NoteActions from './note_actions.vue';\nimport NoteBody from './note_body.vue';\nimport NoteHeader from './note_header.vue';\n\nexport default {\n  name: 'NoteableNote',\n  components: {\n    GlSprintf,\n    NoteHeader,\n    NoteActions,\n    NoteBody,\n    TimelineEntryItem,\n    GlAvatarLink,\n    GlAvatar,\n  },\n  directives: {\n    SafeHtml,\n  },\n  mixins: [noteable, resolvable],\n  inject: {\n    reportAbusePath: {\n      default: '',\n    },\n  },\n  props: {\n    note: {\n      type: Object,\n      required: true,\n    },\n    line: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    discussionFile: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    commit: {\n      type: Object,\n      required: false,\n      default: () => null,\n    },\n    showReplyButton: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    diffLines: {\n      type: Array,\n      required: false,\n      default: null,\n    },\n    discussionRoot: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    discussionResolvePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    isOverviewTab: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    shouldScrollToNote: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    discussion: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    autosaveKey: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    restoreFromAutosave: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n  },\n  data() {\n    return {\n      isEditingLocal: false,\n      isDeleting: false,\n      isRequesting: false,\n      isResolving: false,\n      commentLineStart: {},\n      resolveAsThread: true,\n    };\n  },\n  computed: {\n    ...mapGetters('diffs', ['getDiffFileByHash']),\n    ...mapGetters(['targetNoteHash', 'getNoteableData', 'getUserData', 'commentsDisabled']),\n    isEditing: {\n      get() {\n        return this.note.isEditing ?? this.isEditingLocal;\n      },\n      set(value) {\n        this.isEditingLocal = value;\n        if (value) {\n          this.$emit('handleEdit');\n        } else {\n          this.$emit('cancelForm');\n        }\n      },\n    },\n    author() {\n      return this.note.author;\n    },\n    authorId() {\n      return getIdFromGraphQLId(this.author.id);\n    },\n    commentType() {\n      return this.note.internal ? __('internal note') : __('comment');\n    },\n    classNameBindings() {\n      return {\n        [`note-row-${this.note.id}`]: true,\n        'is-editing': this.isEditing && !this.isRequesting,\n        'is-requesting being-posted': this.isRequesting,\n        'disabled-content': this.isDeleting,\n        target: this.isTarget,\n        'is-editable': this.canEdit,\n      };\n    },\n    canAwardEmoji() {\n      return this.note.current_user?.can_award_emoji ?? false;\n    },\n    canEdit() {\n      return this.note.current_user?.can_edit ?? false;\n    },\n    canReportAsAbuse() {\n      return Boolean(this.reportAbusePath) && this.authorId !== this.getUserData.id;\n    },\n    noteAnchorId() {\n      return `note_${this.note.id}`;\n    },\n    isTarget() {\n      return this.targetNoteHash === this.noteAnchorId;\n    },\n    discussionId() {\n      if (this.discussion) {\n        return this.discussion.id;\n      }\n      return '';\n    },\n    actionText() {\n      if (!this.commit) {\n        return '';\n      }\n\n      // We need to do this to ensure we have the correct sentence order\n      // when translating this as the sentence order may change from one\n      // language to the next. See:\n      // https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/24427#note_133713771\n      const { id, url } = this.commit;\n      const commitLink = `<a class=\"commit-sha monospace\" href=\"${escape(url)}\">${truncateSha(\n        id,\n      )}</a>`;\n      return sprintf(s__('MergeRequests|commented on commit %{commitLink}'), { commitLink }, false);\n    },\n    isDraft() {\n      return this.note.isDraft;\n    },\n    canResolve() {\n      if (!this.discussionRoot) return false;\n      if (!this.note.resolvable) return false;\n\n      return this.note.current_user?.can_resolve_discussion;\n    },\n    lineRange() {\n      return this.note.position?.line_range;\n    },\n    startLineNumber() {\n      return getStartLineNumber(this.lineRange);\n    },\n    endLineNumber() {\n      return getEndLineNumber(this.lineRange);\n    },\n    showMultiLineComment() {\n      if (\n        !this.discussionRoot ||\n        this.startLineNumber.length === 0 ||\n        this.endLineNumber.length === 0\n      )\n        return false;\n\n      return this.line && this.startLineNumber !== this.endLineNumber;\n    },\n    commentLineOptions() {\n      const lines = this.diffFile[INLINE_DIFF_LINES_KEY].length;\n      return commentLineOptions(lines, this.commentLineStart, this.line.line_code);\n    },\n    diffFile() {\n      let fileResolvedFromAvailableSource;\n\n      if (this.commentLineStart.line_code) {\n        const lineCode = this.commentLineStart.line_code.split('_')[0];\n        fileResolvedFromAvailableSource = this.getDiffFileByHash(lineCode);\n      }\n\n      if (!fileResolvedFromAvailableSource && this.discussionFile) {\n        fileResolvedFromAvailableSource = this.discussionFile;\n      }\n\n      return fileResolvedFromAvailableSource || null;\n    },\n    isMRDiffView() {\n      const isFileComment = this.note.position?.position_type === 'file';\n      return !this.isOverviewTab && (this.line || isFileComment);\n    },\n  },\n  created() {\n    const line = this.note.position?.line_range?.start || this.line;\n\n    this.commentLineStart = line\n      ? {\n          line_code: line.line_code,\n          type: line.type,\n          old_line: line.old_line,\n          new_line: line.new_line,\n        }\n      : {};\n\n    eventHub.$on('enterEditMode', ({ noteId }) => {\n      if (noteId === this.note.id) {\n        this.isEditing = true;\n        this.setSelectedCommentPositionHover();\n        this.$el.scrollIntoView();\n      }\n    });\n  },\n\n  mounted() {\n    if (this.isTarget && this.shouldScrollToNote) {\n      this.$el.scrollIntoView({ duration: 0 });\n    }\n  },\n\n  methods: {\n    ...mapActions([\n      'deleteNote',\n      'removeNote',\n      'updateNote',\n      'toggleResolveNote',\n      'updateAssignees',\n      'setSelectedCommentPositionHover',\n    ]),\n    editHandler() {\n      this.isEditing = true;\n      this.setSelectedCommentPositionHover();\n    },\n    async deleteHandler() {\n      let { commentType } = this;\n\n      if (this.note.isDraft) {\n        // Draft internal notes (i.e. MR review comments) are not supported.\n        commentType = __('pending comment');\n      }\n\n      const msg = sprintf(__('Are you sure you want to delete this %{commentType}?'), {\n        commentType,\n      });\n      const confirmed = await confirmAction(msg, {\n        primaryBtnVariant: 'danger',\n        primaryBtnText: this.note.internal ? __('Delete internal note') : __('Delete comment'),\n      });\n\n      if (confirmed) {\n        this.isDeleting = true;\n        this.$emit('handleDeleteNote', this.note);\n\n        if (this.note.isDraft) return;\n\n        this.deleteNote(this.note)\n          .then(() => {\n            this.isDeleting = false;\n          })\n          .catch(() => {\n            createAlert({\n              message: __('Something went wrong while deleting your note. Please try again.'),\n            });\n            this.isDeleting = false;\n          });\n      }\n    },\n    updateSuccess() {\n      this.isEditingLocal = false;\n      this.isRequesting = false;\n      this.oldContent = null;\n      renderGFM(this.$refs.noteBody.$el);\n      this.$emit('updateSuccess');\n    },\n    async formUpdateHandler({ noteText, callback, resolveDiscussion }) {\n      this.$emit('handleUpdateNote', {\n        note: this.note,\n        noteText,\n        resolveDiscussion,\n        flashContainer: this.$el,\n        callback: () => this.updateSuccess(),\n        errorCallback: () => callback(),\n      });\n\n      if (this.isDraft) return;\n\n      const confirmSubmit = await detectAndConfirmSensitiveTokens({ content: noteText });\n\n      if (!confirmSubmit) {\n        callback();\n        return;\n      }\n\n      const data = {\n        endpoint: this.note.path,\n        note: {\n          target_type: this.getNoteableData.targetType,\n          target_id: this.note.noteable_id,\n          note: { note: noteText },\n        },\n      };\n\n      this.isRequesting = true;\n      this.oldContent = this.note.note_html;\n      // eslint-disable-next-line vue/no-mutating-props\n      this.note.note_html = renderMarkdown(noteText);\n\n      this.updateNote(data)\n        .then(() => {\n          this.updateSuccess();\n          callback();\n        })\n        .catch((e) => {\n          if (e.status === HTTP_STATUS_GONE) {\n            this.removeNote(this.note);\n            this.updateSuccess();\n            callback();\n          } else {\n            this.isRequesting = false;\n            this.isEditing = true;\n            this.setSelectedCommentPositionHover();\n            this.$nextTick(() => {\n              this.handleUpdateError(e); // The 'e' parameter is being used in JH, don't remove it\n              this.recoverNoteContent();\n              callback();\n            });\n          }\n        });\n    },\n    handleUpdateError(e) {\n      createAlert({\n        message: updateNoteErrorMessage(e),\n        parent: this.$el,\n      });\n    },\n    formCancelHandler: ignoreWhilePending(async function formCancelHandler({\n      shouldConfirm,\n      isDirty,\n    }) {\n      if (shouldConfirm && isDirty) {\n        const msg = sprintf(__('Are you sure you want to cancel editing this %{commentType}?'), {\n          commentType: this.commentType,\n        });\n        const confirmed = await confirmAction(msg, {\n          primaryBtnText: __('Cancel editing'),\n          primaryBtnVariant: 'danger',\n          secondaryBtnVariant: 'default',\n          secondaryBtnText: __('Continue editing'),\n          hideCancel: true,\n        });\n        if (!confirmed) return;\n      }\n      this.recoverNoteContent();\n      this.isEditing = false;\n    }),\n    recoverNoteContent() {\n      if (this.oldContent) {\n        // eslint-disable-next-line vue/no-mutating-props\n        this.note.note_html = this.oldContent;\n      }\n    },\n    getLineClasses(lineNumber) {\n      return getLineClasses(lineNumber);\n    },\n    assigneesUpdate(assignees) {\n      this.updateAssignees(assignees);\n    },\n  },\n};\n</script>\n\n<template>\n  <timeline-entry-item\n    :id=\"noteAnchorId\"\n    :class=\"{ ...classNameBindings, 'internal-note': note.internal }\"\n    :data-award-url=\"note.toggle_award_path\"\n    :data-note-id=\"note.id\"\n    class=\"note note-wrapper note-comment\"\n    data-testid=\"noteable-note-container\"\n  >\n    <div\n      v-if=\"showMultiLineComment\"\n      data-testid=\"multiline-comment\"\n      class=\"gl-border-b gl-border-section gl-px-5 gl-py-3 gl-text-subtle\"\n    >\n      <gl-sprintf :message=\"__('Comment on lines %{startLine} to %{endLine}')\">\n        <template #startLine>\n          <span :class=\"getLineClasses(startLineNumber)\">{{ startLineNumber }}</span>\n        </template>\n        <template #endLine>\n          <span :class=\"getLineClasses(endLineNumber)\">{{ endLineNumber }}</span>\n        </template>\n      </gl-sprintf>\n    </div>\n\n    <div v-if=\"isMRDiffView\" class=\"timeline-avatar gl-float-left gl-pt-2\">\n      <gl-avatar-link\n        :href=\"author.path\"\n        :data-user-id=\"authorId\"\n        :data-username=\"author.username\"\n        class=\"js-user-link\"\n      >\n        <gl-avatar\n          :src=\"author.avatar_url\"\n          :entity-name=\"author.username\"\n          :alt=\"author.name\"\n          :size=\"24\"\n        />\n\n        <slot name=\"avatar-badge\"></slot>\n      </gl-avatar-link>\n    </div>\n\n    <div v-else class=\"timeline-avatar gl-float-left\">\n      <gl-avatar-link\n        :href=\"author.path\"\n        :data-user-id=\"authorId\"\n        :data-username=\"author.username\"\n        class=\"js-user-link gl-relative\"\n      >\n        <gl-avatar\n          :src=\"author.avatar_url\"\n          :entity-name=\"author.username\"\n          :alt=\"author.name\"\n          :size=\"32\"\n        />\n\n        <slot name=\"avatar-badge\"></slot>\n      </gl-avatar-link>\n    </div>\n\n    <div class=\"timeline-content\">\n      <div class=\"note-header\">\n        <note-header\n          :author=\"author\"\n          :created-at=\"note.created_at\"\n          :note-id=\"note.id\"\n          :is-internal-note=\"note.internal\"\n          :is-imported=\"note.imported\"\n          :noteable-type=\"noteableType\"\n          :email-participant=\"note.external_author\"\n        >\n          <template #note-header-info>\n            <slot name=\"note-header-info\"></slot>\n          </template>\n          <span v-if=\"commit\" v-safe-html=\"actionText\"></span>\n          <span v-else-if=\"note.created_at\" class=\"gl-hidden sm:gl-inline\">&middot;</span>\n        </note-header>\n        <note-actions\n          :author=\"author\"\n          :author-id=\"authorId\"\n          :note-id=\"note.id\"\n          :note-url=\"note.noteable_note_url\"\n          :access-level=\"note.human_access\"\n          :is-contributor=\"note.is_contributor\"\n          :is-author=\"note.is_noteable_author\"\n          :project-name=\"note.project_name\"\n          :noteable-type=\"note.noteable_type\"\n          :show-reply=\"showReplyButton\"\n          :can-edit=\"canEdit\"\n          :can-award-emoji=\"canAwardEmoji\"\n          :can-delete=\"canEdit\"\n          :can-report-as-abuse=\"canReportAsAbuse\"\n          :can-resolve=\"canResolve\"\n          :resolvable=\"note.resolvable || note.isDraft\"\n          :is-resolved=\"note.resolved || note.resolve_discussion\"\n          :is-resolving=\"isResolving\"\n          :resolved-by=\"note.resolved_by\"\n          :is-draft=\"note.isDraft\"\n          :resolve-discussion=\"note.isDraft && note.resolve_discussion\"\n          :discussion-id=\"discussionId\"\n          :award-path=\"note.toggle_award_path\"\n          @handleEdit=\"editHandler\"\n          @handleDelete=\"deleteHandler\"\n          @handleResolve=\"resolveHandler\"\n          @startReplying=\"$emit('startReplying')\"\n          @updateAssignees=\"assigneesUpdate\"\n        />\n      </div>\n      <div class=\"timeline-discussion-body\">\n        <slot name=\"discussion-resolved-text\"></slot>\n        <slot name=\"note-body\">\n          <note-body\n            ref=\"noteBody\"\n            :note=\"note\"\n            :can-edit=\"canEdit\"\n            :line=\"line\"\n            :file=\"diffFile\"\n            :is-editing=\"isEditing\"\n            :autosave-key=\"autosaveKey\"\n            :restore-from-autosave=\"restoreFromAutosave\"\n            :help-page-path=\"helpPagePath\"\n            @handleFormUpdate=\"formUpdateHandler\"\n            @cancelForm=\"formCancelHandler\"\n          />\n        </slot>\n        <div class=\"timeline-discussion-body-footer\">\n          <slot name=\"after-note-body\"></slot>\n        </div>\n      </div>\n    </div>\n  </timeline-entry-item>\n</template>\n","import { render, staticRenderFns } from \"./noteable_note.vue?vue&type=template&id=793c0ad5\"\nimport script from \"./noteable_note.vue?vue&type=script&lang=js\"\nexport * from \"./noteable_note.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getFile\"},\"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\":\"filePath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}},\"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\":\"repository\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"blobs\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"paths\"},\"value\":{\"kind\":\"ListValue\",\"values\":[{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filePath\"}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"ref\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":227}};\n    doc.loc.source = {\"body\":\"query getFile($fullPath: ID!, $filePath: String!, $ref: String) {\\n  project(fullPath: $fullPath) {\\n    id\\n    repository {\\n      blobs(paths: [$filePath], ref: $ref) {\\n        nodes {\\n          id\\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[\"getFile\"] = oneQuery(doc, \"getFile\");\n        \n","/**\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","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gl-flex gl-items-center\"},[_c('span',[_vm._v(_vm._s(_vm.__('Any eligible user')))]),_vm._v(\" \"),_c('span',{staticClass:\"gl-ml-2 gl-inline-flex\",attrs:{\"id\":_vm.popoverContainerId}},[_c('help-icon',{staticClass:\"author-link\",attrs:{\"id\":_vm.popoverId,\"tabindex\":\"0\",\"aria-label\":_vm.__('help')}}),_vm._v(\" \"),_c('gl-popover',{attrs:{\"target\":_vm.popoverId,\"container\":_vm.popoverContainerId,\"placement\":\"top\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(_vm._s(_vm.__('Who can approve?')))]},proxy:true}])},[_vm._v(\" \"),_c('ul',{staticClass:\"gl-pl-5\"},[_c('li',[_vm._v(\"\\n          \"+_vm._s(_vm.__('Any member with at least Developer permissions on the project.'))+\"\\n        \")]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.__('Members listed as CODEOWNERS of affected files.')))]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n          \"+_vm._s(_vm.__(\"Users or groups set as approvers in the project's or merge request's settings.\"))+\"\\n        \")])]),_vm._v(\" \"),_c('gl-link',{staticClass:\"text-1\",attrs:{\"href\":_vm.eligibleApproversDocsPath,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.__('More information')))])],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!./empty_rule_approvers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty_rule_approvers.vue?vue&type=script&lang=js\"","<script>\nimport { GlPopover, GlLink } from '@gitlab/ui';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\n\nexport default {\n  components: {\n    GlPopover,\n    GlLink,\n    HelpIcon,\n  },\n  props: {\n    eligibleApproversDocsPath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    popoverId: {\n      type: String,\n      required: false,\n      default: 'pop-approver',\n    },\n    popoverContainerId: {\n      type: String,\n      required: false,\n      default: 'popovercontainer',\n    },\n  },\n};\n</script>\n\n<template>\n  <div class=\"gl-flex gl-items-center\">\n    <span>{{ __('Any eligible user') }}</span>\n    <span :id=\"popoverContainerId\" class=\"gl-ml-2 gl-inline-flex\">\n      <help-icon :id=\"popoverId\" tabindex=\"0\" :aria-label=\"__('help')\" class=\"author-link\" />\n      <gl-popover :target=\"popoverId\" :container=\"popoverContainerId\" placement=\"top\">\n        <template #title>{{ __('Who can approve?') }}</template>\n        <ul class=\"gl-pl-5\">\n          <li>\n            {{ __('Any member with at least Developer permissions on the project.') }}\n          </li>\n          <li>{{ __('Members listed as CODEOWNERS of affected files.') }}</li>\n          <li>\n            {{\n              __(\"Users or groups set as approvers in the project's or merge request's settings.\")\n            }}\n          </li>\n        </ul>\n        <gl-link :href=\"eligibleApproversDocsPath\" class=\"text-1\" target=\"_blank\">{{\n          __('More information')\n        }}</gl-link>\n      </gl-popover>\n    </span>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./empty_rule_approvers.vue?vue&type=template&id=00f0f20a\"\nimport script from \"./empty_rule_approvers.vue?vue&type=script&lang=js\"\nexport * from \"./empty_rule_approvers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/** 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","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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('timeline-entry-item',{staticClass:\"note note-wrapper\"},[_c('div',{staticClass:\"gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle\"}),_vm._v(\" \"),_c('div',{staticClass:\"timeline-content\"},[_c('div',{staticClass:\"note-header\"}),_vm._v(\" \"),_c('div',{staticClass:\"note-body gl-mt-4\"},[_c('gl-skeleton-loader')],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!./skeleton_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!./skeleton_note.vue?vue&type=script&lang=js\"","<script>\nimport { GlSkeletonLoader } from '@gitlab/ui';\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\n\nexport default {\n  name: 'SkeletonNote',\n  components: {\n    GlSkeletonLoader,\n    TimelineEntryItem,\n  },\n};\n</script>\n\n<template>\n  <timeline-entry-item class=\"note note-wrapper\">\n    <div\n      class=\"gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle\"\n    ></div>\n    <div class=\"timeline-content\">\n      <div class=\"note-header\"></div>\n      <div class=\"note-body gl-mt-4\"><gl-skeleton-loader /></div>\n    </div>\n  </timeline-entry-item>\n</template>\n","import { render, staticRenderFns } from \"./skeleton_note.vue?vue&type=template&id=f4940880\"\nimport script from \"./skeleton_note.vue?vue&type=script&lang=js\"\nexport * from \"./skeleton_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","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","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common        = require('./common');\nvar YAMLException = require('./exception');\nvar Type          = require('./type');\n\n\nfunction compileList(schema, name, result) {\n  var exclude = [];\n\n  schema.include.forEach(function (includedSchema) {\n    result = compileList(includedSchema, name, result);\n  });\n\n  schema[name].forEach(function (currentType) {\n    result.forEach(function (previousType, previousIndex) {\n      if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n        exclude.push(previousIndex);\n      }\n    });\n\n    result.push(currentType);\n  });\n\n  return result.filter(function (type, index) {\n    return exclude.indexOf(index) === -1;\n  });\n}\n\n\nfunction compileMap(/* lists... */) {\n  var result = {\n        scalar: {},\n        sequence: {},\n        mapping: {},\n        fallback: {}\n      }, index, length;\n\n  function collectType(type) {\n    result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n  }\n\n  for (index = 0, length = arguments.length; index < length; index += 1) {\n    arguments[index].forEach(collectType);\n  }\n  return result;\n}\n\n\nfunction Schema(definition) {\n  this.include  = definition.include  || [];\n  this.implicit = definition.implicit || [];\n  this.explicit = definition.explicit || [];\n\n  this.implicit.forEach(function (type) {\n    if (type.loadKind && type.loadKind !== 'scalar') {\n      throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n    }\n  });\n\n  this.compiledImplicit = compileList(this, 'implicit', []);\n  this.compiledExplicit = compileList(this, 'explicit', []);\n  this.compiledTypeMap  = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n  var schemas, types;\n\n  switch (arguments.length) {\n    case 1:\n      schemas = Schema.DEFAULT;\n      types = arguments[0];\n      break;\n\n    case 2:\n      schemas = arguments[0];\n      types = arguments[1];\n      break;\n\n    default:\n      throw new YAMLException('Wrong number of arguments for Schema.create function');\n  }\n\n  schemas = common.toArray(schemas);\n  types = common.toArray(types);\n\n  if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n    throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n  }\n\n  if (!types.every(function (type) { return type instanceof Type; })) {\n    throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n  }\n\n  return new Schema({\n    include: schemas,\n    explicit: types\n  });\n};\n\n\nmodule.exports = Schema;\n","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","'use strict';\n\nvar common = require('../common');\nvar Type   = require('../type');\n\nfunction isHexCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n         ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n         ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n  return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n  if (data === null) return false;\n\n  var max = data.length,\n      index = 0,\n      hasDigits = false,\n      ch;\n\n  if (!max) return false;\n\n  ch = data[index];\n\n  // sign\n  if (ch === '-' || ch === '+') {\n    ch = data[++index];\n  }\n\n  if (ch === '0') {\n    // 0\n    if (index + 1 === max) return true;\n    ch = data[++index];\n\n    // base 2, base 8, base 16\n\n    if (ch === 'b') {\n      // base 2\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (ch !== '0' && ch !== '1') return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n\n\n    if (ch === 'x') {\n      // base 16\n      index++;\n\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === '_') continue;\n        if (!isHexCode(data.charCodeAt(index))) return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== '_';\n    }\n\n    // base 8\n    for (; index < max; index++) {\n      ch = data[index];\n      if (ch === '_') continue;\n      if (!isOctCode(data.charCodeAt(index))) return false;\n      hasDigits = true;\n    }\n    return hasDigits && ch !== '_';\n  }\n\n  // base 10 (except 0) or base 60\n\n  // value should not start with `_`;\n  if (ch === '_') return false;\n\n  for (; index < max; index++) {\n    ch = data[index];\n    if (ch === '_') continue;\n    if (ch === ':') break;\n    if (!isDecCode(data.charCodeAt(index))) {\n      return false;\n    }\n    hasDigits = true;\n  }\n\n  // Should have digits and should not end with `_`\n  if (!hasDigits || ch === '_') return false;\n\n  // if !base60 - done;\n  if (ch !== ':') return true;\n\n  // base60 almost not used, no needs to optimize\n  return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n  var value = data, sign = 1, ch, base, digits = [];\n\n  if (value.indexOf('_') !== -1) {\n    value = value.replace(/_/g, '');\n  }\n\n  ch = value[0];\n\n  if (ch === '-' || ch === '+') {\n    if (ch === '-') sign = -1;\n    value = value.slice(1);\n    ch = value[0];\n  }\n\n  if (value === '0') return 0;\n\n  if (ch === '0') {\n    if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n    if (value[1] === 'x') return sign * parseInt(value, 16);\n    return sign * parseInt(value, 8);\n  }\n\n  if (value.indexOf(':') !== -1) {\n    value.split(':').forEach(function (v) {\n      digits.unshift(parseInt(v, 10));\n    });\n\n    value = 0;\n    base = 1;\n\n    digits.forEach(function (d) {\n      value += (d * base);\n      base *= 60;\n    });\n\n    return sign * value;\n\n  }\n\n  return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n  return (Object.prototype.toString.call(object)) === '[object Number]' &&\n         (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n  kind: 'scalar',\n  resolve: resolveYamlInteger,\n  construct: constructYamlInteger,\n  predicate: isInteger,\n  represent: {\n    binary:      function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n    octal:       function (obj) { return obj >= 0 ? '0'  + obj.toString(8) : '-0'  + obj.toString(8).slice(1); },\n    decimal:     function (obj) { return obj.toString(10); },\n    /* eslint-disable max-len */\n    hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() :  '-0x' + obj.toString(16).toUpperCase().slice(1); }\n  },\n  defaultStyle: 'decimal',\n  styleAliases: {\n    binary:      [ 2,  'bin' ],\n    octal:       [ 8,  'oct' ],\n    decimal:     [ 10, 'dec' ],\n    hexadecimal: [ 16, 'hex' ]\n  }\n});\n","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 render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shouldShow),expression:\"shouldShow\"}],attrs:{\"id\":\"notes\"}},[_c('sidebar-subscription',{attrs:{\"iid\":_vm.noteableData.iid,\"noteable-data\":_vm.noteableData}}),_vm._v(\" \"),_c('notes-activity-header',{attrs:{\"notes-filters\":_vm.notesFilters,\"notes-filter-value\":_vm.notesFilterValue,\"ai-loading\":_vm.aiLoading},on:{\"set-ai-loading\":_vm.setAiLoading}}),_vm._v(\" \"),(_vm.aiLoading !== null)?_c('ai-summary',{attrs:{\"ai-loading\":_vm.aiLoading},on:{\"set-ai-loading\":_vm.setAiLoading}}):_vm._e(),_vm._v(\" \"),_c('ordered-layout',{attrs:{\"slot-keys\":_vm.slotKeys},scopedSlots:_vm._u([{key:\"form\",fn:function(){return [(!(_vm.commentsDisabled || _vm.timelineEnabled))?_c('comment-form',{ref:\"commentForm\",staticClass:\"js-comment-form\",attrs:{\"noteable-type\":_vm.noteableType}}):_vm._e()]},proxy:true},{key:\"comments\",fn:function(){return [_c('ul',{staticClass:\"notes main-notes-list timeline\",attrs:{\"id\":\"notes-list\"}},[_vm._l((_vm.allDiscussions),function(discussion){return [(discussion.isSkeletonNote)?_c('skeleton-loading-container',{key:discussion.id,staticClass:\"note-skeleton\"}):(discussion.isPreviewNote)?_c('timeline-entry-item',{key:discussion.id,staticClass:\"target note note-wrapper note-comment\"},[_c('note-preview',{attrs:{\"note-id\":_vm.previewNoteId}})],1):(discussion.isDraft)?_c('timeline-entry-item',{key:discussion.id},[_c('draft-note',{attrs:{\"draft\":discussion}})],1):(discussion.isPlaceholderNote)?[(discussion.placeholderType === _vm.$options.systemNote)?_c('placeholder-system-note',{key:discussion.id,attrs:{\"note\":discussion.notes[0]}}):_c('placeholder-note',{key:discussion.id,attrs:{\"note\":discussion.notes[0]}})]:(_vm.discussionIsIndividualNoteAndNotConverted(discussion))?[(discussion.notes[0].system)?_c('system-note',{key:discussion.id,attrs:{\"note\":discussion.notes[0]}}):_c('noteable-note',{key:discussion.id,attrs:{\"note\":discussion.notes[0],\"show-reply-button\":_vm.canReply},on:{\"startReplying\":function($event){return _vm.startReplying(discussion.id)}}})]:_c('noteable-discussion',{key:discussion.id,ref:\"discussions\",refInFor:true,staticClass:\"js-noteable-discussion\",attrs:{\"discussion\":discussion,\"render-diff-file\":true,\"is-overview-tab\":\"\",\"help-page-path\":_vm.helpPagePath}})]}),_vm._v(\" \"),(_vm.commentsDisabled)?_c('discussion-filter-note'):_vm._e()],2)]},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_preview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_preview.vue?vue&type=script&lang=js\"","<script>\nimport { renderGFM } from '~/behaviors/markdown/render_gfm';\nimport { convertToGraphQLId, getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport { TYPENAME_NOTE } from '~/graphql_shared/constants';\nimport * as Sentry from '~/sentry/sentry_browser_wrapper';\nimport SafeHtml from '~/vue_shared/directives/safe_html';\nimport timeagoMixin from '~/vue_shared/mixins/timeago';\nimport noteQuery from '../graphql/note.query.graphql';\nimport NoteEditedText from './note_edited_text.vue';\nimport NoteableNote from './noteable_note.vue';\n\nexport default {\n  components: {\n    NoteEditedText,\n    NoteableNote,\n  },\n  directives: {\n    SafeHtml,\n  },\n  mixins: [timeagoMixin],\n  props: {\n    noteId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      note: null,\n      hidden: false,\n    };\n  },\n  computed: {\n    showNote() {\n      return this.note && !this.hidden && !this.isSyntheticNote;\n    },\n    showEdited() {\n      return this.note && this.note.created_at !== this.note.last_edited_at;\n    },\n    isSyntheticNote() {\n      return Boolean(this.noteId?.match(/([a-f0-9]{40})/));\n    },\n    noteHtml() {\n      return this.note?.body_html;\n    },\n  },\n  watch: {\n    async noteHtml() {\n      try {\n        await this.$nextTick();\n        renderGFM(this.$refs.noteBody);\n      } catch {\n        this.fallback();\n      }\n    },\n  },\n  mounted() {\n    if (this.isSyntheticNote) {\n      this.fallback();\n    }\n  },\n  methods: {\n    fallback() {\n      this.hidden = true;\n    },\n  },\n  apollo: {\n    note: {\n      skip() {\n        return !this.noteId || this.isSyntheticNote;\n      },\n      query: noteQuery,\n      variables() {\n        return {\n          id: convertToGraphQLId(TYPENAME_NOTE, this.noteId),\n        };\n      },\n      update(data) {\n        if (!data?.note) return null;\n        return {\n          ...data.note,\n          author: {\n            ...data.note.author,\n            id: getIdFromGraphQLId(data.note.author.id),\n          },\n          last_edited_by: {\n            ...data.note.last_edited_by,\n            id: getIdFromGraphQLId(data.note.last_edited_by?.id),\n          },\n          id: getIdFromGraphQLId(data.note.id),\n        };\n      },\n      result(result) {\n        if (result?.errors?.length > 0) {\n          Sentry.captureException(result.errors[0].message);\n          this.fallback();\n        }\n\n        if (!result?.data?.note) {\n          this.fallback();\n        }\n      },\n      error(error) {\n        Sentry.captureException(error);\n        this.fallback();\n      },\n    },\n  },\n};\n</script>\n\n<template>\n  <noteable-note\n    v-if=\"showNote\"\n    :id=\"`note_${noteId}`\"\n    :note=\"note\"\n    :show-reply-button=\"false\"\n    should-scroll-to-note\n  >\n    <template #note-body>\n      <div ref=\"noteBody\" class=\"note-body\">\n        <div v-safe-html:[$options.safeHtmlConfig]=\"noteHtml\" class=\"note-text md\"></div>\n        <note-edited-text\n          v-if=\"showEdited\"\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      </div>\n    </template>\n  </noteable-note>\n</template>\n","import { render, staticRenderFns } from \"./note_preview.vue?vue&type=template&id=72acd864\"\nimport script from \"./note_preview.vue?vue&type=script&lang=js\"\nexport * from \"./note_preview.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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.showNote)?_c('noteable-note',{attrs:{\"id\":`note_${_vm.noteId}`,\"note\":_vm.note,\"show-reply-button\":false,\"should-scroll-to-note\":\"\"},scopedSlots:_vm._u([{key:\"note-body\",fn:function(){return [_c('div',{ref:\"noteBody\",staticClass:\"note-body\"},[_c('div',{directives:[{name:\"safe-html\",rawName:\"v-safe-html:[$options.safeHtmlConfig]\",value:(_vm.noteHtml),expression:\"noteHtml\",arg:_vm.$options.safeHtmlConfig}],staticClass:\"note-text md\"}),_vm._v(\" \"),(_vm.showEdited)?_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()],1)]},proxy:true}],null,false,1616355029)}):_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!./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!./comment_form.vue?vue&type=script&lang=js\"","<script>\nimport { GlAlert, GlButton, GlFormCheckbox, GlTooltipDirective } from '@gitlab/ui';\nimport $ from 'jquery';\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions, mapGetters, mapState } from 'vuex';\nimport { createAlert } from '~/alert';\nimport { STATUS_CLOSED, STATUS_MERGED, STATUS_OPEN, STATUS_REOPENED } from '~/issues/constants';\nimport { detectAndConfirmSensitiveTokens } from '~/lib/utils/secret_detection';\nimport {\n  capitalizeFirstCharacter,\n  convertToCamelCase,\n  slugifyWithUnderscore,\n} from '~/lib/utils/text_utility';\nimport { sprintf } from '~/locale';\nimport { InternalEvents } from '~/tracking';\nimport { badgeState } from '~/merge_requests/components/merge_request_header.vue';\nimport MarkdownEditor from '~/vue_shared/components/markdown/markdown_editor.vue';\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\nimport HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';\nimport { trackSavedUsingEditor } from '~/vue_shared/components/markdown/tracking';\nimport glAbilitiesMixin from '~/vue_shared/mixins/gl_abilities_mixin';\nimport { fetchUserCounts } from '~/super_sidebar/user_counts_fetch';\n\nimport * as constants from '../constants';\nimport eventHub from '../event_hub';\nimport { COMMENT_FORM } from '../i18n';\nimport { createNoteErrorMessages, isSlashCommand } from '../utils';\n\nimport issuableStateMixin from '../mixins/issuable_state';\nimport CommentFieldLayout from './comment_field_layout.vue';\nimport CommentTypeDropdown from './comment_type_dropdown.vue';\nimport DiscussionLockedWidget from './discussion_locked_widget.vue';\nimport NoteSignedOutWidget from './note_signed_out_widget.vue';\n\nexport default {\n  name: 'CommentForm',\n  i18n: COMMENT_FORM,\n  components: {\n    NoteSignedOutWidget,\n    DiscussionLockedWidget,\n    MarkdownEditor,\n    GlAlert,\n    GlButton,\n    TimelineEntryItem,\n    HelpIcon,\n    CommentFieldLayout,\n    CommentTypeDropdown,\n    GlFormCheckbox,\n    CommentTemperature: () =>\n      import(\n        /* webpackChunkName: 'comment_temperature' */ 'ee_component/ai/components/comment_temperature.vue'\n      ),\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [issuableStateMixin, InternalEvents.mixin(), glAbilitiesMixin()],\n  props: {\n    noteableType: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      note: '',\n      noteType: constants.COMMENT,\n      errors: [],\n      noteIsInternal: false,\n      isSubmitting: false,\n      isMeasuringCommentTemperature: false,\n      formFieldProps: {\n        'aria-label': this.$options.i18n.comment,\n        placeholder: this.$options.i18n.bodyPlaceholder,\n        id: 'note-body',\n        name: 'note[note]',\n        class: 'js-note-text note-textarea js-gfm-input markdown-area',\n        'data-testid': 'comment-field',\n      },\n    };\n  },\n  computed: {\n    ...mapGetters([\n      'getCurrentUserLastNote',\n      'getUserData',\n      'getNoteableData',\n      'getNoteableDataByProp',\n      'getNotesData',\n      'openState',\n      'hasDrafts',\n    ]),\n    ...mapState(['isToggleStateButtonLoading']),\n    autocompleteDataSources() {\n      return gl.GfmAutoComplete?.dataSources;\n    },\n    noteableDisplayName() {\n      const displayNameMap = {\n        [constants.ISSUE_NOTEABLE_TYPE]: this.$options.i18n.issue,\n        [constants.EPIC_NOTEABLE_TYPE]: this.$options.i18n.epic,\n        [constants.MERGE_REQUEST_NOTEABLE_TYPE]: this.$options.i18n.mergeRequest,\n      };\n\n      const noteableTypeKey =\n        constants.NOTEABLE_TYPE_MAPPING[this.noteableType] || constants.ISSUE_NOTEABLE_TYPE;\n      return displayNameMap[noteableTypeKey];\n    },\n    isLoggedIn() {\n      return this.getUserData.id;\n    },\n    commentButtonTitle() {\n      const { comment, internalComment, startThread, startInternalThread } = this.$options.i18n;\n      if (this.noteIsInternal) {\n        return this.noteType === constants.COMMENT ? internalComment : startInternalThread;\n      }\n      return this.noteType === constants.COMMENT ? comment : startThread;\n    },\n    discussionsRequireResolution() {\n      return this.getNoteableData.noteableType === constants.MERGE_REQUEST_NOTEABLE_TYPE;\n    },\n    isOpen() {\n      return this.openState === STATUS_OPEN || this.openState === STATUS_REOPENED;\n    },\n    canCreateNote() {\n      return this.getNoteableData.current_user.can_create_note;\n    },\n    canSetInternalNote() {\n      return this.getNoteableData.current_user.can_create_confidential_note;\n    },\n    issueActionButtonTitle() {\n      const openOrClose = this.isOpen ? 'close' : 'reopen';\n\n      if (this.note.length) {\n        return sprintf(this.$options.i18n.actionButton.withNote[openOrClose], {\n          actionText: this.commentButtonTitle,\n          noteable: this.noteableDisplayName,\n        });\n      }\n\n      return sprintf(this.$options.i18n.actionButton.withoutNote[openOrClose], {\n        noteable: this.noteableDisplayName,\n      });\n    },\n    actionButtonClassNames() {\n      return {\n        'btn-reopen': !this.isOpen,\n        'btn-close': this.isOpen,\n        'js-note-target-close': this.isOpen,\n        'js-note-target-reopen': !this.isOpen,\n      };\n    },\n    markdownDocsPath() {\n      return this.getNotesData.markdownDocsPath;\n    },\n    markdownPreviewPath() {\n      return this.getNoteableData.preview_note_path;\n    },\n    author() {\n      return this.getUserData;\n    },\n    canToggleIssueState() {\n      return (\n        this.getNoteableData.current_user.can_update &&\n        this.openState !== STATUS_MERGED &&\n        !this.closedAndLocked\n      );\n    },\n    closedAndLocked() {\n      return !this.isOpen && this.isLocked(this.getNoteableData);\n    },\n    endpoint() {\n      return this.getNoteableData.create_note_path;\n    },\n    draftEndpoint() {\n      return this.getNotesData.draftsPath;\n    },\n    isIssue() {\n      return constants.NOTEABLE_TYPE_MAPPING[this.noteableType] === constants.ISSUE_NOTEABLE_TYPE;\n    },\n    isEpic() {\n      return constants.NOTEABLE_TYPE_MAPPING[this.noteableType] === constants.EPIC_NOTEABLE_TYPE;\n    },\n    isMergeRequest() {\n      return (\n        constants.NOTEABLE_TYPE_MAPPING[this.noteableType] === constants.MERGE_REQUEST_NOTEABLE_TYPE\n      );\n    },\n    trackingLabel() {\n      return slugifyWithUnderscore(`${this.commentButtonTitle} button`);\n    },\n    disableSubmitButton() {\n      return this.note.length === 0 || this.isSubmitting;\n    },\n    autosaveKey() {\n      if (this.isLoggedIn) {\n        const noteableType = capitalizeFirstCharacter(convertToCamelCase(this.noteableType));\n        return `${this.$options.i18n.note}/${noteableType}/${this.getNoteableData.id}`;\n      }\n\n      return null;\n    },\n    shouldDisableField() {\n      return this.isSubmitting && !this.isMeasuringCommentTemperature;\n    },\n    shouldMeasureNoteTemperature() {\n      return !isSlashCommand(this.note) && this.glAbilities.measureCommentTemperature;\n    },\n  },\n  watch: {\n    noteIsInternal(val) {\n      this.formFieldProps.placeholder = val\n        ? this.$options.i18n.bodyPlaceholderInternal\n        : this.$options.i18n.bodyPlaceholder;\n    },\n  },\n  mounted() {\n    // jQuery is needed here because it is a custom event being dispatched with jQuery.\n    $(document).on('issuable:change', (e, isClosed) => {\n      this.toggleIssueLocalState(isClosed ? STATUS_CLOSED : STATUS_REOPENED);\n    });\n  },\n  methods: {\n    ...mapActions([\n      'saveNote',\n      'removePlaceholderNotes',\n      'closeIssuable',\n      'reopenIssuable',\n      'toggleIssueLocalState',\n    ]),\n    handleSaveError({ data, status }) {\n      this.errors = createNoteErrorMessages(data, status);\n    },\n    handleSaveDraft() {\n      this.handleSave({ isDraft: true });\n    },\n    async handleSave({\n      withIssueAction = false,\n      isDraft = false,\n      shouldMeasureTemperature = true,\n    } = {}) {\n      this.errors = [];\n\n      if (this.note.length) {\n        const noteData = {\n          endpoint: isDraft ? this.draftEndpoint : this.endpoint,\n          flashContainer: this.$el,\n          data: {\n            note: {\n              noteable_type: this.noteableType,\n              noteable_id: this.getNoteableData.id,\n              internal: this.noteIsInternal,\n              note: this.note,\n            },\n            merge_request_diff_head_sha: this.getNoteableData.diff_head_sha,\n          },\n          isDraft,\n        };\n\n        if (this.noteType === constants.DISCUSSION || isDraft) {\n          noteData.data.note.type = constants.DISCUSSION_NOTE;\n        }\n\n        const confirmSubmit = await detectAndConfirmSensitiveTokens({ content: this.note });\n        if (!confirmSubmit) {\n          return;\n        }\n\n        this.isSubmitting = true;\n\n        if (this.shouldMeasureNoteTemperature && shouldMeasureTemperature) {\n          this.saveNoteParams = { isDraft, withIssueAction };\n          this.isMeasuringCommentTemperature = true;\n          this.$refs.commentTemperature.measureCommentTemperature();\n          return;\n        }\n\n        if (!this.shouldMeasureTemperature) {\n          this.isMeasuringCommentTemperature = false;\n        }\n\n        this.note = ''; // Empty textarea while being requested. Repopulate in catch\n        if (isDraft) {\n          eventHub.$emit('noteFormAddToReview', { name: 'noteFormAddToReview' });\n        }\n\n        trackSavedUsingEditor(\n          this.$refs.markdownEditor.isContentEditorActive,\n          `${this.noteableType}_${this.noteType}`,\n        );\n\n        this.saveNote(noteData)\n          .then(() => {\n            this.discard();\n\n            if (withIssueAction) {\n              this.toggleIssueState();\n            }\n          })\n          .catch(({ response }) => {\n            this.handleSaveError(response);\n\n            this.note = noteData.data.note.note; // Restore textarea content.\n            this.removePlaceholderNotes();\n          })\n          .finally(() => {\n            this.isSubmitting = false;\n          });\n      } else {\n        this.toggleIssueState();\n      }\n    },\n    handleEnter() {\n      if (this.hasDrafts) {\n        this.handleSaveDraft();\n      } else {\n        this.handleSave();\n      }\n    },\n    toggleIssueState() {\n      if (this.isIssue) {\n        // We want to invoke the close/reopen logic in the issue header\n        // since that is where the blocked-by issues modal logic is also defined\n        eventHub.$emit('toggle.issuable.state');\n        return;\n      }\n\n      const toggleState = this.isOpen ? this.closeIssuable : this.reopenIssuable;\n\n      toggleState()\n        .then(() => {\n          fetchUserCounts();\n          // badgeState is only initialized for MR type\n          // To avoid undefined error added an optional chaining to function\n          return badgeState?.updateStatus?.();\n        })\n        .catch(() =>\n          createAlert({\n            message: constants.toggleStateErrorMessage[this.noteableType][this.openState],\n          }),\n        );\n    },\n    discard() {\n      this.note = '';\n      this.noteIsInternal = false;\n      this.$refs.markdownEditor.togglePreview(false);\n    },\n    editCurrentUserLastNote() {\n      if (this.note === '') {\n        const lastNote = this.getCurrentUserLastNote;\n\n        if (lastNote) {\n          eventHub.$emit('enterEditMode', {\n            noteId: lastNote.id,\n          });\n        }\n      }\n    },\n    hasEmailParticipants() {\n      return this.getNoteableData.issue_email_participants?.length;\n    },\n    dismissError(index) {\n      this.errors.splice(index, 1);\n    },\n    onInput(value) {\n      this.note = value;\n    },\n    append(value) {\n      this.$refs.markdownEditor.append(value);\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <note-signed-out-widget v-if=\"!isLoggedIn\" />\n    <discussion-locked-widget v-else-if=\"!canCreateNote\" :issuable-type=\"noteableDisplayName\" />\n    <ul v-else-if=\"canCreateNote\" class=\"notes notes-form timeline\">\n      <timeline-entry-item class=\"note-form\">\n        <div class=\"flash-container gl-mb-2\"></div>\n        <gl-alert\n          v-for=\"(error, index) in errors\"\n          :key=\"index\"\n          variant=\"danger\"\n          class=\"gl-mb-2\"\n          @dismiss=\"() => dismissError(index)\"\n        >\n          {{ error }}\n        </gl-alert>\n        <div class=\"timeline-content timeline-content-form\">\n          <form\n            ref=\"commentForm\"\n            class=\"new-note common-note-form gfm-form js-main-target-form\"\n            data-testid=\"comment-form\"\n            @submit.stop.prevent\n          >\n            <comment-field-layout\n              :with-alert-container=\"true\"\n              :is-internal-note=\"noteIsInternal\"\n              :note=\"note\"\n              :noteable-data=\"getNoteableData\"\n              :noteable-type=\"noteableType\"\n            >\n              <markdown-editor\n                ref=\"markdownEditor\"\n                :value=\"note\"\n                :render-markdown-path=\"markdownPreviewPath\"\n                :markdown-docs-path=\"markdownDocsPath\"\n                :add-spacing-classes=\"false\"\n                :form-field-props=\"formFieldProps\"\n                :autosave-key=\"autosaveKey\"\n                :disabled=\"shouldDisableField\"\n                :autocomplete-data-sources=\"autocompleteDataSources\"\n                :noteable-type=\"noteableType\"\n                supports-quick-actions\n                @keydown.up=\"editCurrentUserLastNote()\"\n                @keydown.shift.meta.enter=\"handleSave()\"\n                @keydown.shift.ctrl.enter=\"handleSave()\"\n                @keydown.meta.enter.exact=\"handleEnter()\"\n                @keydown.ctrl.enter.exact=\"handleEnter()\"\n                @input=\"onInput\"\n              />\n            </comment-field-layout>\n            <comment-temperature\n              v-if=\"glAbilities.measureCommentTemperature\"\n              ref=\"commentTemperature\"\n              v-model=\"note\"\n              :item-id=\"getNoteableData.id\"\n              :item-type=\"noteableType\"\n              :user-id=\"getUserData.id\"\n              @save=\"handleSave({ ...saveNoteParams, shouldMeasureTemperature: false })\"\n            />\n            <div class=\"note-form-actions gl-font-size-0\">\n              <gl-form-checkbox\n                v-if=\"canSetInternalNote\"\n                v-model=\"noteIsInternal\"\n                class=\"gl-mb-2 gl-basis-full\"\n                data-testid=\"internal-note-checkbox\"\n              >\n                {{ $options.i18n.internal }}\n                <help-icon\n                  v-gl-tooltip:tooltipcontainer.bottom\n                  :title=\"$options.i18n.internalVisibility\"\n                />\n              </gl-form-checkbox>\n              <template v-if=\"hasDrafts\">\n                <gl-button\n                  :disabled=\"disableSubmitButton\"\n                  data-testid=\"add-to-review-button\"\n                  category=\"primary\"\n                  variant=\"confirm\"\n                  class=\"gl-mr-3\"\n                  @click=\"handleSaveDraft()\"\n                >\n                  {{ $options.i18n.addToReview }}\n                </gl-button>\n                <gl-button\n                  :disabled=\"disableSubmitButton\"\n                  data-testid=\"add-comment-now-button\"\n                  category=\"secondary\"\n                  class=\"gl-mr-3\"\n                  @click.prevent=\"handleSave()\"\n                  >{{ $options.i18n.addCommentNow }}</gl-button\n                >\n              </template>\n              <template v-else>\n                <comment-type-dropdown\n                  v-model=\"noteType\"\n                  class=\"gl-mr-3\"\n                  data-testid=\"comment-button\"\n                  :disabled=\"disableSubmitButton\"\n                  :tracking-label=\"trackingLabel\"\n                  :is-internal-note=\"noteIsInternal\"\n                  :noteable-display-name=\"noteableDisplayName\"\n                  :discussions-require-resolution=\"discussionsRequireResolution\"\n                  @click=\"handleSave\"\n                />\n                <template v-if=\"isMergeRequest\">\n                  <gl-button\n                    :disabled=\"disableSubmitButton\"\n                    data-testid=\"start-review-button\"\n                    category=\"secondary\"\n                    variant=\"confirm\"\n                    class=\"gl-mr-3\"\n                    @click=\"handleSaveDraft()\"\n                  >\n                    {{ $options.i18n.startReview }}\n                  </gl-button>\n                </template>\n              </template>\n              <gl-button\n                v-if=\"canToggleIssueState\"\n                :loading=\"isToggleStateButtonLoading\"\n                :class=\"[actionButtonClassNames, 'btn-comment btn-comment-and-close']\"\n                :disabled=\"isSubmitting\"\n                data-testid=\"close-reopen-button\"\n                @click=\"handleSave({ withIssueAction: true })\"\n                >{{ issueActionButtonTitle }}</gl-button\n              >\n            </div>\n          </form>\n        </div>\n      </timeline-entry-item>\n    </ul>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./comment_form.vue?vue&type=template&id=46b75040\"\nimport script from \"./comment_form.vue?vue&type=script&lang=js\"\nexport * from \"./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',[(!_vm.isLoggedIn)?_c('note-signed-out-widget'):(!_vm.canCreateNote)?_c('discussion-locked-widget',{attrs:{\"issuable-type\":_vm.noteableDisplayName}}):(_vm.canCreateNote)?_c('ul',{staticClass:\"notes notes-form timeline\"},[_c('timeline-entry-item',{staticClass:\"note-form\"},[_c('div',{staticClass:\"flash-container gl-mb-2\"}),_vm._v(\" \"),_vm._l((_vm.errors),function(error,index){return _c('gl-alert',{key:index,staticClass:\"gl-mb-2\",attrs:{\"variant\":\"danger\"},on:{\"dismiss\":() => _vm.dismissError(index)}},[_vm._v(\"\\n        \"+_vm._s(error)+\"\\n      \")])}),_vm._v(\" \"),_c('div',{staticClass:\"timeline-content timeline-content-form\"},[_c('form',{ref:\"commentForm\",staticClass:\"new-note common-note-form gfm-form js-main-target-form\",attrs:{\"data-testid\":\"comment-form\"},on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();}}},[_c('comment-field-layout',{attrs:{\"with-alert-container\":true,\"is-internal-note\":_vm.noteIsInternal,\"note\":_vm.note,\"noteable-data\":_vm.getNoteableData,\"noteable-type\":_vm.noteableType}},[_c('markdown-editor',{ref:\"markdownEditor\",attrs:{\"value\":_vm.note,\"render-markdown-path\":_vm.markdownPreviewPath,\"markdown-docs-path\":_vm.markdownDocsPath,\"add-spacing-classes\":false,\"form-field-props\":_vm.formFieldProps,\"autosave-key\":_vm.autosaveKey,\"disabled\":_vm.shouldDisableField,\"autocomplete-data-sources\":_vm.autocompleteDataSources,\"noteable-type\":_vm.noteableType,\"supports-quick-actions\":\"\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.editCurrentUserLastNote()},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;return _vm.handleSave()},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;return _vm.handleSave()},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.handleEnter()},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.handleEnter()}],\"input\":_vm.onInput}})],1),_vm._v(\" \"),(_vm.glAbilities.measureCommentTemperature)?_c('comment-temperature',{ref:\"commentTemperature\",attrs:{\"item-id\":_vm.getNoteableData.id,\"item-type\":_vm.noteableType,\"user-id\":_vm.getUserData.id},on:{\"save\":function($event){return _vm.handleSave({ ..._vm.saveNoteParams, shouldMeasureTemperature: false })}},model:{value:(_vm.note),callback:function ($$v) {_vm.note=$$v},expression:\"note\"}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"note-form-actions gl-font-size-0\"},[(_vm.canSetInternalNote)?_c('gl-form-checkbox',{staticClass:\"gl-mb-2 gl-basis-full\",attrs:{\"data-testid\":\"internal-note-checkbox\"},model:{value:(_vm.noteIsInternal),callback:function ($$v) {_vm.noteIsInternal=$$v},expression:\"noteIsInternal\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.$options.i18n.internal)+\"\\n              \"),_c('help-icon',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip:tooltipcontainer.bottom\",arg:\"tooltipcontainer\",modifiers:{\"bottom\":true}}],attrs:{\"title\":_vm.$options.i18n.internalVisibility}})],1):_vm._e(),_vm._v(\" \"),(_vm.hasDrafts)?[_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"disabled\":_vm.disableSubmitButton,\"data-testid\":\"add-to-review-button\",\"category\":\"primary\",\"variant\":\"confirm\"},on:{\"click\":function($event){return _vm.handleSaveDraft()}}},[_vm._v(\"\\n                \"+_vm._s(_vm.$options.i18n.addToReview)+\"\\n              \")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"disabled\":_vm.disableSubmitButton,\"data-testid\":\"add-comment-now-button\",\"category\":\"secondary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleSave()}}},[_vm._v(_vm._s(_vm.$options.i18n.addCommentNow))])]:[_c('comment-type-dropdown',{staticClass:\"gl-mr-3\",attrs:{\"data-testid\":\"comment-button\",\"disabled\":_vm.disableSubmitButton,\"tracking-label\":_vm.trackingLabel,\"is-internal-note\":_vm.noteIsInternal,\"noteable-display-name\":_vm.noteableDisplayName,\"discussions-require-resolution\":_vm.discussionsRequireResolution},on:{\"click\":_vm.handleSave},model:{value:(_vm.noteType),callback:function ($$v) {_vm.noteType=$$v},expression:\"noteType\"}}),_vm._v(\" \"),(_vm.isMergeRequest)?[_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"disabled\":_vm.disableSubmitButton,\"data-testid\":\"start-review-button\",\"category\":\"secondary\",\"variant\":\"confirm\"},on:{\"click\":function($event){return _vm.handleSaveDraft()}}},[_vm._v(\"\\n                  \"+_vm._s(_vm.$options.i18n.startReview)+\"\\n                \")])]:_vm._e()],_vm._v(\" \"),(_vm.canToggleIssueState)?_c('gl-button',{class:[_vm.actionButtonClassNames, 'btn-comment btn-comment-and-close'],attrs:{\"loading\":_vm.isToggleStateButtonLoading,\"disabled\":_vm.isSubmitting,\"data-testid\":\"close-reopen-button\"},on:{\"click\":function($event){return _vm.handleSave({ withIssueAction: true })}}},[_vm._v(_vm._s(_vm.issueActionButtonTitle))]):_vm._e()],2)],1)])],2)],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_filter_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!./discussion_filter_note.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlIcon, GlSprintf } from '@gitlab/ui';\nimport { s__ } from '~/locale';\n\nimport notesEventHub from '../event_hub';\n\nexport default {\n  i18n: {\n    information: s__(\n      \"Notes|You're only seeing %{boldStart}other activity%{boldEnd} in the feed. To add a comment, switch to one of the following options.\",\n    ),\n  },\n  components: {\n    GlButton,\n    GlIcon,\n    GlSprintf,\n  },\n  methods: {\n    selectFilter(value) {\n      notesEventHub.$emit('dropdownSelect', value);\n    },\n  },\n};\n</script>\n\n<template>\n  <li\n    class=\"timeline-entry note note-wrapper discussion-filter-note js-discussion-filter-note\"\n    data-testid=\"discussion-filter-container\"\n  >\n    <div\n      class=\"gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle\"\n    >\n      <gl-icon name=\"comment\" />\n    </div>\n    <div class=\"timeline-content gl-pl-8\">\n      <div data-testid=\"discussion-filter-timeline-content\">\n        <gl-sprintf :message=\"$options.i18n.information\">\n          <template #bold=\"{ content }\">\n            <b>{{ content }}</b>\n          </template>\n        </gl-sprintf>\n      </div>\n      <div class=\"discussion-filter-actions gl-mt-3 gl-flex\">\n        <gl-button variant=\"default\" class=\"gl-mr-3\" @click=\"selectFilter(0)\">\n          {{ __('Show all activity') }}\n        </gl-button>\n        <gl-button variant=\"default\" @click=\"selectFilter(1)\">\n          {{ __('Show comments only') }}\n        </gl-button>\n      </div>\n    </div>\n  </li>\n</template>\n","import { render, staticRenderFns } from \"./discussion_filter_note.vue?vue&type=template&id=279885ed\"\nimport script from \"./discussion_filter_note.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_filter_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('li',{staticClass:\"timeline-entry note note-wrapper discussion-filter-note js-discussion-filter-note\",attrs:{\"data-testid\":\"discussion-filter-container\"}},[_c('div',{staticClass:\"gl-float-left -gl-mt-1 gl-ml-2 gl-flex gl-h-6 gl-w-6 gl-items-center gl-justify-center gl-rounded-full gl-bg-gray-50 gl-text-subtle\"},[_c('gl-icon',{attrs:{\"name\":\"comment\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"timeline-content gl-pl-8\"},[_c('div',{attrs:{\"data-testid\":\"discussion-filter-timeline-content\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.information},scopedSlots:_vm._u([{key:\"bold\",fn:function({ content }){return [_c('b',[_vm._v(_vm._s(content))])]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"discussion-filter-actions gl-mt-3 gl-flex\"},[_c('gl-button',{staticClass:\"gl-mr-3\",attrs:{\"variant\":\"default\"},on:{\"click\":function($event){return _vm.selectFilter(0)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Show all activity'))+\"\\n      \")]),_vm._v(\" \"),_c('gl-button',{attrs:{\"variant\":\"default\"},on:{\"click\":function($event){return _vm.selectFilter(1)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.__('Show comments only'))+\"\\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!./ordered_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!./ordered_layout.vue?vue&type=script&lang=js\"","<script>\nexport default {\n  functional: true,\n  render(h, context) {\n    const { slotKeys } = context.props;\n    const slots = context.slots();\n    const children = slotKeys.map((key) => slots[key]).filter((x) => x);\n\n    return children;\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./ordered_layout.vue?vue&type=script&lang=js\"\nexport * from \"./ordered_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","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_subscription.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_subscription.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapActions } from 'vuex';\nimport { TYPE_EPIC, TYPE_ISSUE } from '~/issues/constants';\nimport { fetchPolicies } from '~/lib/graphql';\nimport { confidentialityQueries } from '~/sidebar/queries/constants';\nimport { defaultClient as gqlClient } from '~/graphql_shared/issuable_client';\n\nexport default {\n  props: {\n    noteableData: {\n      type: Object,\n      required: true,\n    },\n    iid: {\n      type: Number,\n      required: true,\n    },\n  },\n  computed: {\n    fullPath() {\n      if (this.noteableData.web_url) {\n        return this.noteableData.web_url.split('/-/')[0].substring(1).replace('groups/', '');\n      }\n      return null;\n    },\n    issuableType() {\n      return this.noteableData.noteableType.toLowerCase();\n    },\n  },\n  created() {\n    if (this.issuableType !== TYPE_ISSUE && this.issuableType !== TYPE_EPIC) {\n      return;\n    }\n\n    gqlClient\n      .watchQuery({\n        query: confidentialityQueries[this.issuableType].query,\n        variables: {\n          iid: String(this.iid),\n          fullPath: this.fullPath,\n        },\n        fetchPolicy: fetchPolicies.CACHE_ONLY,\n      })\n      .subscribe((res) => {\n        const issuable = res.data?.workspace?.issuable;\n        if (issuable) {\n          this.setConfidentiality(issuable.confidential);\n        }\n      });\n  },\n  methods: {\n    ...mapActions(['setConfidentiality']),\n  },\n  render() {\n    return null;\n  },\n};\n</script>\n","var render, staticRenderFns\nimport script from \"./sidebar_subscription.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_subscription.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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 {\n  GlIcon,\n  GlDisclosureDropdown,\n  GlDisclosureDropdownGroup,\n  GlDisclosureDropdownItem,\n} from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions } from 'vuex';\nimport { getLocationHash, doesHashExistInUrl } from '~/lib/utils/url_utility';\nimport { __ } from '~/locale';\nimport Tracking from '~/tracking';\nimport LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';\nimport {\n  DISCUSSION_FILTERS_DEFAULT_VALUE,\n  HISTORY_ONLY_FILTER_VALUE,\n  COMMENTS_ONLY_FILTER_VALUE,\n  DISCUSSION_TAB_LABEL,\n  DISCUSSION_FILTER_TYPES,\n  NOTE_UNDERSCORE,\n  ASC,\n  DESC,\n} from '../constants';\nimport notesEventHub from '../event_hub';\n\nconst SORT_OPTIONS = [\n  { key: DESC, text: __('Newest first'), cls: 'js-newest-first' },\n  { key: ASC, text: __('Oldest first'), cls: 'js-oldest-first' },\n];\n\nexport default {\n  SORT_OPTIONS,\n  components: {\n    GlIcon,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownGroup,\n    GlDisclosureDropdownItem,\n    LocalStorageSync,\n  },\n  mixins: [Tracking.mixin()],\n  props: {\n    filters: {\n      type: Array,\n      required: true,\n    },\n    selectedValue: {\n      type: Number,\n      default: DISCUSSION_FILTERS_DEFAULT_VALUE,\n      required: false,\n    },\n  },\n  data() {\n    return {\n      currentValue: doesHashExistInUrl(NOTE_UNDERSCORE)\n        ? DISCUSSION_FILTERS_DEFAULT_VALUE\n        : this.selectedValue,\n      defaultValue: DISCUSSION_FILTERS_DEFAULT_VALUE,\n      displayFilters: true,\n    };\n  },\n  computed: {\n    ...mapGetters([\n      'getNotesDataByProp',\n      'timelineEnabled',\n      'isLoading',\n      'sortDirection',\n      'persistSortOrder',\n      'noteableType',\n    ]),\n    currentFilter() {\n      if (!this.currentValue) return this.filters[0];\n      return this.filters.find((filter) => filter.value === this.currentValue);\n    },\n    selectedSortOption() {\n      return SORT_OPTIONS.find(({ key }) => this.sortDirection === key);\n    },\n    sortStorageKey() {\n      return `sort_direction_${this.noteableType.toLowerCase()}`;\n    },\n  },\n  created() {\n    if (window.mrTabs) {\n      const { eventHub, currentTab } = window.mrTabs;\n\n      eventHub.$on('MergeRequestTabChange', this.toggleFilters);\n      this.toggleFilters(currentTab);\n    }\n\n    notesEventHub.$on('dropdownSelect', this.selectFilter);\n    window.addEventListener('hashchange', this.handleLocationHash);\n  },\n  mounted() {\n    this.toggleCommentsForm();\n  },\n  destroyed() {\n    notesEventHub.$off('dropdownSelect', this.selectFilter);\n    window.removeEventListener('hashchange', this.handleLocationHash);\n  },\n  methods: {\n    ...mapActions([\n      'filterDiscussion',\n      'setCommentsDisabled',\n      'setTargetNoteHash',\n      'setTimelineView',\n      'setDiscussionSortDirection',\n    ]),\n    selectFilter(value, persistFilter = true) {\n      const filter = parseInt(value, 10);\n\n      if (filter === this.currentValue) return;\n\n      if (this.timelineEnabled && filter !== COMMENTS_ONLY_FILTER_VALUE) {\n        this.setTimelineView(false);\n      }\n      this.currentValue = filter;\n      this.filterDiscussion({\n        path: this.getNotesDataByProp('discussionsPath'),\n        filter,\n        persistFilter,\n      });\n      this.toggleCommentsForm();\n    },\n    toggleCommentsForm() {\n      this.setCommentsDisabled(this.currentValue === HISTORY_ONLY_FILTER_VALUE);\n    },\n    toggleFilters(tab) {\n      this.displayFilters = tab === DISCUSSION_TAB_LABEL;\n    },\n    handleLocationHash() {\n      const hash = getLocationHash();\n\n      if (/^note_/.test(hash) && this.currentValue !== DISCUSSION_FILTERS_DEFAULT_VALUE) {\n        this.selectFilter(this.defaultValue, false);\n        this.setTargetNoteHash(hash);\n      }\n    },\n    filterType(value) {\n      if (value === 0) {\n        return DISCUSSION_FILTER_TYPES.ALL;\n      }\n      if (value === 1) {\n        return DISCUSSION_FILTER_TYPES.COMMENTS;\n      }\n      return DISCUSSION_FILTER_TYPES.HISTORY;\n    },\n    fetchSortedDiscussions(direction) {\n      if (this.isSortDropdownItemActive(direction)) {\n        return;\n      }\n\n      this.setDiscussionSortDirection({ direction });\n      this.track('change_discussion_sort_direction', { property: direction });\n    },\n    isSortDropdownItemActive(sortDir) {\n      return sortDir === this.sortDirection;\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    v-if=\"displayFilters\"\n    id=\"discussion-preferences\"\n    data-testid=\"discussion-preferences\"\n    class=\"full-width-mobile gl-inline-block gl-align-bottom\"\n  >\n    <local-storage-sync\n      :value=\"sortDirection\"\n      :storage-key=\"sortStorageKey\"\n      :persist=\"persistSortOrder\"\n      as-string\n      @input=\"setDiscussionSortDirection({ direction: $event })\"\n    />\n    <gl-disclosure-dropdown\n      id=\"discussion-preferences-dropdown\"\n      class=\"full-width-mobile\"\n      data-testid=\"discussion-preferences-dropdown\"\n      :toggle-text=\"__('Sort or filter')\"\n      :disabled=\"isLoading\"\n      placement=\"bottom-end\"\n    >\n      <gl-disclosure-dropdown-group id=\"discussion-sort\">\n        <gl-disclosure-dropdown-item\n          v-for=\"{ text, key, cls } in $options.SORT_OPTIONS\"\n          :key=\"text\"\n          :class=\"cls\"\n          :is-selected=\"isSortDropdownItemActive(key)\"\n          @action=\"fetchSortedDiscussions(key)\"\n        >\n          <template #list-item>\n            <gl-icon\n              name=\"mobile-issue-close\"\n              data-testid=\"dropdown-item-checkbox\"\n              :class=\"[\n                'gl-dropdown-item-check-icon',\n                { 'gl-invisible': !isSortDropdownItemActive(key) },\n                'gl-text-blue-400',\n              ]\"\n            />\n            {{ text }}\n          </template>\n        </gl-disclosure-dropdown-item>\n      </gl-disclosure-dropdown-group>\n      <gl-disclosure-dropdown-group\n        id=\"discussion-filter\"\n        class=\"discussion-filter-container js-discussion-filter-container\"\n        bordered\n      >\n        <gl-disclosure-dropdown-item\n          v-for=\"filter in filters\"\n          :key=\"filter.value\"\n          :is-selected=\"filter.value === currentValue\"\n          :class=\"{ 'is-active': filter.value === currentValue }\"\n          :data-filter-type=\"filterType(filter.value)\"\n          data-testid=\"filter-menu-item\"\n          @action=\"selectFilter(filter.value)\"\n        >\n          <template #list-item>\n            <gl-icon\n              name=\"mobile-issue-close\"\n              data-testid=\"dropdown-item-checkbox\"\n              :class=\"[\n                'gl-dropdown-item-check-icon',\n                { 'gl-invisible': filter.value !== currentValue },\n                'gl-text-blue-400',\n              ]\"\n            />\n            {{ filter.title }}\n          </template>\n        </gl-disclosure-dropdown-item>\n      </gl-disclosure-dropdown-group>\n    </gl-disclosure-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!./discussion_filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.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_filter.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./notes_activity_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!./notes_activity_header.vue?vue&type=script&lang=js\"","<script>\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport glAbilitiesMixin from '~/vue_shared/mixins/gl_abilities_mixin';\nimport DiscussionFilter from './discussion_filter.vue';\n\nexport default {\n  components: {\n    TimelineToggle: () => import('./timeline_toggle.vue'),\n    DiscussionFilter,\n    AiSummarizeNotes: () =>\n      import('ee_component/notes/components/note_actions/ai_summarize_notes.vue'),\n    MrDiscussionFilter: () => import('./mr_discussion_filter.vue'),\n  },\n  mixins: [glAbilitiesMixin(), glFeatureFlagsMixin()],\n  inject: {\n    showTimelineViewToggle: {\n      default: false,\n    },\n    resourceGlobalId: { default: null },\n    mrFilter: {\n      default: false,\n    },\n  },\n  props: {\n    notesFilters: {\n      type: Array,\n      required: true,\n    },\n    notesFilterValue: {\n      type: Number,\n      default: undefined,\n      required: false,\n    },\n    aiLoading: {\n      type: Boolean,\n      default: false,\n      required: false,\n    },\n  },\n  computed: {\n    showAiActions() {\n      return (\n        this.resourceGlobalId &&\n        this.glAbilities.summarizeComments &&\n        this.glFeatures.summarizeComments\n      );\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    class=\"gl-flex gl-flex-col gl-justify-between gl-pb-3 gl-pt-5 sm:gl-flex-row sm:gl-items-center\"\n  >\n    <h2 class=\"gl-m-0 gl-text-size-h1\">{{ __('Activity') }}</h2>\n    <div class=\"gl-mt-3 gl-flex gl-w-full gl-gap-3 sm:gl-mt-0 sm:gl-w-auto\">\n      <ai-summarize-notes\n        v-if=\"showAiActions\"\n        :resource-global-id=\"resourceGlobalId\"\n        :loading=\"aiLoading\"\n      />\n      <timeline-toggle v-if=\"showTimelineViewToggle\" />\n      <mr-discussion-filter v-if=\"mrFilter\" />\n      <discussion-filter v-else :filters=\"notesFilters\" :selected-value=\"notesFilterValue\" />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./discussion_filter.vue?vue&type=template&id=26a5fb86\"\nimport script from \"./discussion_filter.vue?vue&type=script&lang=js\"\nexport * from \"./discussion_filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar 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.displayFilters)?_c('div',{staticClass:\"full-width-mobile gl-inline-block gl-align-bottom\",attrs:{\"id\":\"discussion-preferences\",\"data-testid\":\"discussion-preferences\"}},[_c('local-storage-sync',{attrs:{\"value\":_vm.sortDirection,\"storage-key\":_vm.sortStorageKey,\"persist\":_vm.persistSortOrder,\"as-string\":\"\"},on:{\"input\":function($event){return _vm.setDiscussionSortDirection({ direction: $event })}}}),_vm._v(\" \"),_c('gl-disclosure-dropdown',{staticClass:\"full-width-mobile\",attrs:{\"id\":\"discussion-preferences-dropdown\",\"data-testid\":\"discussion-preferences-dropdown\",\"toggle-text\":_vm.__('Sort or filter'),\"disabled\":_vm.isLoading,\"placement\":\"bottom-end\"}},[_c('gl-disclosure-dropdown-group',{attrs:{\"id\":\"discussion-sort\"}},_vm._l((_vm.$options.SORT_OPTIONS),function({ text, key, cls }){return _c('gl-disclosure-dropdown-item',{key:text,class:cls,attrs:{\"is-selected\":_vm.isSortDropdownItemActive(key)},on:{\"action\":function($event){return _vm.fetchSortedDiscussions(key)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('gl-icon',{class:[\n              'gl-dropdown-item-check-icon',\n              { 'gl-invisible': !_vm.isSortDropdownItemActive(key) },\n              'gl-text-blue-400',\n            ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\"\\n          \"+_vm._s(text)+\"\\n        \")]},proxy:true}],null,true)})}),1),_vm._v(\" \"),_c('gl-disclosure-dropdown-group',{staticClass:\"discussion-filter-container js-discussion-filter-container\",attrs:{\"id\":\"discussion-filter\",\"bordered\":\"\"}},_vm._l((_vm.filters),function(filter){return _c('gl-disclosure-dropdown-item',{key:filter.value,class:{ 'is-active': filter.value === _vm.currentValue },attrs:{\"is-selected\":filter.value === _vm.currentValue,\"data-filter-type\":_vm.filterType(filter.value),\"data-testid\":\"filter-menu-item\"},on:{\"action\":function($event){return _vm.selectFilter(filter.value)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('gl-icon',{class:[\n              'gl-dropdown-item-check-icon',\n              { 'gl-invisible': filter.value !== _vm.currentValue },\n              'gl-text-blue-400',\n            ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\"\\n          \"+_vm._s(filter.title)+\"\\n        \")]},proxy:true}],null,true)})}),1)],1)],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!./notes_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!./notes_app.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapGetters, mapActions } from 'vuex';\nimport { v4 as uuidv4 } from 'uuid';\nimport { InternalEvents } from '~/tracking';\nimport { getDraft, getAutoSaveKeyFromDiscussion } from '~/lib/utils/autosave';\nimport highlightCurrentUser from '~/behaviors/markdown/highlight_current_user';\nimport { scrollToTargetOnResize } from '~/lib/utils/resize_observer';\nimport TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';\nimport glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';\nimport DraftNote from '~/batch_comments/components/draft_note.vue';\nimport { getLocationHash } from '~/lib/utils/url_utility';\nimport NotePreview from '~/notes/components/note_preview.vue';\nimport PlaceholderNote from '~/vue_shared/components/notes/placeholder_note.vue';\nimport PlaceholderSystemNote from '~/vue_shared/components/notes/placeholder_system_note.vue';\nimport SkeletonLoadingContainer from '~/vue_shared/components/notes/skeleton_note.vue';\nimport SystemNote from '~/vue_shared/components/notes/system_note.vue';\nimport { Mousetrap } from '~/lib/mousetrap';\nimport { ISSUABLE_COMMENT_OR_REPLY, keysFor } from '~/behaviors/shortcuts/keybindings';\nimport { CopyAsGFM } from '~/behaviors/markdown/copy_as_gfm';\nimport * as constants from '../constants';\nimport eventHub from '../event_hub';\nimport CommentForm from './comment_form.vue';\nimport DiscussionFilterNote from './discussion_filter_note.vue';\nimport NoteableDiscussion from './noteable_discussion.vue';\nimport NoteableNote from './noteable_note.vue';\nimport OrderedLayout from './ordered_layout.vue';\nimport SidebarSubscription from './sidebar_subscription.vue';\nimport NotesActivityHeader from './notes_activity_header.vue';\n\nexport default {\n  name: 'NotesApp',\n  components: {\n    NotePreview,\n    NotesActivityHeader,\n    NoteableNote,\n    NoteableDiscussion,\n    SystemNote,\n    CommentForm,\n    PlaceholderNote,\n    PlaceholderSystemNote,\n    SkeletonLoadingContainer,\n    DiscussionFilterNote,\n    OrderedLayout,\n    SidebarSubscription,\n    DraftNote,\n    TimelineEntryItem,\n    AiSummary: () => import('ee_component/notes/components/ai_summary.vue'),\n  },\n  mixins: [glFeatureFlagsMixin(), InternalEvents.mixin()],\n  provide() {\n    return {\n      summarizeClientSubscriptionId: uuidv4(),\n    };\n  },\n  props: {\n    noteableData: {\n      type: Object,\n      required: true,\n    },\n    notesData: {\n      type: Object,\n      required: true,\n    },\n    notesFilters: {\n      type: Array,\n      required: true,\n    },\n    notesFilterValue: {\n      type: Number,\n      default: undefined,\n      required: false,\n    },\n    shouldShow: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    helpPagePath: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      currentFilter: null,\n      renderSkeleton: !this.shouldShow,\n      aiLoading: null,\n      isInitialEventTriggered: false,\n    };\n  },\n  computed: {\n    ...mapGetters([\n      'isNotesFetched',\n      'discussions',\n      'convertedDisscussionIds',\n      'getNotesDataByProp',\n      'isLoading',\n      'isFetching',\n      'commentsDisabled',\n      'getNoteableData',\n      'userCanReply',\n      'sortDirection',\n      'timelineEnabled',\n      'targetNoteHash',\n    ]),\n    sortDirDesc() {\n      return this.sortDirection === constants.DESC;\n    },\n    noteableType() {\n      return this.noteableData.noteableType;\n    },\n    previewNoteId() {\n      if (!this.isLoading || !this.targetNoteHash?.startsWith('note_')) return null;\n      return this.targetNoteHash.replace('note_', '');\n    },\n    allDiscussions() {\n      let skeletonNotes = [];\n\n      if (this.renderSkeleton || this.isLoading) {\n        const prerenderedNotesCount = parseInt(this.notesData.prerenderedNotesCount, 10) || 0;\n\n        skeletonNotes = new Array(prerenderedNotesCount).fill({\n          isSkeletonNote: true,\n        });\n\n        if (\n          this.previewNoteId &&\n          !this.discussions.find((d) => d.notes[0].id === this.previewNoteId)\n        ) {\n          const previewNote = {\n            id: this.previewNoteId,\n            isPreviewNote: true,\n          };\n          skeletonNotes.splice(prerenderedNotesCount / 2, 0, previewNote);\n        }\n      }\n\n      if (this.sortDirDesc) {\n        return skeletonNotes.concat(this.discussions);\n      }\n\n      return this.discussions.concat(skeletonNotes);\n    },\n    canReply() {\n      return this.userCanReply && !this.commentsDisabled && !this.timelineEnabled;\n    },\n    slotKeys() {\n      return this.sortDirDesc ? ['form', 'comments'] : ['comments', 'form'];\n    },\n    isAppReady() {\n      return !this.isLoading && !this.renderSkeleton && this.shouldShow;\n    },\n  },\n  watch: {\n    async isFetching() {\n      if (!this.isFetching) {\n        await this.$nextTick();\n        await this.startTaskList();\n        await this.checkLocationHash();\n      }\n    },\n    shouldShow() {\n      if (!this.isNotesFetched) {\n        this.fetchNotes();\n      }\n\n      setTimeout(() => {\n        this.renderSkeleton = !this.shouldShow;\n      });\n    },\n    isAppReady: {\n      handler(isReady) {\n        if (!isReady) return;\n        this.$nextTick(() => {\n          window.mrTabs?.eventHub.$emit('NotesAppReady');\n        });\n      },\n      immediate: true,\n    },\n  },\n  mounted() {\n    const { parentElement } = this.$el;\n    if (parentElement && parentElement.classList.contains('js-vue-notes-event')) {\n      parentElement.addEventListener('toggleAward', (event) => {\n        const { awardName, noteId } = event.detail;\n        this.toggleAward({ awardName, noteId });\n      });\n    }\n\n    eventHub.$on('noteFormAddToReview', this.handleReviewTracking);\n    eventHub.$on('noteFormStartReview', this.handleReviewTracking);\n\n    window.addEventListener('hashchange', this.handleHashChanged);\n\n    if (this.targetNoteHash && this.targetNoteHash.startsWith('note_')) {\n      scrollToTargetOnResize();\n    }\n\n    eventHub.$on('notesApp.updateIssuableConfidentiality', this.setConfidentiality);\n    Mousetrap.bind(keysFor(ISSUABLE_COMMENT_OR_REPLY), (e) => this.quoteReply(e));\n  },\n  updated() {\n    this.$nextTick(() => {\n      highlightCurrentUser(this.$el.querySelectorAll('.gfm-project_member'));\n    });\n  },\n  beforeDestroy() {\n    window.removeEventListener('hashchange', this.handleHashChanged);\n    eventHub.$off('notesApp.updateIssuableConfidentiality', this.setConfidentiality);\n    eventHub.$off('noteFormStartReview', this.handleReviewTracking);\n    eventHub.$off('noteFormAddToReview', this.handleReviewTracking);\n    Mousetrap.unbind(keysFor(ISSUABLE_COMMENT_OR_REPLY), this.quoteReply);\n  },\n  methods: {\n    ...mapActions([\n      'toggleAward',\n      'setLastFetchedAt',\n      'setTargetNoteHash',\n      'toggleDiscussion',\n      'expandDiscussion',\n      'startTaskList',\n      'convertToDiscussion',\n      'setConfidentiality',\n      'fetchNotes',\n    ]),\n    getDiscussionInSelection() {\n      const selection = window.getSelection();\n      if (selection.rangeCount <= 0) return null;\n\n      const el = selection.getRangeAt(0).startContainer;\n      const node = el.nodeType === Node.TEXT_NODE ? el.parentNode : el;\n      return node.closest('.js-noteable-discussion');\n    },\n    async quoteReply(e) {\n      const discussionEl = this.getDiscussionInSelection();\n      const text = await CopyAsGFM.selectionToGfm();\n\n      // Prevent 'r' being written.\n      if (e && typeof e.preventDefault === 'function') {\n        e.preventDefault();\n      }\n\n      if (!discussionEl) {\n        this.replyInMainEditor(text);\n      } else {\n        const instance = this.$refs.discussions.find(({ $el }) => $el === discussionEl);\n        // prevent hotkey input from going into the form\n        requestAnimationFrame(() => {\n          instance.showReplyForm(text);\n        });\n      }\n    },\n    replyInMainEditor(text) {\n      this.$refs.commentForm.append(text);\n    },\n    discussionIsIndividualNoteAndNotConverted(discussion) {\n      return (\n        discussion.individual_note &&\n        !this.convertedDisscussionIds.includes(discussion.id) &&\n        !this.hasDraft(discussion)\n      );\n    },\n    handleHashChanged() {\n      const noteId = this.checkLocationHash();\n\n      if (noteId) {\n        this.setTargetNoteHash(getLocationHash());\n      }\n    },\n    checkLocationHash() {\n      const hash = getLocationHash();\n      const noteId = (hash && hash.startsWith('note_') && hash.replace(/^note_/, '')) ?? null;\n\n      if (noteId) {\n        const discussion = this.discussions.find((d) => d.notes.some(({ id }) => id === noteId));\n\n        if (discussion) {\n          this.expandDiscussion({ discussionId: discussion.id });\n        }\n      }\n\n      return noteId;\n    },\n    startReplying(discussionId) {\n      return this.convertToDiscussion(discussionId)\n        .then(this.$nextTick)\n        .then(() => eventHub.$emit('startReplying', discussionId));\n    },\n    setAiLoading(loading) {\n      this.aiLoading = loading;\n    },\n    handleReviewTracking(event) {\n      const types = {\n        noteFormStartReview: 'merge_request_click_start_review_on_overview_tab',\n        noteFormAddToReview: 'merge_request_click_add_to_review_on_overview_tab',\n      };\n\n      if (this.shouldShow && window.mrTabs && types[event.name]) {\n        this.trackEvent(types[event.name]);\n      }\n    },\n    hasDraft(discussion) {\n      const autoSaveKey = getAutoSaveKeyFromDiscussion(discussion);\n      return Boolean(getDraft(autoSaveKey));\n    },\n  },\n  systemNote: constants.SYSTEM_NOTE,\n};\n</script>\n\n<template>\n  <div v-show=\"shouldShow\" id=\"notes\">\n    <sidebar-subscription :iid=\"noteableData.iid\" :noteable-data=\"noteableData\" />\n    <notes-activity-header\n      :notes-filters=\"notesFilters\"\n      :notes-filter-value=\"notesFilterValue\"\n      :ai-loading=\"aiLoading\"\n      @set-ai-loading=\"setAiLoading\"\n    />\n    <ai-summary v-if=\"aiLoading !== null\" :ai-loading=\"aiLoading\" @set-ai-loading=\"setAiLoading\" />\n    <ordered-layout :slot-keys=\"slotKeys\">\n      <template #form>\n        <comment-form\n          v-if=\"!(commentsDisabled || timelineEnabled)\"\n          ref=\"commentForm\"\n          class=\"js-comment-form\"\n          :noteable-type=\"noteableType\"\n        />\n      </template>\n      <template #comments>\n        <ul id=\"notes-list\" class=\"notes main-notes-list timeline\">\n          <template v-for=\"discussion in allDiscussions\">\n            <skeleton-loading-container\n              v-if=\"discussion.isSkeletonNote\"\n              :key=\"discussion.id\"\n              class=\"note-skeleton\"\n            />\n            <timeline-entry-item\n              v-else-if=\"discussion.isPreviewNote\"\n              :key=\"discussion.id\"\n              class=\"target note note-wrapper note-comment\"\n            >\n              <note-preview :note-id=\"previewNoteId\" />\n            </timeline-entry-item>\n            <timeline-entry-item v-else-if=\"discussion.isDraft\" :key=\"discussion.id\">\n              <draft-note :draft=\"discussion\" />\n            </timeline-entry-item>\n            <template v-else-if=\"discussion.isPlaceholderNote\">\n              <placeholder-system-note\n                v-if=\"discussion.placeholderType === $options.systemNote\"\n                :key=\"discussion.id\"\n                :note=\"discussion.notes[0]\"\n              />\n              <placeholder-note v-else :key=\"discussion.id\" :note=\"discussion.notes[0]\" />\n            </template>\n            <template v-else-if=\"discussionIsIndividualNoteAndNotConverted(discussion)\">\n              <system-note\n                v-if=\"discussion.notes[0].system\"\n                :key=\"discussion.id\"\n                :note=\"discussion.notes[0]\"\n              />\n              <noteable-note\n                v-else\n                :key=\"discussion.id\"\n                :note=\"discussion.notes[0]\"\n                :show-reply-button=\"canReply\"\n                @startReplying=\"startReplying(discussion.id)\"\n              />\n            </template>\n            <noteable-discussion\n              v-else\n              ref=\"discussions\"\n              :key=\"discussion.id\"\n              class=\"js-noteable-discussion\"\n              :discussion=\"discussion\"\n              :render-diff-file=\"true\"\n              is-overview-tab\n              :help-page-path=\"helpPagePath\"\n            />\n          </template>\n          <discussion-filter-note v-if=\"commentsDisabled\" />\n        </ul>\n      </template>\n    </ordered-layout>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./notes_activity_header.vue?vue&type=template&id=519d8d30\"\nimport script from \"./notes_activity_header.vue?vue&type=script&lang=js\"\nexport * from \"./notes_activity_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:\"gl-flex gl-flex-col gl-justify-between gl-pb-3 gl-pt-5 sm:gl-flex-row sm:gl-items-center\"},[_c('h2',{staticClass:\"gl-m-0 gl-text-size-h1\"},[_vm._v(_vm._s(_vm.__('Activity')))]),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-3 gl-flex gl-w-full gl-gap-3 sm:gl-mt-0 sm:gl-w-auto\"},[(_vm.showAiActions)?_c('ai-summarize-notes',{attrs:{\"resource-global-id\":_vm.resourceGlobalId,\"loading\":_vm.aiLoading}}):_vm._e(),_vm._v(\" \"),(_vm.showTimelineViewToggle)?_c('timeline-toggle'):_vm._e(),_vm._v(\" \"),(_vm.mrFilter)?_c('mr-discussion-filter'):_c('discussion-filter',{attrs:{\"filters\":_vm.notesFilters,\"selected-value\":_vm.notesFilterValue}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./notes_app.vue?vue&type=template&id=7051cf56\"\nimport script from \"./notes_app.vue?vue&type=script&lang=js\"\nexport * from \"./notes_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 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","import { APPROVAL_VULNERABILITY_STATES, NEWLY_DETECTED } from '../rule/scan_filters/constants';\n\n// Value `newly_detected` was expanded and maps to both `new_needs_triage` and `new_dismissed`.\n// In order to avoid breaking changes, it is transformed to the new statuses to be able\n// to read policies containing `newly_detected` status.\n// https://gitlab.com/groups/gitlab-org/-/epics/6826#note_1341377224\nconst transformNewlyDetectedState = (states) => {\n  if (states.includes(NEWLY_DETECTED)) {\n    return Array.from(\n      new Set([...states, ...Object.keys(APPROVAL_VULNERABILITY_STATES[NEWLY_DETECTED])]),\n    );\n  }\n  return states;\n};\n\n/**\n * This function groups vulnerability states into their corresponding groups.\n * `newly_detected` state is transformed into `new_needs_triage` + `new_dismissed`.\n * @param {Array} states - List of vulnerability_states for a rule\n * @returns {Object} - Grouped states by state groups. Empty groups are omitted.\n */\nexport const groupSelectedVulnerabilityStates = (states) => {\n  const transformedStates = transformNewlyDetectedState(states);\n\n  return Object.entries(APPROVAL_VULNERABILITY_STATES).reduce(\n    (selected, [vulnerabilityStatusGroup, vulnerabilityState]) => {\n      const statesForGroup = transformedStates.filter((state) =>\n        Object.keys(vulnerabilityState).includes(state),\n      );\n      if (statesForGroup.length) {\n        return { ...selected, [vulnerabilityStatusGroup]: statesForGroup };\n      }\n      return selected;\n    },\n    {},\n  );\n};\n\n/**\n * This function extends the provided states with the default ones.\n * If states are `[]` or `undefined`, they are treated as `[NEWLY_DETECTED]`.\n * If states are `null`, they are treated as `[]`.\n * @param {Array} states\n * @returns {Object} - Grouped states by state groups.\n */\nexport const groupVulnerabilityStatesWithDefaults = (states) => {\n  if (states?.length === 0 || states === undefined) {\n    return groupSelectedVulnerabilityStates([NEWLY_DETECTED]);\n  }\n  return groupSelectedVulnerabilityStates(states || []);\n};\n","import { isEmpty } from 'lodash';\nimport {\n  AGE,\n  ALLOW_DENY,\n  ALLOWED,\n  ATTRIBUTE,\n  DENIED,\n  FALSE_POSITIVE,\n  FIX_AVAILABLE,\n  NEWLY_DETECTED,\n  PREVIOUSLY_EXISTING,\n  STATUS,\n  TYPE,\n} from '../rule/scan_filters/constants';\nimport { groupVulnerabilityStatesWithDefaults } from './vulnerability_states';\n\nexport const buildFiltersFromRule = (rule) => {\n  const {\n    vulnerability_age: vulnerabilityAge,\n    vulnerability_states: vulnerabilityStates,\n    vulnerability_attributes: attributes,\n  } = rule || {};\n\n  const vulnerabilityStateGroups = groupVulnerabilityStatesWithDefaults(vulnerabilityStates);\n  const vulnerabilityAttributes = attributes || {};\n\n  const filters = {\n    [AGE]: !isEmpty(vulnerabilityAge),\n    [NEWLY_DETECTED]:\n      Boolean(vulnerabilityStateGroups[NEWLY_DETECTED]) || isEmpty(vulnerabilityStateGroups),\n    [PREVIOUSLY_EXISTING]: Boolean(vulnerabilityStateGroups[PREVIOUSLY_EXISTING]),\n    [FALSE_POSITIVE]: vulnerabilityAttributes[FALSE_POSITIVE] !== undefined,\n    [FIX_AVAILABLE]: vulnerabilityAttributes[FIX_AVAILABLE] !== undefined,\n  };\n  filters[STATUS] = Boolean(filters[NEWLY_DETECTED] && filters[PREVIOUSLY_EXISTING]);\n  filters[ATTRIBUTE] = Boolean(filters[FALSE_POSITIVE] && filters[FIX_AVAILABLE]);\n\n  return filters;\n};\n\n/**\n * Build allow or deny list from a policy rule\n * @param rule\n * @returns {{[ALLOW_DENY]: boolean, [STATUS]: boolean}}\n */\nexport const buildFiltersFromLicenseRule = (rule) => {\n  let { licenses = {} } = rule || {};\n  const { license_types } = rule || {};\n\n  licenses = licenses ?? {};\n\n  return {\n    [STATUS]: true,\n    [TYPE]: Boolean(license_types),\n    [ALLOW_DENY]: ALLOWED in licenses || DENIED in licenses,\n  };\n};\n","import {\n  BLOCK_BRANCH_MODIFICATION,\n  BLOCK_GROUP_BRANCH_MODIFICATION,\n  PREVENT_PUSHING_AND_FORCE_PUSHING,\n  PREVENT_APPROVAL_BY_AUTHOR,\n  PREVENT_APPROVAL_BY_COMMIT_AUTHOR,\n  REMOVE_APPROVALS_WITH_NEW_COMMIT,\n  REQUIRE_PASSWORD_TO_APPROVE,\n} from './settings';\n\nexport { createPolicyObject, fromYaml } from './from_yaml';\nexport { policyToYaml } from './to_yaml';\nexport * from './rules';\nexport * from './actions';\nexport * from './settings';\nexport * from './vulnerability_states';\nexport * from './filters';\n\n// Yaml for new policies\n\nconst DEFAULT_SETTINGS = `\n  ${PREVENT_PUSHING_AND_FORCE_PUSHING}: true\n  ${PREVENT_APPROVAL_BY_AUTHOR}: true\n  ${PREVENT_APPROVAL_BY_COMMIT_AUTHOR}: true\n  ${REMOVE_APPROVALS_WITH_NEW_COMMIT}: true\n  ${REQUIRE_PASSWORD_TO_APPROVE}: false\n`;\n\nconst DEFAULT_PROJECT_SETTINGS = `approval_settings:\n  ${BLOCK_BRANCH_MODIFICATION}: true\n`.concat(DEFAULT_SETTINGS);\n\nconst DEFAULT_GROUP_SETTINGS = `approval_settings:\n  ${BLOCK_BRANCH_MODIFICATION}: true\n  ${BLOCK_GROUP_BRANCH_MODIFICATION}: true\n`.concat(DEFAULT_SETTINGS);\n\nconst FALLBACK = `fallback_behavior:\n  fail: closed\n`;\n\nexport const DEFAULT_SCAN_RESULT_POLICY = `type: approval_policy\nname: ''\ndescription: ''\nenabled: true\nrules:\n  - type: ''\nactions:\n  - type: require_approval\n    approvals_required: 1\n  - type: send_bot_message\n    enabled: true\n`\n  .concat(DEFAULT_PROJECT_SETTINGS)\n  .concat(FALLBACK);\n\nexport const DEFAULT_SCAN_RESULT_POLICY_NEW_FORMAT = `approval_policy:\n- name: ''\n  description: ''\n  enabled: true\n  rules:\n    - type: ''\n  actions:\n    - type: require_approval\n      approvals_required: 1\n    - type: send_bot_message\n      enabled: true\n  approval_settings:\n    ${BLOCK_BRANCH_MODIFICATION}: true\n    ${PREVENT_PUSHING_AND_FORCE_PUSHING}: true\n    ${PREVENT_APPROVAL_BY_AUTHOR}: true\n    ${PREVENT_APPROVAL_BY_COMMIT_AUTHOR}: true\n    ${REMOVE_APPROVALS_WITH_NEW_COMMIT}: true\n    ${REQUIRE_PASSWORD_TO_APPROVE}: false\n  fallback_behavior:\n    fail: closed\n`;\n\nexport const DEFAULT_SCAN_RESULT_POLICY_WITH_SCOPE_WITH_GROUP_SETTINGS = `type: approval_policy\nname: ''\ndescription: ''\nenabled: true\npolicy_scope:\n  projects:\n    excluding: []\nrules:\n  - type: ''\nactions:\n  - type: require_approval\n    approvals_required: 1\n  - type: send_bot_message\n    enabled: true\n`\n  .concat(DEFAULT_GROUP_SETTINGS)\n  .concat(FALLBACK);\n\nexport const DEFAULT_SCAN_RESULT_POLICY_WITH_SCOPE_WITH_GROUP_SETTINGS_NEW_FORMAT = `approval_policy:\n- name: ''\n  description: ''\n  enabled: true\n  policy_scope:\n    projects:\n      excluding: []\n  rules:\n    - type: ''\n  actions:\n    - type: require_approval\n      approvals_required: 1\n    - type: send_bot_message\n      enabled: true\n  approval_settings:\n    ${BLOCK_BRANCH_MODIFICATION}: true\n    ${BLOCK_GROUP_BRANCH_MODIFICATION}: true\n    ${PREVENT_PUSHING_AND_FORCE_PUSHING}: true\n    ${PREVENT_APPROVAL_BY_AUTHOR}: true\n    ${PREVENT_APPROVAL_BY_COMMIT_AUTHOR}: true\n    ${REMOVE_APPROVALS_WITH_NEW_COMMIT}: true\n    ${REQUIRE_PASSWORD_TO_APPROVE}: false\n  fallback_behavior:\n    fail: closed\n`;\n\nexport const getPolicyYaml = ({ isGroup, newYamlFormat = false }) => {\n  const defaultPolicy = newYamlFormat\n    ? DEFAULT_SCAN_RESULT_POLICY_NEW_FORMAT\n    : DEFAULT_SCAN_RESULT_POLICY;\n  const defaultPolicyWithScopeAndSettings = newYamlFormat\n    ? DEFAULT_SCAN_RESULT_POLICY_WITH_SCOPE_WITH_GROUP_SETTINGS_NEW_FORMAT\n    : DEFAULT_SCAN_RESULT_POLICY_WITH_SCOPE_WITH_GROUP_SETTINGS;\n\n  if (isGroup) {\n    return defaultPolicyWithScopeAndSettings;\n  }\n\n  return defaultPolicy;\n};\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n  if (data === null) return true;\n\n  var key, object = data;\n\n  for (key in object) {\n    if (_hasOwnProperty.call(object, key)) {\n      if (object[key] !== null) return false;\n    }\n  }\n\n  return true;\n}\n\nfunction constructYamlSet(data) {\n  return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n  kind: 'mapping',\n  resolve: resolveYamlSet,\n  construct: constructYamlSet\n});\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","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n  return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n  kind: 'scalar',\n  resolve: resolveYamlMerge\n});\n","import { normalizeHeaders } from '~/lib/utils/common_utils';\nimport axios from '~/lib/utils/axios_utils';\n\nexport default class MRWidgetService {\n  constructor(endpoints) {\n    this.endpoints = endpoints;\n\n    this.apiApprovalsPath = endpoints.apiApprovalsPath;\n    this.apiApprovePath = endpoints.apiApprovePath;\n    this.apiUnapprovePath = endpoints.apiUnapprovePath;\n  }\n\n  merge(data) {\n    return axios.post(this.endpoints.mergePath, data);\n  }\n\n  cancelAutomaticMerge() {\n    return axios.post(this.endpoints.cancelAutoMergePath);\n  }\n\n  removeWIP() {\n    return axios.post(this.endpoints.removeWIPPath);\n  }\n\n  removeSourceBranch() {\n    return axios.delete(this.endpoints.sourceBranchPath);\n  }\n\n  fetchDeployments(targetParam) {\n    return axios.get(this.endpoints.ciEnvironmentsStatusPath, {\n      params: {\n        environment_target: targetParam,\n      },\n    });\n  }\n\n  poll() {\n    return axios.get(this.endpoints.mergeRequestBasicPath);\n  }\n\n  checkStatus() {\n    // two endpoints are requested in order to get MR info:\n    // one which is etag-cached and invalidated and another one which is not cached\n    // the idea is to move all the fields to etag-cached endpoint and then perform only one request\n    // https://gitlab.com/gitlab-org/gitlab-foss/issues/61559#note_188801390\n    const getData = axios.get(this.endpoints.mergeRequestWidgetPath);\n    const getCachedData = axios.get(this.endpoints.mergeRequestCachedWidgetPath);\n\n    return axios\n      .all([getData, getCachedData])\n      .then(axios.spread((res, cachedRes) => ({ data: Object.assign(res.data, cachedRes.data) })));\n  }\n\n  fetchMergeActionsContent() {\n    return axios.get(this.endpoints.mergeActionsContentPath);\n  }\n\n  rebase({ skipCi = false } = {}) {\n    const path = `${this.endpoints.rebasePath}?skip_ci=${Boolean(skipCi)}`;\n    return axios.post(path);\n  }\n\n  fetchApprovals() {\n    return axios.get(this.apiApprovalsPath).then((res) => res.data);\n  }\n\n  approveMergeRequest() {\n    return axios.post(this.apiApprovePath).then((res) => res.data);\n  }\n\n  unapproveMergeRequest() {\n    return axios.post(this.apiUnapprovePath).then((res) => res.data);\n  }\n\n  static executeInlineAction(url) {\n    return axios.post(url);\n  }\n\n  static fetchMetrics(metricsUrl) {\n    return axios.get(`${metricsUrl}.json`);\n  }\n\n  static fetchInitialData() {\n    return Promise.all([\n      axios.get(window.gl.mrWidgetData.merge_request_cached_widget_path),\n      axios.get(window.gl.mrWidgetData.merge_request_widget_path),\n    ]).then(\n      axios.spread((res, cachedRes) => ({\n        data: Object.assign(res.data, cachedRes.data),\n        headers: normalizeHeaders(res.headers),\n      })),\n    );\n  }\n}\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","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"missingBranchQuery\"},\"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\":\"sourceBranchExists\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":180}};\n    doc.loc.source = {\"body\":\"query missingBranchQuery($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      sourceBranchExists\\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[\"missingBranchQuery\"] = oneQuery(doc, \"missingBranchQuery\");\n        \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","import { uniqueId, isNumber } from 'lodash';\nimport { n__, s__ } from '~/locale';\nimport { GROUP_TYPE, ROLE_TYPE, USER_TYPE } from 'ee/security_orchestration/constants';\nimport { mapToListboxItems } from 'ee/security_orchestration/utils';\n\nexport const APPROVER_TYPE_DICT = {\n  [GROUP_TYPE]: ['group_approvers', 'group_approvers_ids'],\n  [ROLE_TYPE]: ['role_approvers'],\n  [USER_TYPE]: ['user_approvers', 'user_approvers_ids'],\n};\n\nexport const ADD_APPROVER_LABEL = s__('SecurityOrchestration|Add new approver');\n\nexport const APPROVER_TYPE_LIST_ITEMS = [\n  { text: s__('SecurityOrchestration|Roles'), value: ROLE_TYPE },\n  { text: s__('SecurityOrchestration|Individual users'), value: USER_TYPE },\n  { text: s__('SecurityOrchestration|Groups'), value: GROUP_TYPE },\n];\n\nconst mapIds = (approvers, namespaceType) =>\n  approvers\n    .filter((approver) => isNumber(approver) || approver.type === namespaceType)\n    .map((item) => (isNumber(item) ? item : item.id));\n\nconst userIds = (approvers) => {\n  return mapIds(approvers, USER_TYPE);\n};\n\nconst groupIds = (approvers) => {\n  return mapIds(approvers, GROUP_TYPE);\n};\n\nexport const removeAvailableApproverType = (array, type) =>\n  array.filter(({ value }) => value !== type);\n\n/*\n  Convert approvers into yaml fields (user_approvers, users_approvers_ids) in relation to action.\n*/\nexport const createActionFromApprovers = ({ id, type, approvals_required }, approvers) => {\n  const newAction = { id, type, approvals_required };\n\n  if (approvers[USER_TYPE]) {\n    newAction.user_approvers_ids = userIds(approvers[USER_TYPE]);\n  }\n\n  if (approvers[GROUP_TYPE]) {\n    newAction.group_approvers_ids = groupIds(approvers[GROUP_TYPE]);\n  }\n\n  if (approvers[ROLE_TYPE]) {\n    newAction.role_approvers = approvers[ROLE_TYPE];\n  }\n\n  return newAction;\n};\n\nexport const actionHasType = (action, type) => {\n  return Object.keys(action).some((k) => APPROVER_TYPE_DICT[type].includes(k));\n};\n\n/*\n  Check if users are present in approvers\n*/\nconst usersOutOfSync = (action, users) => {\n  const usersIDs = action?.user_approvers_ids?.some(\n    (id) => !users.find((approver) => (approver.id ? approver.id === id : approver === id)),\n  );\n\n  const usersNames =\n    action?.user_approvers?.some(\n      (userName) => !users.find((approver) => approver.username === userName),\n    ) || false;\n  const userLength =\n    (action?.user_approvers?.length || 0) + (action?.user_approvers_ids?.length || 0);\n\n  return usersIDs || usersNames || userLength !== users.length;\n};\n\n/*\n  Check if groups are present in approvers\n*/\nconst groupsOutOfSync = (action, groups) => {\n  const groupsIDs = action?.group_approvers_ids?.some(\n    (id) => !groups.find((approver) => (approver.id ? approver.id === id : approver === id)),\n  );\n  const groupsPaths =\n    action?.group_approvers?.some(\n      (path) => !groups.find((approver) => approver.fullPath === path),\n    ) || false;\n  const groupLength =\n    (action?.group_approvers?.length || 0) + (action?.group_approvers_ids?.length || 0);\n\n  return groupsIDs || groupsPaths || groupLength !== groups.length;\n};\n\n/*\n  Check if yaml is out of sync with available approvers\n*/\nexport const approversOutOfSync = (action, { user = [], group = [] }) => {\n  return usersOutOfSync(action, user) || groupsOutOfSync(action, group);\n};\n\nexport const WARN_TEMPLATE = s__(\n  'SecurityOrchestration|%{requireStart}Generates a bot comment%{requireEnd} and selected users as the security consultant that developers can reach out for help.',\n);\n\nexport const WARN_TEMPLATE_HELP_TITLE = s__('SecurityOrchestration|Who is a consultant?');\n\nexport const WARN_TEMPLATE_HELP_DESCRIPTION = s__(\n  'SecurityOrchestration|A consultant will show up in the bot comment and developers should ask them for help if needed.',\n);\n\nexport const getDefaultHumanizedTemplate = (numOfApproversRequired) => {\n  return n__(\n    '%{requireStart}Require%{requireEnd} %{approvalsRequired} %{approvalStart}approval%{approvalEnd} from:',\n    '%{requireStart}Require%{requireEnd} %{approvalsRequired} %{approvalStart}approvals%{approvalEnd} from:',\n    numOfApproversRequired,\n  );\n};\n\nexport const DEFAULT_APPROVER_DROPDOWN_TEXT = s__('SecurityOrchestration|Choose approver type');\n\nexport const REQUIRE_APPROVAL_TYPE = 'require_approval';\n\nexport const BOT_MESSAGE_TYPE = 'send_bot_message';\n\nexport const WARN_TYPE = 'warn';\n\nexport const buildApprovalAction = (approvalsRequired = 1) => {\n  return {\n    type: REQUIRE_APPROVAL_TYPE,\n    approvals_required: approvalsRequired,\n    id: uniqueId('action_'),\n  };\n};\n\nexport const buildBotMessageAction = () => {\n  return { type: BOT_MESSAGE_TYPE, enabled: true, id: uniqueId('action_') };\n};\n\nexport const buildWarnAction = () => {\n  return [buildApprovalAction(0), buildBotMessageAction()];\n};\n\nexport const buildAction = (type) => {\n  switch (type) {\n    case REQUIRE_APPROVAL_TYPE:\n      return buildApprovalAction();\n    case WARN_TYPE:\n      return buildWarnAction();\n    case BOT_MESSAGE_TYPE:\n    default:\n      return buildBotMessageAction();\n  }\n};\n\nexport const WARN_TYPE_TEXT = s__('SecurityOrchestration|Warn in merge request');\n\nexport const ACTION_OPTIONS = {\n  [REQUIRE_APPROVAL_TYPE]: s__('SecurityOrchestration|Require Approvers'),\n  [BOT_MESSAGE_TYPE]: s__('SecurityOrchestration|Send bot message'),\n};\n\nexport const ACTION_LISTBOX_ITEMS = () => {\n  const options = {\n    ...ACTION_OPTIONS,\n    ...(gon.features?.securityPolicyApprovalWarnMode && { [WARN_TYPE]: WARN_TYPE_TEXT }),\n  };\n\n  return mapToListboxItems(options);\n};\n\nexport const DISABLED_BOT_MESSAGE_ACTION = { ...buildAction(BOT_MESSAGE_TYPE), enabled: false };\n","import { __ } from '~/locale';\n\nexport const COMPONENTS = {\n  conflict: () => import('./conflicts.vue'),\n  discussions_not_resolved: () => import('./unresolved_discussions.vue'),\n  draft_status: () => import('./draft.vue'),\n  merge_time: () => import('./merge_time.vue'),\n  need_rebase: () => import('./rebase.vue'),\n  default: () => import('./message.vue'),\n  requested_changes: () =>\n    import('ee_component/vue_merge_request_widget/components/checks/requested_changes.vue'),\n  locked_paths: () =>\n    import('ee_component/vue_merge_request_widget/components/checks/locked_paths.vue'),\n  locked_lfs_files: () =>\n    import('ee_component/vue_merge_request_widget/components/checks/locked_paths.vue'),\n  not_approved: () =>\n    import('ee_component/vue_merge_request_widget/components/checks/not_approved.vue'),\n  security_policy_violations: () =>\n    import(\n      'ee_component/vue_merge_request_widget/components/checks/security_policy_violations.vue'\n    ),\n};\n\nexport const FAILURE_REASONS = {\n  commits_status: __('Source branch exists and contains commits.'),\n  ci_must_pass: __('Pipeline must succeed.'),\n  conflict: __('Merge conflicts must be resolved.'),\n  discussions_not_resolved: __('Unresolved discussions must be resolved.'),\n  draft_status: __('Merge request must not be draft.'),\n  not_open: __('Merge request must be open.'),\n  need_rebase: __('Merge request must be rebased, because a fast-forward merge is not possible.'),\n  not_approved: __('All required approvals must be given.'),\n  merge_request_blocked: __('Merge request dependencies must be merged.'),\n  status_checks_must_pass: __('Status checks must pass.'),\n  jira_association_missing: __('Either the title or description must reference a Jira issue.'),\n  requested_changes: __('The change requests must be completed or resolved.'),\n  approvals_syncing: __('The merge request approvals are currently syncing.'),\n  locked_paths: __('All paths must be unlocked'),\n  locked_lfs_files: __('All LFS files must be unlocked.'),\n  security_policy_violations: __('All policy rules must be satisfied.'),\n  merge_time: __('Cannot merge until this date and time.'),\n};\n\nexport const ICON_NAMES = Object.freeze({\n  failed: 'failed',\n  inactive: 'neutral',\n  success: 'success',\n  warning: 'warning',\n});\n","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","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n  // Super constructor\n  Error.call(this);\n\n  this.name = 'YAMLException';\n  this.reason = reason;\n  this.mark = mark;\n  this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n\n  // Include stack trace in error object\n  if (Error.captureStackTrace) {\n    // Chrome and NodeJS\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    // FF, IE 10+ and Safari 6+. Fallback for others\n    this.stack = (new Error()).stack || '';\n  }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n  var result = this.name + ': ';\n\n  result += this.reason || '(unknown reason)';\n\n  if (!compact && this.mark) {\n    result += ' ' + this.mark.toString();\n  }\n\n  return result;\n};\n\n\nmodule.exports = YAMLException;\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('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","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","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString       = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n  if (data === null) return true;\n\n  var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n      object = data;\n\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n    pairHasKey = false;\n\n    if (_toString.call(pair) !== '[object Object]') return false;\n\n    for (pairKey in pair) {\n      if (_hasOwnProperty.call(pair, pairKey)) {\n        if (!pairHasKey) pairHasKey = true;\n        else return false;\n      }\n    }\n\n    if (!pairHasKey) return false;\n\n    if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n    else return false;\n  }\n\n  return true;\n}\n\nfunction constructYamlOmap(data) {\n  return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n  kind: 'sequence',\n  resolve: resolveYamlOmap,\n  construct: constructYamlOmap\n});\n","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 { differenceInMilliseconds } from '~/lib/utils/datetime_utility';\n\nexport default (fn, { interval = 2000, timeout = 60000 } = {}) => {\n  const startTime = Date.now();\n\n  return new Promise((resolve, reject) => {\n    const stop = (arg) => (arg instanceof Error ? reject(arg) : resolve(arg));\n    const next = () => {\n      if (timeout === 0 || differenceInMilliseconds(startTime) < timeout) {\n        setTimeout(fn.bind(null, next, stop), interval);\n      } else {\n        reject(new Error('SIMPLE_POLL_TIMEOUT'));\n      }\n    };\n    fn(next, stop);\n  });\n};\n","import { s__ } from '~/locale';\nimport { mapToListboxItems } from 'ee/security_orchestration/utils';\n\nexport const PROJECTS_WITH_FRAMEWORK = 'projects_with_framework';\nexport const ALL_PROJECTS_IN_GROUP = 'all_projects_in_group';\nexport const SPECIFIC_PROJECTS = 'specific_projects';\nexport const ALL_PROJECTS_IN_LINKED_GROUPS = 'all_projects_in_linked_groups';\n\nexport const PROJECT_SCOPE_TYPE_TEXTS = {\n  [PROJECTS_WITH_FRAMEWORK]: s__('SecurityOrchestration|projects with compliance frameworks'),\n  [ALL_PROJECTS_IN_GROUP]: s__('SecurityOrchestration|all projects in this group'),\n  [SPECIFIC_PROJECTS]: s__('SecurityOrchestration|specific projects'),\n  [ALL_PROJECTS_IN_LINKED_GROUPS]: s__('SecurityOrchestration|all projects in the linked groups'),\n};\n\nexport const PROJECT_SCOPE_TYPE_LISTBOX_ITEMS = mapToListboxItems(PROJECT_SCOPE_TYPE_TEXTS);\n\nexport const WITHOUT_EXCEPTIONS = 'without_exceptions';\nexport const EXCEPT_PROJECTS = 'except_projects';\nexport const EXCEPT_GROUPS = 'except_groups';\nexport const INCLUDING = 'including';\nexport const EXCLUDING = 'excluding';\nexport const COMPLIANCE_FRAMEWORKS_KEY = 'compliance_frameworks';\nexport const PROJECTS_KEY = 'projects';\nexport const GROUPS_KEY = 'groups';\n\nexport const EXCEPTION_TYPE_TEXTS = {\n  [WITHOUT_EXCEPTIONS]: s__('SecurityOrchestration|without exceptions'),\n  [EXCEPT_PROJECTS]: s__('SecurityOrchestration|except projects'),\n};\n\nexport const GROUP_EXCEPTION_TYPE_TEXTS = {\n  [WITHOUT_EXCEPTIONS]: s__('SecurityOrchestration|without exceptions'),\n  [EXCEPT_GROUPS]: s__('SecurityOrchestration|except groups'),\n};\n\nexport const EXCEPTION_TYPE_LISTBOX_ITEMS = mapToListboxItems(EXCEPTION_TYPE_TEXTS);\nexport const GROUP_EXCEPTION_TYPE_LISTBOX_ITEMS = mapToListboxItems(GROUP_EXCEPTION_TYPE_TEXTS);\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","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\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"updatePolicy\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MutationOperationMode\"}},\"defaultValue\":{\"kind\":\"EnumValue\",\"value\":\"APPEND\"},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"policyYaml\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"scanExecutionPolicyCommit\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"operationMode\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"mode\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"policyYaml\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"policyYaml\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"branch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"validationErrors\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"field\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"message\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"index\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":365}};\n    doc.loc.source = {\"body\":\"mutation updatePolicy(\\n  $fullPath: String!\\n  $mode: MutationOperationMode = APPEND\\n  $name: String!\\n  $policyYaml: String!\\n) {\\n  scanExecutionPolicyCommit(\\n    input: { name: $name, fullPath: $fullPath, operationMode: $mode, policyYaml: $policyYaml }\\n  ) {\\n    branch\\n    errors\\n    validationErrors {\\n      field\\n      message\\n      title\\n      index\\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[\"updatePolicy\"] = oneQuery(doc, \"updatePolicy\");\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","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n  kind: 'scalar',\n  construct: function (data) { return data !== null ? data : ''; }\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","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import { 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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"ReadyToMerge\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Project\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"onlyAllowMergeIfPipelineSucceeds\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeRequestsFfOnlyEnabled\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"squashReadOnly\"},\"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\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ReadyToMergeMergeRequest\"},\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":246}};\n    doc.loc.source = {\"body\":\"#import \\\"./ready_to_merge_merge_request.fragment.graphql\\\"\\n\\nfragment ReadyToMerge on Project {\\n  id\\n  onlyAllowMergeIfPipelineSucceeds\\n  mergeRequestsFfOnlyEnabled\\n  squashReadOnly\\n  mergeRequest(iid: $iid) {\\n    ...ReadyToMergeMergeRequest\\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(\"./ready_to_merge_merge_request.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[\"ReadyToMerge\"] = oneQuery(doc, \"ReadyToMerge\");\n        \n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"readyToMergeSubscription\"},\"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\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"ReadyToMergeMergeRequest\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":257}};\n    doc.loc.source = {\"body\":\"#import \\\"./ready_to_merge_merge_request.fragment.graphql\\\"\\n\\nsubscription readyToMergeSubscription($issuableId: IssuableID!) {\\n  mergeRequestMergeStatusUpdated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      ...ReadyToMergeMergeRequest\\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(\"./ready_to_merge_merge_request.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[\"readyToMergeSubscription\"] = oneQuery(doc, \"readyToMergeSubscription\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSastIac\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigureSastIacInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSastIac\"},\"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\":\"successPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":129}};\n    doc.loc.source = {\"body\":\"mutation configureSastIac($input: ConfigureSastIacInput!) {\\n  configureSastIac(input: $input) {\\n    successPath\\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[\"configureSastIac\"] = oneQuery(doc, \"configureSastIac\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainPosition\"},\"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\":\"project\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeTrains\"},\"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\":\"cars\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeTrainCar\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"index\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":202}};\n    doc.loc.source = {\"body\":\"fragment MergeTrainPosition on MergeRequest {\\n  id\\n  project {\\n    id\\n    mergeTrains {\\n      nodes {\\n        cars {\\n          count\\n        }\\n      }\\n    }\\n  }\\n  mergeTrainCar {\\n    id\\n    index\\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[\"MergeTrainPosition\"] = oneQuery(doc, \"MergeTrainPosition\");\n        \n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"gl-flex gl-items-center gl-font-bold gl-leading-20 gl-text-default\",on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.collapse.apply(null, arguments)}}},[_c('span',{staticClass:\"hide-collapsed\",attrs:{\"data-testid\":\"title\"},on:{\"click\":_vm.collapse}},[_vm._v(\"\\n      \"+_vm._s(_vm.title)+\"\\n    \")]),_vm._v(\" \"),_vm._t(\"title-extra\"),_vm._v(\" \"),(_vm.loading || _vm.initialLoading)?_c('gl-loading-icon',{staticClass:\"hide-collapsed gl-ml-2\",attrs:{\"size\":\"sm\",\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.loading && _vm.isClassicSidebar)?_c('gl-loading-icon',{staticClass:\"hide-expanded gl-mx-auto gl-my-0\",attrs:{\"size\":\"sm\",\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),_vm._t(\"collapsed-right\"),_vm._v(\" \"),(_vm.canUpdate && !_vm.initialLoading && _vm.canEdit)?_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.html\",modifiers:{\"viewport\":true,\"html\":true}}],staticClass:\"hide-collapsed shortcut-sidebar-dropdown-toggle -gl-mr-2 gl-ml-auto\",attrs:{\"id\":_vm.buttonId,\"category\":\"tertiary\",\"size\":\"small\",\"title\":_vm.editTooltipText,\"aria-label\":_vm.editAriaLabelText,\"aria-keyshortcuts\":_vm.editKeyshortcutsText,\"data-testid\":\"edit-button\",\"data-track-action\":_vm.tracking.event,\"data-track-label\":_vm.tracking.label,\"data-track-property\":_vm.tracking.property},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.toggle.apply(null, arguments)},\"click\":_vm.toggle}},[_vm._v(\"\\n      \"+_vm._s(_vm.editButtonText)+\"\\n    \")]):_vm._e()],2),_vm._v(\" \"),(!_vm.initialLoading)?[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.edit),expression:\"!edit\"}],attrs:{\"data-testid\":\"collapsed-content\"}},[_vm._t(\"collapsed\",function(){return [_vm._v(_vm._s(_vm.__('None')))]})],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.edit),expression:\"edit\"}],class:{ 'gl-mt-3': !_vm.isClassicSidebar },attrs:{\"data-testid\":\"expanded-content\"}},[_vm._t(\"default\",null,{\"edit\":_vm.edit,\"toggle\":_vm.toggle})],2)]:_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!./sidebar_editable_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!./sidebar_editable_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { __ } from '~/locale';\n\nexport default {\n  i18n: {\n    unassigned: __('Unassigned'),\n  },\n  components: { GlButton, GlLoadingIcon },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: {\n    canUpdate: {},\n    isClassicSidebar: {\n      default: false,\n    },\n  },\n  props: {\n    buttonId: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    title: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    initialLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    isDirty: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    tracking: {\n      type: Object,\n      required: false,\n      default: () => ({\n        event: null,\n        label: null,\n        property: null,\n      }),\n    },\n    canEdit: {\n      type: Boolean,\n      required: false,\n      default: true,\n    },\n    shouldShowConfirmationPopover: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    editTooltip: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    editAriaLabel: {\n      type: String,\n      required: false,\n      default: '',\n    },\n    editKeyshortcuts: {\n      type: String,\n      required: false,\n      default: '',\n    },\n  },\n  data() {\n    return {\n      edit: false,\n    };\n  },\n  computed: {\n    editButtonText() {\n      return this.isDirty ? __('Apply') : __('Edit');\n    },\n    editTooltipText() {\n      return this.isDirty ? '' : this.editTooltip;\n    },\n    editAriaLabelText() {\n      return this.isDirty ? this.editButtonText : this.editAriaLabel;\n    },\n    editKeyshortcutsText() {\n      return this.isDirty ? __('Escape') : this.editKeyshortcuts;\n    },\n  },\n  destroyed() {\n    window.removeEventListener('click', this.collapseWhenOffClick);\n    window.removeEventListener('keyup', this.collapseOnEscape);\n  },\n  methods: {\n    collapseWhenOffClick({ target }) {\n      if (!this.$el.contains(target)) {\n        this.collapse();\n      }\n    },\n    collapseOnEscape({ key }) {\n      if (key === 'Escape') {\n        this.collapse();\n      }\n    },\n    expand() {\n      if (this.edit) {\n        return;\n      }\n\n      if (this.canEdit && this.canUpdate) {\n        this.edit = true;\n      }\n      this.$emit('open');\n      window.addEventListener('click', this.collapseWhenOffClick);\n      window.addEventListener('keyup', this.collapseOnEscape);\n    },\n    collapse({ emitEvent = true } = {}) {\n      if (!this.edit) {\n        return;\n      }\n\n      this.edit = false;\n      if (emitEvent) {\n        this.$emit('close');\n      }\n      window.removeEventListener('click', this.collapseWhenOffClick);\n      window.removeEventListener('keyup', this.collapseOnEscape);\n    },\n    toggle({ emitEvent = true } = {}) {\n      if (this.shouldShowConfirmationPopover) {\n        this.$emit('edit-confirm');\n        return;\n      }\n\n      if (this.edit) {\n        this.collapse({ emitEvent });\n      } else {\n        this.expand();\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <div\n      class=\"gl-flex gl-items-center gl-font-bold gl-leading-20 gl-text-default\"\n      @click.self=\"collapse\"\n    >\n      <span class=\"hide-collapsed\" data-testid=\"title\" @click=\"collapse\">\n        {{ title }}\n      </span>\n      <slot name=\"title-extra\"></slot>\n      <gl-loading-icon\n        v-if=\"loading || initialLoading\"\n        size=\"sm\"\n        inline\n        class=\"hide-collapsed gl-ml-2\"\n      />\n      <gl-loading-icon\n        v-if=\"loading && isClassicSidebar\"\n        size=\"sm\"\n        inline\n        class=\"hide-expanded gl-mx-auto gl-my-0\"\n      />\n      <slot name=\"collapsed-right\"></slot>\n      <gl-button\n        v-if=\"canUpdate && !initialLoading && canEdit\"\n        :id=\"buttonId\"\n        v-gl-tooltip.viewport.html\n        category=\"tertiary\"\n        size=\"small\"\n        class=\"hide-collapsed shortcut-sidebar-dropdown-toggle -gl-mr-2 gl-ml-auto\"\n        :title=\"editTooltipText\"\n        :aria-label=\"editAriaLabelText\"\n        :aria-keyshortcuts=\"editKeyshortcutsText\"\n        data-testid=\"edit-button\"\n        :data-track-action=\"tracking.event\"\n        :data-track-label=\"tracking.label\"\n        :data-track-property=\"tracking.property\"\n        @keyup.esc=\"toggle\"\n        @click=\"toggle\"\n      >\n        {{ editButtonText }}\n      </gl-button>\n    </div>\n    <template v-if=\"!initialLoading\">\n      <div v-show=\"!edit\" data-testid=\"collapsed-content\">\n        <slot name=\"collapsed\">{{ __('None') }}</slot>\n      </div>\n      <div v-show=\"edit\" data-testid=\"expanded-content\" :class=\"{ 'gl-mt-3': !isClassicSidebar }\">\n        <slot :edit=\"edit\" :toggle=\"toggle\"></slot>\n      </div>\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_editable_item.vue?vue&type=template&id=6046ea02\"\nimport script from \"./sidebar_editable_item.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_editable_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 { __, s__ } from '~/locale';\n\nexport const forwardDeploymentFailureModalId = 'forward-deployment-failure';\n\nexport const BUTTON_TOOLTIP_RETRY = __('Retry all failed or cancelled jobs');\nexport const BUTTON_TOOLTIP_CANCEL = __('Cancel the running pipeline');\nexport const BUTTON_TOOLTIP_DELETE = __('Delete the pipeline');\n\nexport const FILTER_TAG_IDENTIFIER = 'tag';\n\nexport const JOB_GRAPHQL_ERRORS = {\n  jobMutationErrorText: __('There was an error running the job. Please try again.'),\n  jobQueryErrorText: __('There was an error fetching the job.'),\n};\n\nexport const ICONS = {\n  TAG: 'tag',\n  MR: 'merge-request',\n  BRANCH: 'branch',\n  RETRY: 'retry',\n  SUCCESS: 'success',\n};\n\nexport const SUCCESS_STATUS = 'SUCCESS';\nexport const PASSED_STATUS = 'passed';\nexport const MANUAL_STATUS = 'manual';\n\nexport const PIPELINE_ID_KEY = 'id';\nexport const PIPELINE_IID_KEY = 'iid';\n\nexport const RAW_TEXT_WARNING = s__(\n  'Pipeline|Raw text search is not currently supported. Please use the available search tokens.',\n);\n\nexport const TRACKING_CATEGORIES = {\n  table: 'pipelines_table_component',\n  tabs: 'pipelines_filter_tabs',\n  search: 'pipelines_filtered_search',\n  failed: 'pipeline_failed_jobs_tab',\n  tests: 'pipeline_tests_tab',\n  listbox: 'pipeline_id_iid_listbox',\n};\n\n// For pipeline polling\nexport const PIPELINE_POLL_INTERVAL_DEFAULT = 1000 * 8;\nexport const PIPELINE_POLL_INTERVAL_BACKOFF = 1.2;\nexport const FOUR_MINUTES_IN_MS = 1000 * 60 * 4;\n\nexport const NETWORK_STATUS_READY = 7;\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","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","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","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n  kind: 'mapping',\n  construct: function (data) { return data !== null ? data : {}; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n  kind: 'sequence',\n  construct: function (data) { return data !== null ? data : []; }\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","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 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","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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"gl-flex gl-items-center\"},[_c('ci-icon',{staticClass:\"gl-leading-0\",attrs:{\"size\":_vm.iconSize,\"status\":_vm.status,\"show-tooltip\":false,\"use-link\":false}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\",attrs:{\"title\":_vm.name}},[_vm._v(\"\\n    \"+_vm._s(_vm.name)+\"\\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!./job_name_component.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_name_component.vue?vue&type=script&lang=js\"","<script>\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\n\n/**\n * Component that renders both the CI icon status and the job name.\n * Used in\n *  - Badge component\n *  - Dropdown badge components\n */\nexport default {\n  components: {\n    CiIcon,\n  },\n  props: {\n    name: {\n      type: String,\n      required: true,\n    },\n    status: {\n      type: Object,\n      required: true,\n    },\n    iconSize: {\n      type: Number,\n      required: false,\n      default: 16,\n    },\n  },\n};\n</script>\n<template>\n  <span class=\"gl-flex gl-items-center\">\n    <ci-icon\n      :size=\"iconSize\"\n      :status=\"status\"\n      :show-tooltip=\"false\"\n      :use-link=\"false\"\n      class=\"gl-leading-0\"\n    />\n    <span class=\"gl-line-clamp-2 gl-pl-3 gl-wrap-anywhere\" :title=\"name\">\n      {{ name }}\n    </span>\n  </span>\n</template>\n","import { render, staticRenderFns } from \"./job_name_component.vue?vue&type=template&id=10612be2\"\nimport script from \"./job_name_component.vue?vue&type=script&lang=js\"\nexport * from \"./job_name_component.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n//    If not found - try to fallback to window.esprima. If not\n//    found too - then fail to parse.\n//\ntry {\n  // workaround to exclude package from browserify list.\n  var _require = require;\n  esprima = _require('esprima');\n} catch (_) {\n  /* eslint-disable no-redeclare */\n  /* global window */\n  if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n  if (data === null) return false;\n\n  try {\n    var source = '(' + data + ')',\n        ast    = esprima.parse(source, { range: true });\n\n    if (ast.type                    !== 'Program'             ||\n        ast.body.length             !== 1                     ||\n        ast.body[0].type            !== 'ExpressionStatement' ||\n        (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n          ast.body[0].expression.type !== 'FunctionExpression')) {\n      return false;\n    }\n\n    return true;\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction constructJavascriptFunction(data) {\n  /*jslint evil:true*/\n\n  var source = '(' + data + ')',\n      ast    = esprima.parse(source, { range: true }),\n      params = [],\n      body;\n\n  if (ast.type                    !== 'Program'             ||\n      ast.body.length             !== 1                     ||\n      ast.body[0].type            !== 'ExpressionStatement' ||\n      (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n        ast.body[0].expression.type !== 'FunctionExpression')) {\n    throw new Error('Failed to resolve function');\n  }\n\n  ast.body[0].expression.params.forEach(function (param) {\n    params.push(param.name);\n  });\n\n  body = ast.body[0].expression.body.range;\n\n  // Esprima's ranges include the first '{' and the last '}' characters on\n  // function expressions. So cut them out.\n  if (ast.body[0].expression.body.type === 'BlockStatement') {\n    /*eslint-disable no-new-func*/\n    return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n  }\n  // ES6 arrow functions can omit the BlockStatement. In that case, just return\n  // the body.\n  /*eslint-disable no-new-func*/\n  return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n  return object.toString();\n}\n\nfunction isFunction(object) {\n  return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n  kind: 'scalar',\n  resolve: resolveJavascriptFunction,\n  construct: constructJavascriptFunction,\n  predicate: isFunction,\n  represent: representJavascriptFunction\n});\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"autoMergeEnabled\"},\"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\":\"autoMergeStrategy\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeUser\"},\"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\":\"avatarUrl\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"targetBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shouldRemoveSourceBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"forceRemoveSourceBranch\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"removeSourceBranch\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":258}};\n    doc.loc.source = {\"body\":\"fragment autoMergeEnabled on MergeRequest {\\n  id\\n  autoMergeStrategy\\n  mergeUser {\\n    id\\n    name\\n    username\\n    webUrl\\n    avatarUrl\\n  }\\n  targetBranch\\n  shouldRemoveSourceBranch\\n  forceRemoveSourceBranch\\n  userPermissions {\\n    removeSourceBranch\\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[\"autoMergeEnabled\"] = oneQuery(doc, \"autoMergeEnabled\");\n        \n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","export default {\n  computed: {\n    mergeRequestQueryVariables() {\n      return {\n        projectPath: this.mr.targetProjectFullPath,\n        iid: `${this.mr.iid}`,\n      };\n    },\n  },\n};\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSast\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ConfigureSastInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"configureSast\"},\"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\":\"successPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":120}};\n    doc.loc.source = {\"body\":\"mutation configureSast($input: ConfigureSastInput!) {\\n  configureSast(input: $input) {\\n    successPath\\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[\"configureSast\"] = oneQuery(doc, \"configureSast\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeChecks\"},\"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\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeabilityChecks\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"identifier\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":266}};\n    doc.loc.source = {\"body\":\"query mergeChecks($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      userPermissions {\\n        canMerge\\n      }\\n      mergeabilityChecks {\\n        identifier\\n        status\\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[\"mergeChecks\"] = oneQuery(doc, \"mergeChecks\");\n        \n","import {\n  relativePathToAbsolute,\n  isAbsolute,\n  isRootRelative,\n  isBlobUrl,\n} from '~/lib/utils/url_utility';\nimport { commitActionTypes } from '../constants';\n\nexport const dataStructure = () => ({\n  id: '',\n  // Key will contain a mixture of ID and path\n  // it can also contain a prefix `pending-` for files opened in review mode\n  key: '',\n  type: '',\n  name: '',\n  path: '',\n  tempFile: false,\n  tree: [],\n  loading: false,\n  opened: false,\n  active: false,\n  changed: false,\n  staged: false,\n  lastCommitSha: '',\n  rawPath: '',\n  raw: '',\n  content: '',\n  size: 0,\n  parentPath: null,\n  lastOpenedAt: 0,\n  mrChange: null,\n  deleted: false,\n  prevPath: undefined,\n  mimeType: '',\n});\n\nexport const decorateData = (entity) => {\n  const {\n    id,\n    type,\n    name,\n    path,\n    content = '',\n    tempFile = false,\n    active = false,\n    opened = false,\n    changed = false,\n    rawPath = '',\n    file_lock,\n    parentPath = '',\n    mimeType = '',\n  } = entity;\n\n  return Object.assign(dataStructure(), {\n    id,\n    key: `${name}-${type}-${id}`,\n    type,\n    name,\n    path,\n    tempFile,\n    opened,\n    active,\n    changed,\n    content,\n    rawPath,\n    file_lock,\n    parentPath,\n    mimeType,\n  });\n};\n\nexport const setPageTitle = (title) => {\n  document.title = title;\n};\n\nexport const setPageTitleForFile = (state, file) => {\n  const title = [file.path, state.currentBranchId, state.currentProjectId, 'GitLab'].join(' · ');\n  setPageTitle(title);\n};\n\nexport const commitActionForFile = (file) => {\n  if (file.prevPath) {\n    return commitActionTypes.move;\n  }\n  if (file.deleted) {\n    return commitActionTypes.delete;\n  }\n  if (file.tempFile) {\n    return commitActionTypes.create;\n  }\n\n  return commitActionTypes.update;\n};\n\nexport const getCommitFiles = (stagedFiles) =>\n  stagedFiles.reduce((acc, file) => {\n    if (file.type === 'tree') return acc;\n\n    return acc.concat({\n      ...file,\n    });\n  }, []);\n\nexport const createCommitPayload = ({\n  branch,\n  getters,\n  newBranch,\n  state,\n  rootState,\n  rootGetters,\n}) => ({\n  branch,\n  commit_message: state.commitMessage || getters.preBuiltCommitMessage,\n  actions: getCommitFiles(rootState.stagedFiles).map((f) => {\n    const isBlob = isBlobUrl(f.rawPath);\n    const content = isBlob ? btoa(f.content) : f.content;\n\n    return {\n      action: commitActionForFile(f),\n      file_path: f.path,\n      previous_path: f.prevPath || undefined,\n      content: content || undefined,\n      encoding: isBlob ? 'base64' : 'text',\n      last_commit_id: newBranch || f.deleted || f.prevPath ? undefined : f.lastCommitSha,\n    };\n  }),\n  start_sha: newBranch ? rootGetters.lastCommit.id : undefined,\n});\n\nexport const createNewMergeRequestUrl = (projectUrl, source, target) =>\n  `${projectUrl}/-/merge_requests/new?merge_request[source_branch]=${source}&merge_request[target_branch]=${target}&nav_source=webide`;\n\nconst sortTreesByTypeAndName = (a, b) => {\n  if (a.type === 'tree' && b.type === 'blob') {\n    return -1;\n  }\n  if (a.type === 'blob' && b.type === 'tree') {\n    return 1;\n  }\n  if (a.name < b.name) return -1;\n  if (a.name > b.name) return 1;\n  return 0;\n};\n\nexport const sortTree = (sortedTree) =>\n  sortedTree\n    .map((entity) =>\n      Object.assign(entity, {\n        tree: entity.tree.length ? sortTree(entity.tree) : [],\n      }),\n    )\n    .sort(sortTreesByTypeAndName);\n\nexport const filePathMatches = (filePath, path) => filePath.indexOf(`${path}/`) === 0;\n\nexport const getChangesCountForFiles = (files, path) =>\n  files.filter((f) => filePathMatches(f.path, path)).length;\n\nexport const mergeTrees = (fromTree, toTree) => {\n  if (!fromTree || !fromTree.length) {\n    return toTree;\n  }\n\n  const recurseTree = (n, t) => {\n    if (!n) {\n      return t;\n    }\n    const existingTreeNode = t.find((el) => el.path === n.path);\n\n    if (existingTreeNode && n.tree.length > 0) {\n      existingTreeNode.opened = true;\n      recurseTree(n.tree[0], existingTreeNode.tree);\n    } else if (!existingTreeNode) {\n      const sorted = sortTree(t.concat(n));\n      t.splice(0, t.length + 1, ...sorted);\n    }\n    return t;\n  };\n\n  for (let i = 0, l = fromTree.length; i < l; i += 1) {\n    recurseTree(fromTree[i], toTree);\n  }\n\n  return toTree;\n};\n\n// eslint-disable-next-line max-params\nexport const swapInStateArray = (state, arr, key, entryPath) =>\n  Object.assign(state, {\n    [arr]: state[arr].map((f) => (f.key === key ? state.entries[entryPath] : f)),\n  });\n\nexport const getEntryOrRoot = (state, path) =>\n  path ? state.entries[path] : state.trees[`${state.currentProjectId}/${state.currentBranchId}`];\n\n// eslint-disable-next-line max-params\nexport const swapInParentTreeWithSorting = (state, oldKey, newPath, parentPath) => {\n  if (!newPath) {\n    return;\n  }\n\n  const parent = getEntryOrRoot(state, parentPath);\n\n  if (parent) {\n    const tree = parent.tree\n      // filter out old entry && new entry\n      .filter(({ key, path }) => key !== oldKey && path !== newPath)\n      // concat new entry\n      .concat(state.entries[newPath]);\n\n    parent.tree = sortTree(tree);\n  }\n};\n\nexport const removeFromParentTree = (state, oldKey, parentPath) => {\n  const parent = getEntryOrRoot(state, parentPath);\n\n  if (parent) {\n    parent.tree = sortTree(parent.tree.filter(({ key }) => key !== oldKey));\n  }\n};\n\nexport const updateFileCollections = (state, key, entryPath) => {\n  ['openFiles', 'changedFiles', 'stagedFiles'].forEach((fileCollection) => {\n    swapInStateArray(state, fileCollection, key, entryPath);\n  });\n};\n\nexport const cleanTrailingSlash = (path) => path.replace(/\\/$/, '');\n\nexport const pathsAreEqual = (a, b) => {\n  const cleanA = a ? cleanTrailingSlash(a) : '';\n  const cleanB = b ? cleanTrailingSlash(b) : '';\n\n  return cleanA === cleanB;\n};\n\nexport function extractMarkdownImagesFromEntries(mdFile, entries) {\n  /**\n   * Regex to identify an image tag in markdown, like:\n   *\n   * ![img alt goes here](/img.png)\n   * ![img alt](../img 1/img.png \"my image title\")\n   * ![img alt](https://gitlab.com/assets/logo.svg \"title here\")\n   *\n   */\n  const reMdImage = /!\\[([^\\]]*)\\]\\((.*?)(?:(?=\"|\\))\"([^\"]*)\")?\\)/gi;\n  const prefix = 'gl_md_img_';\n  const images = {};\n\n  let content = mdFile.content || mdFile.raw;\n  let i = 0;\n\n  // eslint-disable-next-line max-params\n  content = content.replace(reMdImage, (_, alt, path, title) => {\n    const imagePath = (isRootRelative(path) ? path : relativePathToAbsolute(path, mdFile.path))\n      .substr(1)\n      .trim();\n\n    const imageContent = entries[imagePath]?.content || entries[imagePath]?.raw;\n    const imageRawPath = entries[imagePath]?.rawPath;\n\n    if (!isAbsolute(path) && imageContent) {\n      const src = imageRawPath;\n      i += 1;\n      const key = `{{${prefix}${i}}}`;\n      images[key] = { alt, src, title };\n      return key;\n    }\n    return title ? `![${alt}](${path}\"${title}\")` : `![${alt}](${path})`;\n  });\n\n  return { content, images };\n}\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"value issuable-show-labels js-value\",class:{\n    'has-labels': _vm.selectedLabels.length,\n  },attrs:{\"data-testid\":\"value-wrapper\"}},[_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon\",attrs:{\"title\":_vm.labelsList},on:{\"click\":_vm.handleCollapsedClick}},[_c('gl-icon',{attrs:{\"name\":\"labels\"}}),_vm._v(\" \"),_c('span',{staticClass:\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(_vm._s(_vm.selectedLabels.length))])],1),_vm._v(\" \"),(!_vm.selectedLabels.length)?_c('span',{staticClass:\"hide-collapsed gl-text-subtle\",attrs:{\"data-testid\":\"empty-placeholder\"}},[_vm._t(\"default\")],2):_vm._l((_vm.sortedSelectedLabels),function(label){return _c('gl-label',{key:label.id,staticClass:\"hide-collapsed\",attrs:{\"data-testid\":\"selected-label-content\",\"data-qa-label-name\":label.title,\"title\":label.title,\"description\":label.description,\"background-color\":label.color,\"target\":_vm.labelFilterUrl(label),\"scoped\":_vm.scopedLabel(label),\"show-close-button\":_vm.showCloseButton(label),\"disabled\":_vm.disableLabels,\"tooltip-placement\":\"top\"},on:{\"close\":function($event){return _vm.removeLabel(label.id)}}})})],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!./dropdown_value.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dropdown_value.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon, GlLabel, GlTooltipDirective } from '@gitlab/ui';\nimport { sortBy } from 'lodash';\nimport { isScopedLabel } from '~/lib/utils/common_utils';\nimport { s__, sprintf } from '~/locale';\n\nexport default {\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  components: {\n    GlIcon,\n    GlLabel,\n  },\n  inject: ['allowScopedLabels'],\n  props: {\n    disableLabels: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    selectedLabels: {\n      type: Array,\n      required: true,\n    },\n    allowLabelRemove: {\n      type: Boolean,\n      required: true,\n    },\n    supportsLockOnMerge: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    labelsFilterBasePath: {\n      type: String,\n      required: true,\n    },\n    labelsFilterParam: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    sortedSelectedLabels() {\n      return sortBy(this.selectedLabels, (label) => (isScopedLabel(label) ? 0 : 1));\n    },\n    labelsList() {\n      const labelsString = this.selectedLabels.length\n        ? this.selectedLabels\n            .slice(0, 5)\n            .map((label) => label.title)\n            .join(', ')\n        : s__('LabelSelect|Labels');\n\n      if (this.selectedLabels.length > 5) {\n        return sprintf(s__('LabelSelect|%{labelsString}, and %{remainingLabelCount} more'), {\n          labelsString,\n          remainingLabelCount: this.selectedLabels.length - 5,\n        });\n      }\n\n      return labelsString;\n    },\n  },\n  methods: {\n    labelFilterUrl(label) {\n      return `${this.labelsFilterBasePath}?${this.labelsFilterParam}[]=${encodeURIComponent(\n        label.title,\n      )}`;\n    },\n    scopedLabel(label) {\n      return this.allowScopedLabels && isScopedLabel(label);\n    },\n    isLabelLocked(label) {\n      return label.lockOnMerge && this.supportsLockOnMerge;\n    },\n    showCloseButton(label) {\n      return this.allowLabelRemove && !this.isLabelLocked(label);\n    },\n    removeLabel(labelId) {\n      this.$emit('onLabelRemove', labelId);\n    },\n    handleCollapsedClick() {\n      this.$emit('onCollapsedValueClick');\n    },\n  },\n};\n</script>\n\n<template>\n  <div\n    :class=\"{\n      'has-labels': selectedLabels.length,\n    }\"\n    class=\"value issuable-show-labels js-value\"\n    data-testid=\"value-wrapper\"\n  >\n    <div\n      v-gl-tooltip.left.viewport\n      :title=\"labelsList\"\n      class=\"sidebar-collapsed-icon\"\n      @click=\"handleCollapsedClick\"\n    >\n      <gl-icon name=\"labels\" />\n      <span class=\"collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\">{{\n        selectedLabels.length\n      }}</span>\n    </div>\n    <span\n      v-if=\"!selectedLabels.length\"\n      class=\"hide-collapsed gl-text-subtle\"\n      data-testid=\"empty-placeholder\"\n    >\n      <slot></slot>\n    </span>\n    <template v-else>\n      <gl-label\n        v-for=\"label in sortedSelectedLabels\"\n        :key=\"label.id\"\n        class=\"hide-collapsed\"\n        data-testid=\"selected-label-content\"\n        :data-qa-label-name=\"label.title\"\n        :title=\"label.title\"\n        :description=\"label.description\"\n        :background-color=\"label.color\"\n        :target=\"labelFilterUrl(label)\"\n        :scoped=\"scopedLabel(label)\"\n        :show-close-button=\"showCloseButton(label)\"\n        :disabled=\"disableLabels\"\n        tooltip-placement=\"top\"\n        @close=\"removeLabel(label.id)\"\n      />\n    </template>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./dropdown_value.vue?vue&type=template&id=029da1af\"\nimport script from \"./dropdown_value.vue?vue&type=script&lang=js\"\nexport * from \"./dropdown_value.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\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 { 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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalRulesApprovalStateUpdatedEE\"},\"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\":\"mergeRequestApprovalStateUpdated\"},\"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\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestApprovalRule\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":295}};\n    doc.loc.source = {\"body\":\"#import \\\"ee/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql\\\"\\n\\nsubscription approvalRulesApprovalStateUpdatedEE($issuableId: IssuableID!) {\\n  mergeRequestApprovalStateUpdated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      ...MergeRequestApprovalRule\\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/merge_request.approval_rule.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[\"approvalRulesApprovalStateUpdatedEE\"] = oneQuery(doc, \"approvalRulesApprovalStateUpdatedEE\");\n        \n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n  include: [\n    require('./default_safe')\n  ],\n  explicit: [\n    require('../type/js/undefined'),\n    require('../type/js/regexp'),\n    require('../type/js/function')\n  ]\n});\n","import * as Sentry from '~/sentry/sentry_browser_wrapper';\n\nexport const reportToSentry = (component, failureType) => {\n  Sentry.captureException(failureType, {\n    tags: {\n      component,\n    },\n  });\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 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","import { __, s__ } from '~/locale';\n\nexport const TYPE_USER = 'user';\nexport const TYPE_GROUP = 'group';\nexport const TYPE_HIDDEN_GROUPS = 'hidden_groups';\n\nexport const RULE_TYPE_FALLBACK = 'fallback';\nexport const RULE_TYPE_REGULAR = 'regular';\nexport const RULE_TYPE_REPORT_APPROVER = 'report_approver';\nexport const RULE_TYPE_CODE_OWNER = 'code_owner';\nexport const RULE_TYPE_ANY_APPROVER = 'any_approver';\nexport const RULE_NAME_ANY_APPROVER = 'All Members';\n\nexport const LICENSE_CHECK_NAME = 'License-Check';\nexport const COVERAGE_CHECK_NAME = 'Coverage-Check';\n\nexport const REPORT_TYPE_LICENSE_SCANNING = 'license_scanning';\nexport const REPORT_TYPE_CODE_COVERAGE = 'code_coverage';\n\nexport const APPROVAL_RULE_CONFIGS = {\n  [COVERAGE_CHECK_NAME]: {\n    title: s__('SecurityApprovals|Coverage-Check'),\n    popoverText: s__(\n      'SecurityApprovals|A merge request approval is required when test coverage declines.',\n    ),\n    documentationText: s__('SecurityApprovals|Learn more about Coverage-Check'),\n    reportType: REPORT_TYPE_CODE_COVERAGE,\n  },\n};\n\nexport const APPROVAL_SETTINGS_I18N = {\n  learnMore: __('Learn more.'),\n  approvalSettingsHeader: __('Approval settings'),\n  approvalSettingsDescription: __('Define how approval rules are applied to merge requests.'),\n  saveChanges: __('Save changes'),\n  loadingErrorMessage: s__(\n    'ApprovalSettings|There was an error loading merge request approval settings.',\n  ),\n  savingErrorMessage: s__(\n    'ApprovalSettings|There was an error updating merge request approval settings.',\n  ),\n  savingSuccessMessage: s__('ApprovalSettings|Merge request approval settings have been updated.'),\n  lockedByAdmin: s__(\n    'ApprovalSettings|This setting is configured at the instance level and can only be changed by an administrator.',\n  ),\n  lockedByGroupOwner: s__(\n    'ApprovalSettings|This setting is configured in %{groupName} and can only be changed in the group settings by an administrator or group owner.',\n  ),\n};\n\nexport const PROJECT_APPROVAL_SETTINGS_LABELS_I18N = {\n  authorApprovalLabel: s__('ApprovalSettings|Prevent approval by author'),\n  preventMrApprovalRuleEditLabel: s__(\n    'ApprovalSettings|Prevent editing approval rules in merge requests',\n  ),\n  preventCommittersApprovalLabel: s__(\n    'ApprovalSettings|Prevent approvals by users who add commits',\n  ),\n  requireUserPasswordLabel: s__(\n    'ApprovalSettings|Require user re-authentication (password or SAML) to approve',\n  ),\n  whenCommitAddedLabel: s__('ApprovalSettings|When a commit is added:'),\n  keepApprovalsLabel: s__('ApprovalSettings|Keep approvals'),\n  removeApprovalsOnPushLabel: s__('ApprovalSettings|Remove all approvals'),\n  selectiveCodeOwnerRemovalsLabel: s__(\n    'ApprovalSettings|Remove approvals by Code Owners if their files changed',\n  ),\n};\n\nexport const GROUP_APPROVAL_SETTINGS_LABELS_I18N = {\n  ...PROJECT_APPROVAL_SETTINGS_LABELS_I18N,\n  preventMrApprovalRuleEditLabel: s__(\n    'ApprovalSettings|Prevent editing approval rules in projects and merge requests.',\n  ),\n};\n\nexport const APPROVAL_DIALOG_I18N = {\n  form: {\n    approvalsRequiredLabel: s__('ApprovalRule|Required number of approvals'),\n    approvalTypeLabel: s__('ApprovalRule|Approver Type'),\n    approversLabel: s__('ApprovalRule|Add approvers'),\n    nameLabel: s__('ApprovalRule|Rule name'),\n    nameDescription: s__('ApprovalRule|Examples: QA, Security.'),\n    protectedBranchLabel: s__('ApprovalRule|Target branch'),\n    protectedBranchDescription: __(\n      'Apply this approval rule to all branches or a specific protected branch.',\n    ),\n  },\n  validations: {\n    approvalsRequiredNegativeNumber: __('Please enter a non-negative number'),\n    approvalsRequiredNotNumber: __('Please enter a valid number'),\n    approvalsRequiredMinimum: __(\n      'Please enter a number greater than %{number} (from the project settings)',\n    ),\n    approversRequired: __('Please select and add a member'),\n    branchesRequired: __('Please select a valid target branch'),\n    ruleNameTaken: __('Rule name is already taken.'),\n    ruleNameMissing: __('Please provide a name'),\n    ruleNameTooLong: __('Please enter a name with less than %{number} characters.'),\n  },\n};\n\nexport const MR_APPROVALS_PROMO_DISMISSED = 'mr_approvals_promo.dismissed';\nexport const MR_APPROVALS_PROMO_TRACKING_EVENTS = {\n  learnMoreClick: { action: 'click_link', label: 'learn_more_merge_approval' },\n  tryNowClick: { action: 'click_button', label: 'start_trial' },\n  collapsePromo: { action: 'click_button', label: 'collapse_approval_rules' },\n  expandPromo: { action: 'click_button', label: 'expand_approval_rules' },\n};\nexport const MR_APPROVALS_PROMO_I18N = {\n  accordionTitle: s__('ApprovalRule|Approval rules'),\n  learnMore: __('Learn more'),\n  promoTitle: s__(\"ApprovalRule|Improve your organization's code review with required approvals.\"),\n  summary: __('Approvals are optional.'),\n  tryNow: s__('ApprovalRule|Try for free'),\n  valueStatements: [\n    s__('ApprovalRule|Select eligible approvers by expertise or files changed.'),\n    s__('ApprovalRule|Increase quality and maintain standards.'),\n    s__('ApprovalRule|Reduce your time to merge.'),\n  ],\n};\n\nexport const SEARCH_PLACEHOLDER = s__('ApprovalRule|Search users or groups');\n\nexport const DROPDOWN_OPTION_PROJECT_GROUPS = s__('ApprovalRule|Search in project groups');\n\nexport const DROPDOWN_OPTION_ALL_GROUPS = s__('ApprovalRule|Search in all groups');\n\nexport const GROUP_OPTIONS = [DROPDOWN_OPTION_ALL_GROUPS, DROPDOWN_OPTION_PROJECT_GROUPS];\n\nexport const TABLE_HEADERS = {\n  name: s__('ApprovalRule|Rule'),\n  members: s__('ApprovalRule|Approvers'),\n  approvalsRequired: s__('ApprovalRule|Approvals required'),\n  branches: __('Target branch'),\n  actions: __('Actions'),\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    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 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","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"autoMergeFailedQuery\"},\"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\":\"mergeError\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":174}};\n    doc.loc.source = {\"body\":\"query autoMergeFailedQuery($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      id\\n      mergeError\\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[\"autoMergeFailedQuery\"] = oneQuery(doc, \"autoMergeFailedQuery\");\n        \n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"retryPipelineMiniGraphJob\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"CiProcessableID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"jobRetry\"},\"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\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"job\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Job\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":184}};\n    doc.loc.source = {\"body\":\"#import \\\"../fragments/job.fragment.graphql\\\"\\n\\nmutation retryPipelineMiniGraphJob($id: CiProcessableID!) {\\n  jobRetry(input: { id: $id }) {\\n    job {\\n      ...Job\\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  doc.definitions = doc.definitions.concat(unique(require(\"../fragments/job.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[\"retryPipelineMiniGraphJob\"] = oneQuery(doc, \"retryPipelineMiniGraphJob\");\n        \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","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common              = require('./common');\nvar YAMLException       = require('./exception');\nvar Mark                = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN   = 1;\nvar CONTEXT_FLOW_OUT  = 2;\nvar CONTEXT_BLOCK_IN  = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP  = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP  = 3;\n\n\nvar PATTERN_NON_PRINTABLE         = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS       = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE            = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI               = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n  return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n  return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n  return (c === 0x09/* Tab */) ||\n         (c === 0x20/* Space */) ||\n         (c === 0x0A/* LF */) ||\n         (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n  return c === 0x2C/* , */ ||\n         c === 0x5B/* [ */ ||\n         c === 0x5D/* ] */ ||\n         c === 0x7B/* { */ ||\n         c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n  var lc;\n\n  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n    return c - 0x30;\n  }\n\n  /*eslint-disable no-bitwise*/\n  lc = c | 0x20;\n\n  if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n    return lc - 0x61 + 10;\n  }\n\n  return -1;\n}\n\nfunction escapedHexLen(c) {\n  if (c === 0x78/* x */) { return 2; }\n  if (c === 0x75/* u */) { return 4; }\n  if (c === 0x55/* U */) { return 8; }\n  return 0;\n}\n\nfunction fromDecimalCode(c) {\n  if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n    return c - 0x30;\n  }\n\n  return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n  /* eslint-disable indent */\n  return (c === 0x30/* 0 */) ? '\\x00' :\n        (c === 0x61/* a */) ? '\\x07' :\n        (c === 0x62/* b */) ? '\\x08' :\n        (c === 0x74/* t */) ? '\\x09' :\n        (c === 0x09/* Tab */) ? '\\x09' :\n        (c === 0x6E/* n */) ? '\\x0A' :\n        (c === 0x76/* v */) ? '\\x0B' :\n        (c === 0x66/* f */) ? '\\x0C' :\n        (c === 0x72/* r */) ? '\\x0D' :\n        (c === 0x65/* e */) ? '\\x1B' :\n        (c === 0x20/* Space */) ? ' ' :\n        (c === 0x22/* \" */) ? '\\x22' :\n        (c === 0x2F/* / */) ? '/' :\n        (c === 0x5C/* \\ */) ? '\\x5C' :\n        (c === 0x4E/* N */) ? '\\x85' :\n        (c === 0x5F/* _ */) ? '\\xA0' :\n        (c === 0x4C/* L */) ? '\\u2028' :\n        (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n  if (c <= 0xFFFF) {\n    return String.fromCharCode(c);\n  }\n  // Encode UTF-16 surrogate pair\n  // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n  return String.fromCharCode(\n    ((c - 0x010000) >> 10) + 0xD800,\n    ((c - 0x010000) & 0x03FF) + 0xDC00\n  );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n  simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n  simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n  this.input = input;\n\n  this.filename  = options['filename']  || null;\n  this.schema    = options['schema']    || DEFAULT_FULL_SCHEMA;\n  this.onWarning = options['onWarning'] || null;\n  this.legacy    = options['legacy']    || false;\n  this.json      = options['json']      || false;\n  this.listener  = options['listener']  || null;\n\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.typeMap       = this.schema.compiledTypeMap;\n\n  this.length     = input.length;\n  this.position   = 0;\n  this.line       = 0;\n  this.lineStart  = 0;\n  this.lineIndent = 0;\n\n  this.documents = [];\n\n  /*\n  this.version;\n  this.checkLineBreaks;\n  this.tagMap;\n  this.anchorMap;\n  this.tag;\n  this.anchor;\n  this.kind;\n  this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n  return new YAMLException(\n    message,\n    new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n  throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n  if (state.onWarning) {\n    state.onWarning.call(null, generateError(state, message));\n  }\n}\n\n\nvar directiveHandlers = {\n\n  YAML: function handleYamlDirective(state, name, args) {\n\n    var match, major, minor;\n\n    if (state.version !== null) {\n      throwError(state, 'duplication of %YAML directive');\n    }\n\n    if (args.length !== 1) {\n      throwError(state, 'YAML directive accepts exactly one argument');\n    }\n\n    match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n    if (match === null) {\n      throwError(state, 'ill-formed argument of the YAML directive');\n    }\n\n    major = parseInt(match[1], 10);\n    minor = parseInt(match[2], 10);\n\n    if (major !== 1) {\n      throwError(state, 'unacceptable YAML version of the document');\n    }\n\n    state.version = args[0];\n    state.checkLineBreaks = (minor < 2);\n\n    if (minor !== 1 && minor !== 2) {\n      throwWarning(state, 'unsupported YAML version of the document');\n    }\n  },\n\n  TAG: function handleTagDirective(state, name, args) {\n\n    var handle, prefix;\n\n    if (args.length !== 2) {\n      throwError(state, 'TAG directive accepts exactly two arguments');\n    }\n\n    handle = args[0];\n    prefix = args[1];\n\n    if (!PATTERN_TAG_HANDLE.test(handle)) {\n      throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n    }\n\n    if (_hasOwnProperty.call(state.tagMap, handle)) {\n      throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n    }\n\n    if (!PATTERN_TAG_URI.test(prefix)) {\n      throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n    }\n\n    state.tagMap[handle] = prefix;\n  }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n  var _position, _length, _character, _result;\n\n  if (start < end) {\n    _result = state.input.slice(start, end);\n\n    if (checkJson) {\n      for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n        _character = _result.charCodeAt(_position);\n        if (!(_character === 0x09 ||\n              (0x20 <= _character && _character <= 0x10FFFF))) {\n          throwError(state, 'expected valid JSON character');\n        }\n      }\n    } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n      throwError(state, 'the stream contains non-printable characters');\n    }\n\n    state.result += _result;\n  }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n  var sourceKeys, key, index, quantity;\n\n  if (!common.isObject(source)) {\n    throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n  }\n\n  sourceKeys = Object.keys(source);\n\n  for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n    key = sourceKeys[index];\n\n    if (!_hasOwnProperty.call(destination, key)) {\n      destination[key] = source[key];\n      overridableKeys[key] = true;\n    }\n  }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n  var index, quantity;\n\n  // The output is a plain object here, so keys can only be strings.\n  // We need to convert keyNode to a string, but doing so can hang the process\n  // (deeply nested arrays that explode exponentially using aliases).\n  if (Array.isArray(keyNode)) {\n    keyNode = Array.prototype.slice.call(keyNode);\n\n    for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n      if (Array.isArray(keyNode[index])) {\n        throwError(state, 'nested arrays are not supported inside keys');\n      }\n\n      if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n        keyNode[index] = '[object Object]';\n      }\n    }\n  }\n\n  // Avoid code execution in load() via toString property\n  // (still use its own toString for arrays, timestamps,\n  // and whatever user schema extensions happen to have @@toStringTag)\n  if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n    keyNode = '[object Object]';\n  }\n\n\n  keyNode = String(keyNode);\n\n  if (_result === null) {\n    _result = {};\n  }\n\n  if (keyTag === 'tag:yaml.org,2002:merge') {\n    if (Array.isArray(valueNode)) {\n      for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n        mergeMappings(state, _result, valueNode[index], overridableKeys);\n      }\n    } else {\n      mergeMappings(state, _result, valueNode, overridableKeys);\n    }\n  } else {\n    if (!state.json &&\n        !_hasOwnProperty.call(overridableKeys, keyNode) &&\n        _hasOwnProperty.call(_result, keyNode)) {\n      state.line = startLine || state.line;\n      state.position = startPos || state.position;\n      throwError(state, 'duplicated mapping key');\n    }\n    _result[keyNode] = valueNode;\n    delete overridableKeys[keyNode];\n  }\n\n  return _result;\n}\n\nfunction readLineBreak(state) {\n  var ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x0A/* LF */) {\n    state.position++;\n  } else if (ch === 0x0D/* CR */) {\n    state.position++;\n    if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n      state.position++;\n    }\n  } else {\n    throwError(state, 'a line break is expected');\n  }\n\n  state.line += 1;\n  state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n  var lineBreaks = 0,\n      ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    while (is_WHITE_SPACE(ch)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    if (allowComments && ch === 0x23/* # */) {\n      do {\n        ch = state.input.charCodeAt(++state.position);\n      } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n    }\n\n    if (is_EOL(ch)) {\n      readLineBreak(state);\n\n      ch = state.input.charCodeAt(state.position);\n      lineBreaks++;\n      state.lineIndent = 0;\n\n      while (ch === 0x20/* Space */) {\n        state.lineIndent++;\n        ch = state.input.charCodeAt(++state.position);\n      }\n    } else {\n      break;\n    }\n  }\n\n  if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n    throwWarning(state, 'deficient indentation');\n  }\n\n  return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n  var _position = state.position,\n      ch;\n\n  ch = state.input.charCodeAt(_position);\n\n  // Condition state.position === state.lineStart is tested\n  // in parent on each call, for efficiency. No needs to test here again.\n  if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n      ch === state.input.charCodeAt(_position + 1) &&\n      ch === state.input.charCodeAt(_position + 2)) {\n\n    _position += 3;\n\n    ch = state.input.charCodeAt(_position);\n\n    if (ch === 0 || is_WS_OR_EOL(ch)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction writeFoldedLines(state, count) {\n  if (count === 1) {\n    state.result += ' ';\n  } else if (count > 1) {\n    state.result += common.repeat('\\n', count - 1);\n  }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n  var preceding,\n      following,\n      captureStart,\n      captureEnd,\n      hasPendingContent,\n      _line,\n      _lineStart,\n      _lineIndent,\n      _kind = state.kind,\n      _result = state.result,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (is_WS_OR_EOL(ch)      ||\n      is_FLOW_INDICATOR(ch) ||\n      ch === 0x23/* # */    ||\n      ch === 0x26/* & */    ||\n      ch === 0x2A/* * */    ||\n      ch === 0x21/* ! */    ||\n      ch === 0x7C/* | */    ||\n      ch === 0x3E/* > */    ||\n      ch === 0x27/* ' */    ||\n      ch === 0x22/* \" */    ||\n      ch === 0x25/* % */    ||\n      ch === 0x40/* @ */    ||\n      ch === 0x60/* ` */) {\n    return false;\n  }\n\n  if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n    following = state.input.charCodeAt(state.position + 1);\n\n    if (is_WS_OR_EOL(following) ||\n        withinFlowCollection && is_FLOW_INDICATOR(following)) {\n      return false;\n    }\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  captureStart = captureEnd = state.position;\n  hasPendingContent = false;\n\n  while (ch !== 0) {\n    if (ch === 0x3A/* : */) {\n      following = state.input.charCodeAt(state.position + 1);\n\n      if (is_WS_OR_EOL(following) ||\n          withinFlowCollection && is_FLOW_INDICATOR(following)) {\n        break;\n      }\n\n    } else if (ch === 0x23/* # */) {\n      preceding = state.input.charCodeAt(state.position - 1);\n\n      if (is_WS_OR_EOL(preceding)) {\n        break;\n      }\n\n    } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n               withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n      break;\n\n    } else if (is_EOL(ch)) {\n      _line = state.line;\n      _lineStart = state.lineStart;\n      _lineIndent = state.lineIndent;\n      skipSeparationSpace(state, false, -1);\n\n      if (state.lineIndent >= nodeIndent) {\n        hasPendingContent = true;\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      } else {\n        state.position = captureEnd;\n        state.line = _line;\n        state.lineStart = _lineStart;\n        state.lineIndent = _lineIndent;\n        break;\n      }\n    }\n\n    if (hasPendingContent) {\n      captureSegment(state, captureStart, captureEnd, false);\n      writeFoldedLines(state, state.line - _line);\n      captureStart = captureEnd = state.position;\n      hasPendingContent = false;\n    }\n\n    if (!is_WHITE_SPACE(ch)) {\n      captureEnd = state.position + 1;\n    }\n\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  captureSegment(state, captureStart, captureEnd, false);\n\n  if (state.result) {\n    return true;\n  }\n\n  state.kind = _kind;\n  state.result = _result;\n  return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n  var ch,\n      captureStart, captureEnd;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x27/* ' */) {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  state.position++;\n  captureStart = captureEnd = state.position;\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 0x27/* ' */) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n\n      if (ch === 0x27/* ' */) {\n        captureStart = state.position;\n        state.position++;\n        captureEnd = state.position;\n      } else {\n        return true;\n      }\n\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n  var captureStart,\n      captureEnd,\n      hexLength,\n      hexResult,\n      tmp,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x22/* \" */) {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n  state.position++;\n  captureStart = captureEnd = state.position;\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 0x22/* \" */) {\n      captureSegment(state, captureStart, state.position, true);\n      state.position++;\n      return true;\n\n    } else if (ch === 0x5C/* \\ */) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n\n      if (is_EOL(ch)) {\n        skipSeparationSpace(state, false, nodeIndent);\n\n        // TODO: rework to inline fn with no type cast?\n      } else if (ch < 256 && simpleEscapeCheck[ch]) {\n        state.result += simpleEscapeMap[ch];\n        state.position++;\n\n      } else if ((tmp = escapedHexLen(ch)) > 0) {\n        hexLength = tmp;\n        hexResult = 0;\n\n        for (; hexLength > 0; hexLength--) {\n          ch = state.input.charCodeAt(++state.position);\n\n          if ((tmp = fromHexCode(ch)) >= 0) {\n            hexResult = (hexResult << 4) + tmp;\n\n          } else {\n            throwError(state, 'expected hexadecimal character');\n          }\n        }\n\n        state.result += charFromCodepoint(hexResult);\n\n        state.position++;\n\n      } else {\n        throwError(state, 'unknown escape sequence');\n      }\n\n      captureStart = captureEnd = state.position;\n\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n  var readNext = true,\n      _line,\n      _tag     = state.tag,\n      _result,\n      _anchor  = state.anchor,\n      following,\n      terminator,\n      isPair,\n      isExplicitPair,\n      isMapping,\n      overridableKeys = {},\n      keyNode,\n      keyTag,\n      valueNode,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x5B/* [ */) {\n    terminator = 0x5D;/* ] */\n    isMapping = false;\n    _result = [];\n  } else if (ch === 0x7B/* { */) {\n    terminator = 0x7D;/* } */\n    isMapping = true;\n    _result = {};\n  } else {\n    return false;\n  }\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n\n  while (ch !== 0) {\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (ch === terminator) {\n      state.position++;\n      state.tag = _tag;\n      state.anchor = _anchor;\n      state.kind = isMapping ? 'mapping' : 'sequence';\n      state.result = _result;\n      return true;\n    } else if (!readNext) {\n      throwError(state, 'missed comma between flow collection entries');\n    }\n\n    keyTag = keyNode = valueNode = null;\n    isPair = isExplicitPair = false;\n\n    if (ch === 0x3F/* ? */) {\n      following = state.input.charCodeAt(state.position + 1);\n\n      if (is_WS_OR_EOL(following)) {\n        isPair = isExplicitPair = true;\n        state.position++;\n        skipSeparationSpace(state, true, nodeIndent);\n      }\n    }\n\n    _line = state.line;\n    composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n    keyTag = state.tag;\n    keyNode = state.result;\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n      isPair = true;\n      ch = state.input.charCodeAt(++state.position);\n      skipSeparationSpace(state, true, nodeIndent);\n      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n      valueNode = state.result;\n    }\n\n    if (isMapping) {\n      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n    } else if (isPair) {\n      _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n    } else {\n      _result.push(keyNode);\n    }\n\n    skipSeparationSpace(state, true, nodeIndent);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (ch === 0x2C/* , */) {\n      readNext = true;\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      readNext = false;\n    }\n  }\n\n  throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n  var captureStart,\n      folding,\n      chomping       = CHOMPING_CLIP,\n      didReadContent = false,\n      detectedIndent = false,\n      textIndent     = nodeIndent,\n      emptyLines     = 0,\n      atMoreIndented = false,\n      tmp,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch === 0x7C/* | */) {\n    folding = false;\n  } else if (ch === 0x3E/* > */) {\n    folding = true;\n  } else {\n    return false;\n  }\n\n  state.kind = 'scalar';\n  state.result = '';\n\n  while (ch !== 0) {\n    ch = state.input.charCodeAt(++state.position);\n\n    if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n      if (CHOMPING_CLIP === chomping) {\n        chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n      } else {\n        throwError(state, 'repeat of a chomping mode identifier');\n      }\n\n    } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n      if (tmp === 0) {\n        throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n      } else if (!detectedIndent) {\n        textIndent = nodeIndent + tmp - 1;\n        detectedIndent = true;\n      } else {\n        throwError(state, 'repeat of an indentation width identifier');\n      }\n\n    } else {\n      break;\n    }\n  }\n\n  if (is_WHITE_SPACE(ch)) {\n    do { ch = state.input.charCodeAt(++state.position); }\n    while (is_WHITE_SPACE(ch));\n\n    if (ch === 0x23/* # */) {\n      do { ch = state.input.charCodeAt(++state.position); }\n      while (!is_EOL(ch) && (ch !== 0));\n    }\n  }\n\n  while (ch !== 0) {\n    readLineBreak(state);\n    state.lineIndent = 0;\n\n    ch = state.input.charCodeAt(state.position);\n\n    while ((!detectedIndent || state.lineIndent < textIndent) &&\n           (ch === 0x20/* Space */)) {\n      state.lineIndent++;\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    if (!detectedIndent && state.lineIndent > textIndent) {\n      textIndent = state.lineIndent;\n    }\n\n    if (is_EOL(ch)) {\n      emptyLines++;\n      continue;\n    }\n\n    // End of the scalar.\n    if (state.lineIndent < textIndent) {\n\n      // Perform the chomping.\n      if (chomping === CHOMPING_KEEP) {\n        state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n      } else if (chomping === CHOMPING_CLIP) {\n        if (didReadContent) { // i.e. only if the scalar is not empty.\n          state.result += '\\n';\n        }\n      }\n\n      // Break this `while` cycle and go to the funciton's epilogue.\n      break;\n    }\n\n    // Folded style: use fancy rules to handle line breaks.\n    if (folding) {\n\n      // Lines starting with white space characters (more-indented lines) are not folded.\n      if (is_WHITE_SPACE(ch)) {\n        atMoreIndented = true;\n        // except for the first content line (cf. Example 8.1)\n        state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n      // End of more-indented block.\n      } else if (atMoreIndented) {\n        atMoreIndented = false;\n        state.result += common.repeat('\\n', emptyLines + 1);\n\n      // Just one line break - perceive as the same line.\n      } else if (emptyLines === 0) {\n        if (didReadContent) { // i.e. only if we have already read some scalar content.\n          state.result += ' ';\n        }\n\n      // Several line breaks - perceive as different lines.\n      } else {\n        state.result += common.repeat('\\n', emptyLines);\n      }\n\n    // Literal style: just add exact number of line breaks between content lines.\n    } else {\n      // Keep all line breaks except the header line break.\n      state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n    }\n\n    didReadContent = true;\n    detectedIndent = true;\n    emptyLines = 0;\n    captureStart = state.position;\n\n    while (!is_EOL(ch) && (ch !== 0)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    captureSegment(state, captureStart, state.position, false);\n  }\n\n  return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n  var _line,\n      _tag      = state.tag,\n      _anchor   = state.anchor,\n      _result   = [],\n      following,\n      detected  = false,\n      ch;\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n\n    if (ch !== 0x2D/* - */) {\n      break;\n    }\n\n    following = state.input.charCodeAt(state.position + 1);\n\n    if (!is_WS_OR_EOL(following)) {\n      break;\n    }\n\n    detected = true;\n    state.position++;\n\n    if (skipSeparationSpace(state, true, -1)) {\n      if (state.lineIndent <= nodeIndent) {\n        _result.push(null);\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      }\n    }\n\n    _line = state.line;\n    composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n    _result.push(state.result);\n    skipSeparationSpace(state, true, -1);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n      throwError(state, 'bad indentation of a sequence entry');\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = 'sequence';\n    state.result = _result;\n    return true;\n  }\n  return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n  var following,\n      allowCompact,\n      _line,\n      _pos,\n      _tag          = state.tag,\n      _anchor       = state.anchor,\n      _result       = {},\n      overridableKeys = {},\n      keyTag        = null,\n      keyNode       = null,\n      valueNode     = null,\n      atExplicitKey = false,\n      detected      = false,\n      ch;\n\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n\n  ch = state.input.charCodeAt(state.position);\n\n  while (ch !== 0) {\n    following = state.input.charCodeAt(state.position + 1);\n    _line = state.line; // Save the current line.\n    _pos = state.position;\n\n    //\n    // Explicit notation case. There are two separate blocks:\n    // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n    //\n    if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n      if (ch === 0x3F/* ? */) {\n        if (atExplicitKey) {\n          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n          keyTag = keyNode = valueNode = null;\n        }\n\n        detected = true;\n        atExplicitKey = true;\n        allowCompact = true;\n\n      } else if (atExplicitKey) {\n        // i.e. 0x3A/* : */ === character after the explicit key.\n        atExplicitKey = false;\n        allowCompact = true;\n\n      } else {\n        throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n      }\n\n      state.position += 1;\n      ch = following;\n\n    //\n    // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n    //\n    } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n      if (state.line === _line) {\n        ch = state.input.charCodeAt(state.position);\n\n        while (is_WHITE_SPACE(ch)) {\n          ch = state.input.charCodeAt(++state.position);\n        }\n\n        if (ch === 0x3A/* : */) {\n          ch = state.input.charCodeAt(++state.position);\n\n          if (!is_WS_OR_EOL(ch)) {\n            throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n          }\n\n          if (atExplicitKey) {\n            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n            keyTag = keyNode = valueNode = null;\n          }\n\n          detected = true;\n          atExplicitKey = false;\n          allowCompact = false;\n          keyTag = state.tag;\n          keyNode = state.result;\n\n        } else if (detected) {\n          throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n        } else {\n          state.tag = _tag;\n          state.anchor = _anchor;\n          return true; // Keep the result of `composeNode`.\n        }\n\n      } else if (detected) {\n        throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n      } else {\n        state.tag = _tag;\n        state.anchor = _anchor;\n        return true; // Keep the result of `composeNode`.\n      }\n\n    } else {\n      break; // Reading is done. Go to the epilogue.\n    }\n\n    //\n    // Common reading code for both explicit and implicit notations.\n    //\n    if (state.line === _line || state.lineIndent > nodeIndent) {\n      if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n        if (atExplicitKey) {\n          keyNode = state.result;\n        } else {\n          valueNode = state.result;\n        }\n      }\n\n      if (!atExplicitKey) {\n        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n        keyTag = keyNode = valueNode = null;\n      }\n\n      skipSeparationSpace(state, true, -1);\n      ch = state.input.charCodeAt(state.position);\n    }\n\n    if (state.lineIndent > nodeIndent && (ch !== 0)) {\n      throwError(state, 'bad indentation of a mapping entry');\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n\n  //\n  // Epilogue.\n  //\n\n  // Special case: last mapping's node contains only the key in explicit notation.\n  if (atExplicitKey) {\n    storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n  }\n\n  // Expose the resulting mapping.\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = 'mapping';\n    state.result = _result;\n  }\n\n  return detected;\n}\n\nfunction readTagProperty(state) {\n  var _position,\n      isVerbatim = false,\n      isNamed    = false,\n      tagHandle,\n      tagName,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x21/* ! */) return false;\n\n  if (state.tag !== null) {\n    throwError(state, 'duplication of a tag property');\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n\n  if (ch === 0x3C/* < */) {\n    isVerbatim = true;\n    ch = state.input.charCodeAt(++state.position);\n\n  } else if (ch === 0x21/* ! */) {\n    isNamed = true;\n    tagHandle = '!!';\n    ch = state.input.charCodeAt(++state.position);\n\n  } else {\n    tagHandle = '!';\n  }\n\n  _position = state.position;\n\n  if (isVerbatim) {\n    do { ch = state.input.charCodeAt(++state.position); }\n    while (ch !== 0 && ch !== 0x3E/* > */);\n\n    if (state.position < state.length) {\n      tagName = state.input.slice(_position, state.position);\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      throwError(state, 'unexpected end of the stream within a verbatim tag');\n    }\n  } else {\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n      if (ch === 0x21/* ! */) {\n        if (!isNamed) {\n          tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n          if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n            throwError(state, 'named tag handle cannot contain such characters');\n          }\n\n          isNamed = true;\n          _position = state.position + 1;\n        } else {\n          throwError(state, 'tag suffix cannot contain exclamation marks');\n        }\n      }\n\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    tagName = state.input.slice(_position, state.position);\n\n    if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n      throwError(state, 'tag suffix cannot contain flow indicator characters');\n    }\n  }\n\n  if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n    throwError(state, 'tag name cannot contain such characters: ' + tagName);\n  }\n\n  if (isVerbatim) {\n    state.tag = tagName;\n\n  } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n    state.tag = state.tagMap[tagHandle] + tagName;\n\n  } else if (tagHandle === '!') {\n    state.tag = '!' + tagName;\n\n  } else if (tagHandle === '!!') {\n    state.tag = 'tag:yaml.org,2002:' + tagName;\n\n  } else {\n    throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n  }\n\n  return true;\n}\n\nfunction readAnchorProperty(state) {\n  var _position,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x26/* & */) return false;\n\n  if (state.anchor !== null) {\n    throwError(state, 'duplication of an anchor property');\n  }\n\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  if (state.position === _position) {\n    throwError(state, 'name of an anchor node must contain at least one character');\n  }\n\n  state.anchor = state.input.slice(_position, state.position);\n  return true;\n}\n\nfunction readAlias(state) {\n  var _position, alias,\n      ch;\n\n  ch = state.input.charCodeAt(state.position);\n\n  if (ch !== 0x2A/* * */) return false;\n\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n\n  if (state.position === _position) {\n    throwError(state, 'name of an alias node must contain at least one character');\n  }\n\n  alias = state.input.slice(_position, state.position);\n\n  if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n    throwError(state, 'unidentified alias \"' + alias + '\"');\n  }\n\n  state.result = state.anchorMap[alias];\n  skipSeparationSpace(state, true, -1);\n  return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n  var allowBlockStyles,\n      allowBlockScalars,\n      allowBlockCollections,\n      indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n      atNewLine  = false,\n      hasContent = false,\n      typeIndex,\n      typeQuantity,\n      type,\n      flowIndent,\n      blockIndent;\n\n  if (state.listener !== null) {\n    state.listener('open', state);\n  }\n\n  state.tag    = null;\n  state.anchor = null;\n  state.kind   = null;\n  state.result = null;\n\n  allowBlockStyles = allowBlockScalars = allowBlockCollections =\n    CONTEXT_BLOCK_OUT === nodeContext ||\n    CONTEXT_BLOCK_IN  === nodeContext;\n\n  if (allowToSeek) {\n    if (skipSeparationSpace(state, true, -1)) {\n      atNewLine = true;\n\n      if (state.lineIndent > parentIndent) {\n        indentStatus = 1;\n      } else if (state.lineIndent === parentIndent) {\n        indentStatus = 0;\n      } else if (state.lineIndent < parentIndent) {\n        indentStatus = -1;\n      }\n    }\n  }\n\n  if (indentStatus === 1) {\n    while (readTagProperty(state) || readAnchorProperty(state)) {\n      if (skipSeparationSpace(state, true, -1)) {\n        atNewLine = true;\n        allowBlockCollections = allowBlockStyles;\n\n        if (state.lineIndent > parentIndent) {\n          indentStatus = 1;\n        } else if (state.lineIndent === parentIndent) {\n          indentStatus = 0;\n        } else if (state.lineIndent < parentIndent) {\n          indentStatus = -1;\n        }\n      } else {\n        allowBlockCollections = false;\n      }\n    }\n  }\n\n  if (allowBlockCollections) {\n    allowBlockCollections = atNewLine || allowCompact;\n  }\n\n  if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n    if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n      flowIndent = parentIndent;\n    } else {\n      flowIndent = parentIndent + 1;\n    }\n\n    blockIndent = state.position - state.lineStart;\n\n    if (indentStatus === 1) {\n      if (allowBlockCollections &&\n          (readBlockSequence(state, blockIndent) ||\n           readBlockMapping(state, blockIndent, flowIndent)) ||\n          readFlowCollection(state, flowIndent)) {\n        hasContent = true;\n      } else {\n        if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n            readSingleQuotedScalar(state, flowIndent) ||\n            readDoubleQuotedScalar(state, flowIndent)) {\n          hasContent = true;\n\n        } else if (readAlias(state)) {\n          hasContent = true;\n\n          if (state.tag !== null || state.anchor !== null) {\n            throwError(state, 'alias node should not have any properties');\n          }\n\n        } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n          hasContent = true;\n\n          if (state.tag === null) {\n            state.tag = '?';\n          }\n        }\n\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n      }\n    } else if (indentStatus === 0) {\n      // Special case: block sequences are allowed to have same indentation level as the parent.\n      // http://www.yaml.org/spec/1.2/spec.html#id2799784\n      hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n    }\n  }\n\n  if (state.tag !== null && state.tag !== '!') {\n    if (state.tag === '?') {\n      // Implicit resolving is not allowed for non-scalar types, and '?'\n      // non-specific tag is only automatically assigned to plain scalars.\n      //\n      // We only need to check kind conformity in case user explicitly assigns '?'\n      // tag, for example like this: \"!<?> [0]\"\n      //\n      if (state.result !== null && state.kind !== 'scalar') {\n        throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n      }\n\n      for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n        type = state.implicitTypes[typeIndex];\n\n        if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n          state.result = type.construct(state.result);\n          state.tag = type.tag;\n          if (state.anchor !== null) {\n            state.anchorMap[state.anchor] = state.result;\n          }\n          break;\n        }\n      }\n    } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n      type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n      if (state.result !== null && type.kind !== state.kind) {\n        throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n      }\n\n      if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n        throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n      } else {\n        state.result = type.construct(state.result);\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n      }\n    } else {\n      throwError(state, 'unknown tag !<' + state.tag + '>');\n    }\n  }\n\n  if (state.listener !== null) {\n    state.listener('close', state);\n  }\n  return state.tag !== null ||  state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n  var documentStart = state.position,\n      _position,\n      directiveName,\n      directiveArgs,\n      hasDirectives = false,\n      ch;\n\n  state.version = null;\n  state.checkLineBreaks = state.legacy;\n  state.tagMap = {};\n  state.anchorMap = {};\n\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    skipSeparationSpace(state, true, -1);\n\n    ch = state.input.charCodeAt(state.position);\n\n    if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n      break;\n    }\n\n    hasDirectives = true;\n    ch = state.input.charCodeAt(++state.position);\n    _position = state.position;\n\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n\n    directiveName = state.input.slice(_position, state.position);\n    directiveArgs = [];\n\n    if (directiveName.length < 1) {\n      throwError(state, 'directive name must not be less than one character in length');\n    }\n\n    while (ch !== 0) {\n      while (is_WHITE_SPACE(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n\n      if (ch === 0x23/* # */) {\n        do { ch = state.input.charCodeAt(++state.position); }\n        while (ch !== 0 && !is_EOL(ch));\n        break;\n      }\n\n      if (is_EOL(ch)) break;\n\n      _position = state.position;\n\n      while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n\n      directiveArgs.push(state.input.slice(_position, state.position));\n    }\n\n    if (ch !== 0) readLineBreak(state);\n\n    if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n      directiveHandlers[directiveName](state, directiveName, directiveArgs);\n    } else {\n      throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n    }\n  }\n\n  skipSeparationSpace(state, true, -1);\n\n  if (state.lineIndent === 0 &&\n      state.input.charCodeAt(state.position)     === 0x2D/* - */ &&\n      state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n      state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n    state.position += 3;\n    skipSeparationSpace(state, true, -1);\n\n  } else if (hasDirectives) {\n    throwError(state, 'directives end mark is expected');\n  }\n\n  composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n  skipSeparationSpace(state, true, -1);\n\n  if (state.checkLineBreaks &&\n      PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n    throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n  }\n\n  state.documents.push(state.result);\n\n  if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n    if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n      state.position += 3;\n      skipSeparationSpace(state, true, -1);\n    }\n    return;\n  }\n\n  if (state.position < (state.length - 1)) {\n    throwError(state, 'end of the stream or a document separator is expected');\n  } else {\n    return;\n  }\n}\n\n\nfunction loadDocuments(input, options) {\n  input = String(input);\n  options = options || {};\n\n  if (input.length !== 0) {\n\n    // Add tailing `\\n` if not exists\n    if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n        input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n      input += '\\n';\n    }\n\n    // Strip BOM\n    if (input.charCodeAt(0) === 0xFEFF) {\n      input = input.slice(1);\n    }\n  }\n\n  var state = new State(input, options);\n\n  var nullpos = input.indexOf('\\0');\n\n  if (nullpos !== -1) {\n    state.position = nullpos;\n    throwError(state, 'null byte is not allowed in input');\n  }\n\n  // Use 0 as string terminator. That significantly simplifies bounds check.\n  state.input += '\\0';\n\n  while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n    state.lineIndent += 1;\n    state.position += 1;\n  }\n\n  while (state.position < (state.length - 1)) {\n    readDocument(state);\n  }\n\n  return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n  if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n    options = iterator;\n    iterator = null;\n  }\n\n  var documents = loadDocuments(input, options);\n\n  if (typeof iterator !== 'function') {\n    return documents;\n  }\n\n  for (var index = 0, length = documents.length; index < length; index += 1) {\n    iterator(documents[index]);\n  }\n}\n\n\nfunction load(input, options) {\n  var documents = loadDocuments(input, options);\n\n  if (documents.length === 0) {\n    /*eslint-disable no-undefined*/\n    return undefined;\n  } else if (documents.length === 1) {\n    return documents[0];\n  }\n  throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n  if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n    options = iterator;\n    iterator = null;\n  }\n\n  return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n  return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll     = loadAll;\nmodule.exports.load        = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad    = safeLoad;\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","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","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","var 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 { s__ } from '~/locale';\n\nexport const NEW_POLICY_BUTTON_TEXT = s__('SecurityOrchestration|New policy');\nexport const PIPELINE_EXECUTION_POLICY_TYPE_HEADER = s__(\n  'SecurityOrchestration|Pipeline execution',\n);\nexport const VULNERABILITY_MANAGEMENT_POLICY_TYPE_HEADER = s__(\n  'SecurityOrchestration|Vulnerability management',\n);\n\nexport const POLICY_TYPE_COMPONENT_OPTIONS = {\n  scanExecution: {\n    component: 'scan-execution-policy-editor',\n    text: s__('SecurityOrchestration|Scan execution'),\n    typeName: 'ScanExecutionPolicy',\n    urlParameter: 'scan_execution_policy',\n    value: 'scanExecution',\n  },\n  legacyApproval: {\n    component: 'scan-result-policy-editor',\n    text: s__('SecurityOrchestration|Merge request approval'),\n    typeName: 'ScanResultPolicy',\n    urlParameter: 'approval_policy',\n    value: 'approval',\n  },\n  approval: {\n    // used by Group.approvalPolicies\n    component: 'scan-result-policy-editor',\n    text: s__('SecurityOrchestration|Merge request approval'),\n    typeName: 'ApprovalPolicy',\n    urlParameter: 'approval_policy',\n    value: 'approval',\n  },\n  pipelineExecution: {\n    component: 'pipeline-execution-policy-editor',\n    text: PIPELINE_EXECUTION_POLICY_TYPE_HEADER,\n    typeName: 'PipelineExecutionPolicy',\n    urlParameter: 'pipeline_execution_policy',\n    value: 'pipeline',\n  },\n  vulnerabilityManagement: {\n    component: 'vulnerability-management-policy-editor',\n    text: VULNERABILITY_MANAGEMENT_POLICY_TYPE_HEADER,\n    typeName: 'VulnerabilityManagementPolicy',\n    urlParameter: 'vulnerability_management_policy',\n    value: 'vulnerabilityManagement',\n  },\n};\n\nexport const POLICIES_LIST_CONTAINER_CLASS = '.js-security-policies-container-wrapper';\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n  include: [\n    require('./failsafe')\n  ],\n  implicit: [\n    require('../type/null'),\n    require('../type/bool'),\n    require('../type/int'),\n    require('../type/float')\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:\"gl-mr-3 gl-flex gl-h-6 gl-w-6 gl-self-start\"},[_c('div',{staticClass:\"gl-m-auto gl-flex\"},[(_vm.isMerged)?_c('gl-icon',{attrs:{\"name\":\"merge\",\"size\":16,\"variant\":\"info\"}}):(_vm.isClosed)?_c('gl-icon',{attrs:{\"name\":\"merge-request-close\",\"size\":16,\"variant\":\"danger\"}}):(_vm.status === 'approval')?_c('gl-icon',{attrs:{\"name\":\"approval\",\"size\":16}}):(_vm.isEmpty)?_c('status-icon',{staticClass:\"!gl-m-0\",attrs:{\"icon-name\":\"neutral\",\"level\":1}}):_c('status-icon',{staticClass:\"!gl-m-0\",attrs:{\"is-loading\":_vm.isLoading,\"icon-name\":_vm.status,\"level\":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!./mr_widget_status_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!./mr_widget_status_icon.vue?vue&type=script&lang=js\"","<script>\nimport { GlIcon } from '@gitlab/ui';\nimport { STATUS_CLOSED, STATUS_MERGED, STATUS_EMPTY } from '~/issues/constants';\nimport StatusIcon from './widget/status_icon.vue';\n\nexport default {\n  components: {\n    StatusIcon,\n    GlIcon,\n  },\n  props: {\n    status: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    isClosed() {\n      return this.status === STATUS_CLOSED;\n    },\n    isLoading() {\n      return this.status === 'loading';\n    },\n    isMerged() {\n      return this.status === STATUS_MERGED;\n    },\n    isEmpty() {\n      return this.status === STATUS_EMPTY;\n    },\n  },\n};\n</script>\n<template>\n  <div class=\"gl-mr-3 gl-flex gl-h-6 gl-w-6 gl-self-start\">\n    <div class=\"gl-m-auto gl-flex\">\n      <gl-icon v-if=\"isMerged\" name=\"merge\" :size=\"16\" variant=\"info\" />\n      <gl-icon v-else-if=\"isClosed\" name=\"merge-request-close\" :size=\"16\" variant=\"danger\" />\n      <gl-icon v-else-if=\"status === 'approval'\" name=\"approval\" :size=\"16\" />\n      <status-icon v-else-if=\"isEmpty\" icon-name=\"neutral\" :level=\"1\" class=\"!gl-m-0\" />\n      <status-icon v-else :is-loading=\"isLoading\" :icon-name=\"status\" :level=\"1\" class=\"!gl-m-0\" />\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./mr_widget_status_icon.vue?vue&type=template&id=a9429b6c\"\nimport script from \"./mr_widget_status_icon.vue?vue&type=script&lang=js\"\nexport * from \"./mr_widget_status_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","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","\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 _c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],class:_vm.cssClass,attrs:{\"title\":_vm.display.tooltip,\"href\":_vm.link,\"size\":_vm.size,\"target\":\"_blank\",\"rel\":\"noopener noreferrer nofollow\",\"is-unsafe-link\":\"\",\"data-track-action\":\"open_review_app\",\"data-track-label\":\"review_app\"}},[_vm._v(\"\\n  \"+_vm._s(_vm.display.text)+\" \"),_c('gl-icon',{attrs:{\"variant\":\"subtle\",\"name\":\"external-link\"}})],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!./review_app_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!./review_app_link.vue?vue&type=script&lang=js\"","<script>\nimport { GlButton, GlTooltipDirective, GlIcon } from '@gitlab/ui';\n\nexport default {\n  components: {\n    GlButton,\n    GlIcon,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    cssClass: {\n      type: String,\n      required: true,\n    },\n    display: {\n      type: Object,\n      required: true,\n    },\n    link: {\n      type: String,\n      required: true,\n    },\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n    },\n  },\n};\n</script>\n<template>\n  <gl-button\n    v-gl-tooltip\n    :title=\"display.tooltip\"\n    :href=\"link\"\n    :size=\"size\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer nofollow\"\n    is-unsafe-link\n    :class=\"cssClass\"\n    data-track-action=\"open_review_app\"\n    data-track-label=\"review_app\"\n  >\n    {{ display.text }} <gl-icon variant=\"subtle\" name=\"external-link\" />\n  </gl-button>\n</template>\n","import { render, staticRenderFns } from \"./review_app_link.vue?vue&type=template&id=0c5bdf82\"\nimport script from \"./review_app_link.vue?vue&type=script&lang=js\"\nexport * from \"./review_app_link.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-disclosure-dropdown-item',{staticClass:\"ci-job-component\",attrs:{\"item\":_vm.item,\"data-testid\":\"ci-job-item\"},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_c('div',{staticClass:\"-gl-my-2 gl-flex gl-items-center gl-justify-between\"},[_c('job-name-component',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],attrs:{\"title\":_vm.tooltipText,\"name\":_vm.job.name,\"status\":_vm.status,\"data-testid\":\"job-name\"}}),_vm._v(\" \"),(_vm.hasJobAction)?_c('job-action-button',{staticClass:\"gl-ml-6\",attrs:{\"job-id\":_vm.job.id,\"job-action\":_vm.status.action,\"job-name\":_vm.job.name},on:{\"jobActionExecuted\":function($event){return _vm.$emit('jobActionExecuted')}}}):_vm._e()],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!./job_action_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!./job_action_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal } from '@gitlab/ui';\nimport { s__, __, sprintf } from '~/locale';\n\nexport default {\n  name: 'JobActionModal',\n  i18n: {\n    title: s__('PipelineGraph|Are you sure you want to run %{jobName}?'),\n    confirmationText: s__('PipelineGraph|Do you want to continue?'),\n    actionCancel: { text: __('Cancel') },\n  },\n  components: {\n    GlModal,\n  },\n  model: {\n    prop: 'visible',\n    event: 'change',\n  },\n  props: {\n    customMessage: {\n      type: String,\n      required: true,\n    },\n    visible: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    jobName: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    modalText() {\n      return {\n        confirmButton: {\n          text: sprintf(__('Yes, run %{jobName}'), {\n            jobName: this.jobName,\n          }),\n        },\n        message: sprintf(__('Custom confirmation message: %{message}'), {\n          message: this.customMessage,\n        }),\n        title: sprintf(this.$options.i18n.title, {\n          jobName: this.jobName,\n        }),\n      };\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-modal\n    modal-id=\"job-action-modal\"\n    :action-cancel=\"$options.i18n.actionCancel\"\n    :action-primary=\"modalText.confirmButton\"\n    :title=\"modalText.title\"\n    :visible=\"visible\"\n    @primary=\"$emit('confirm')\"\n    @change=\"$emit('change', $event)\"\n  >\n    <div>\n      <p>{{ modalText.message }}</p>\n      <span>{{ $options.i18n.confirmationText }}</span>\n    </div>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./job_action_modal.vue?vue&type=template&id=0793f7d2\"\nimport script from \"./job_action_modal.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_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\":\"job-action-modal\",\"action-cancel\":_vm.$options.i18n.actionCancel,\"action-primary\":_vm.modalText.confirmButton,\"title\":_vm.modalText.title,\"visible\":_vm.visible},on:{\"primary\":function($event){return _vm.$emit('confirm')},\"change\":function($event){return _vm.$emit('change', $event)}}},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.modalText.message))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.confirmationText))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlButton, GlIcon, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { s__ } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport cancelJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_cancel.mutation.graphql';\nimport playJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_play.mutation.graphql';\nimport retryJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_retry.mutation.graphql';\nimport unscheduleJobMutation from '~/ci/pipeline_mini_graph/graphql/mutations/job_unschedule.mutation.graphql';\nimport JobActionModal from './job_action_modal.vue';\n\nexport const i18n = {\n  errors: {\n    cancelJob: s__('Pipeline|There was a problem canceling the job.'),\n    playJob: s__('Pipeline|There was a problem running the job.'),\n    retryJob: s__('Pipeline|There was a problem running the job again.'),\n    unscheduleJob: s__('Pipeline|There was a problem unscheduling the job.'),\n  },\n};\n\nexport default {\n  name: 'JobActionButton',\n  JOB_ACTIONS: {\n    cancel: {\n      dataName: 'jobCancel',\n      error: i18n.errors.cancelJob,\n      mutation: cancelJobMutation,\n    },\n    play: {\n      dataName: 'jobPlay',\n      error: i18n.errors.playJob,\n      mutation: playJobMutation,\n    },\n    retry: {\n      dataName: 'jobRetry',\n      error: i18n.errors.retryJob,\n      mutation: retryJobMutation,\n    },\n    'time-out': {\n      dataName: 'jobUnschedule',\n      error: i18n.errors.unscheduleJob,\n      mutation: unscheduleJobMutation,\n    },\n  },\n  i18n,\n  components: {\n    GlButton,\n    GlIcon,\n    GlLoadingIcon,\n    JobActionModal,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    jobId: {\n      type: String,\n      required: true,\n    },\n    jobAction: {\n      type: Object,\n      required: true,\n    },\n    jobName: {\n      type: String,\n      required: true,\n    },\n  },\n  emits: ['jobActionExecuted'],\n  data() {\n    return {\n      isLoading: false,\n      showConfirmationModal: false,\n    };\n  },\n  computed: {\n    actionType() {\n      return this.jobAction.icon;\n    },\n    hasConfirmationModal() {\n      return this.jobAction?.confirmationMessage !== null;\n    },\n  },\n  methods: {\n    onActionButtonClick() {\n      if (this.hasConfirmationModal) {\n        this.showConfirmationModal = true;\n      } else {\n        this.executeJobAction();\n      }\n    },\n    async executeJobAction() {\n      try {\n        this.isLoading = true;\n        const {\n          data: {\n            [this.$options.JOB_ACTIONS[this.actionType].dataName]: { errors },\n          },\n        } = await this.$apollo.mutate({\n          mutation: this.$options.JOB_ACTIONS[this.actionType].mutation,\n          variables: { id: this.jobId },\n        });\n        if (errors.length) {\n          reportToSentry(this.$options.name, new Error(errors.join(', ')));\n        }\n      } catch (error) {\n        createAlert({ message: this.$options.JOB_ACTIONS[this.actionType].error });\n        reportToSentry(this.$options.name, error);\n      } finally {\n        this.isLoading = false;\n        this.$emit('jobActionExecuted');\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <gl-button\n      v-gl-tooltip.viewport.left\n      :title=\"jobAction.title\"\n      :aria-label=\"jobAction.title\"\n      :disabled=\"isLoading\"\n      size=\"small\"\n      class=\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\"\n      data-testid=\"ci-action-button\"\n      @click.prevent=\"onActionButtonClick\"\n    >\n      <gl-loading-icon v-if=\"isLoading\" size=\"sm\" class=\"gl-m-2\" />\n      <gl-icon v-else :name=\"jobAction.icon\" :size=\"12\" />\n    </gl-button>\n    <job-action-modal\n      v-if=\"hasConfirmationModal\"\n      v-model=\"showConfirmationModal\"\n      :job-name=\"jobName\"\n      :custom-message=\"jobAction.confirmationMessage\"\n      @confirm=\"executeJobAction\"\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!./job_action_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!./job_action_button.vue?vue&type=script&lang=js\"","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./job_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!./job_dropdown_item.vue?vue&type=script&lang=js\"","<script>\nimport { GlDisclosureDropdownItem, GlTooltipDirective } from '@gitlab/ui';\nimport { sprintf } from '~/locale';\nimport { capitalizeFirstCharacter } from '~/lib/utils/text_utility';\nimport delayedJobMixin from '~/ci/mixins/delayed_job_mixin';\nimport JobActionButton from './job_action_button.vue';\nimport JobNameComponent from './job_name_component.vue';\n\nexport default {\n  name: 'JobDropdownItem',\n  components: {\n    JobActionButton,\n    JobNameComponent,\n    GlDisclosureDropdownItem,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  mixins: [delayedJobMixin],\n  props: {\n    job: {\n      type: Object,\n      required: true,\n    },\n  },\n  emits: ['jobActionExecuted'],\n  computed: {\n    hasJobAction() {\n      return Boolean(this.status?.action?.id);\n    },\n    item() {\n      return {\n        text: this.job.name,\n        href: this.status?.detailsPath || '',\n      };\n    },\n    status() {\n      return this.job.detailedStatus || this.job.status;\n    },\n    tooltipText() {\n      const statusTooltip = capitalizeFirstCharacter(this.status?.tooltip);\n\n      if (this.isDelayedJob) {\n        return sprintf(statusTooltip, { remainingTime: this.remainingTime });\n      }\n      return statusTooltip;\n    },\n  },\n};\n</script>\n<template>\n  <gl-disclosure-dropdown-item :item=\"item\" class=\"ci-job-component\" data-testid=\"ci-job-item\">\n    <template #list-item>\n      <div class=\"-gl-my-2 gl-flex gl-items-center gl-justify-between\">\n        <job-name-component\n          v-gl-tooltip.viewport.left\n          :title=\"tooltipText\"\n          :name=\"job.name\"\n          :status=\"status\"\n          data-testid=\"job-name\"\n        />\n        <job-action-button\n          v-if=\"hasJobAction\"\n          class=\"gl-ml-6\"\n          :job-id=\"job.id\"\n          :job-action=\"status.action\"\n          :job-name=\"job.name\"\n          @jobActionExecuted=\"$emit('jobActionExecuted')\"\n        />\n      </div>\n    </template>\n  </gl-disclosure-dropdown-item>\n</template>\n","import { render, staticRenderFns } from \"./job_action_button.vue?vue&type=template&id=6a2f3078\"\nimport script from \"./job_action_button.vue?vue&type=script&lang=js\"\nexport * from \"./job_action_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('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport.left\",modifiers:{\"viewport\":true,\"left\":true}}],staticClass:\"gl-h-6 gl-w-6 !gl-rounded-full !gl-p-0\",attrs:{\"title\":_vm.jobAction.title,\"aria-label\":_vm.jobAction.title,\"disabled\":_vm.isLoading,\"size\":\"small\",\"data-testid\":\"ci-action-button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onActionButtonClick.apply(null, arguments)}}},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-m-2\",attrs:{\"size\":\"sm\"}}):_c('gl-icon',{attrs:{\"name\":_vm.jobAction.icon,\"size\":12}})],1),_vm._v(\" \"),(_vm.hasConfirmationModal)?_c('job-action-modal',{attrs:{\"job-name\":_vm.jobName,\"custom-message\":_vm.jobAction.confirmationMessage},on:{\"confirm\":_vm.executeJobAction},model:{value:(_vm.showConfirmationModal),callback:function ($$v) {_vm.showConfirmationModal=$$v},expression:\"showConfirmationModal\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./job_dropdown_item.vue?vue&type=template&id=2ef1d186\"\nimport script from \"./job_dropdown_item.vue?vue&type=script&lang=js\"\nexport * from \"./job_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","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 filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!(\"onmouseenter\" in element)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = event; // Events can be reentrant (e.g., focus).\n    event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      event = event0;\n    }\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, capture) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n  var event0 = event;\n  event1.sourceEvent = event;\n  event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    event = event0;\n  }\n}\n","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","import mountNotesApp from '~/mr_notes/mount_app';\nimport { initMrPage } from '~/pages/projects/merge_requests/page';\n\ninitMrPage();\nmountNotesApp();\n","import '~/pages/projects/merge_requests/show';\nimport Vue from 'vue';\nimport PipelineAccountVerificationAlert from 'ee/vue_shared/components/pipeline_account_verification_alert.vue';\nimport { parseBoolean } from '~/lib/utils/common_utils';\n\nconst initVerificationAlert = (el) => {\n  return new Vue({\n    el,\n    name: 'PipelineAccountVerificationAlertRoot',\n    provide: {\n      identityVerificationRequired: parseBoolean(el.dataset.identityVerificationRequired),\n      identityVerificationPath: el.dataset.identityVerificationPath,\n    },\n    render(createElement) {\n      return createElement(PipelineAccountVerificationAlert, { class: 'gl-mt-3' });\n    },\n  });\n};\n\nconst el = document.querySelector('.js-verification-alert');\nif (el) {\n  initVerificationAlert(el);\n}\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainCarIndex\"},\"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\":\"mergeTrainCar\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"index\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":92}};\n    doc.loc.source = {\"body\":\"fragment MergeTrainCarIndex on MergeRequest {\\n  id\\n  mergeTrainCar {\\n    id\\n    index\\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[\"MergeTrainCarIndex\"] = oneQuery(doc, \"MergeTrainCarIndex\");\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"subscription\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeChecksSubscription\"},\"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\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canMerge\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeabilityChecks\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"identifier\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":290}};\n    doc.loc.source = {\"body\":\"subscription mergeChecksSubscription($issuableId: IssuableID!) {\\n  mergeRequestMergeStatusUpdated(issuableId: $issuableId) {\\n    ... on MergeRequest {\\n      id\\n      userPermissions {\\n        canMerge\\n      }\\n      mergeabilityChecks {\\n        identifier\\n        status\\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[\"mergeChecksSubscription\"] = oneQuery(doc, \"mergeChecksSubscription\");\n        \n","import { isEmpty, uniqueId } from 'lodash';\nimport { s__, sprintf } from '~/locale';\nimport Api from 'ee/api';\nimport { SEVERITY_LEVELS, REPORT_TYPES_DEFAULT } from 'ee/security_dashboard/constants';\nimport { isPositiveInteger } from '~/lib/utils/number_utils';\nimport {\n  ALL_PROTECTED_BRANCHES,\n  ANY_COMMIT,\n  BRANCH_TYPE_KEY,\n  INVALID_PROTECTED_BRANCHES,\n  VALID_SCAN_RESULT_BRANCH_TYPE_OPTIONS,\n  VULNERABILITY_AGE_OPERATORS,\n} from 'ee/security_orchestration/components/policy_editor/constants';\nimport {\n  APPROVAL_VULNERABILITY_STATES,\n  NEWLY_DETECTED,\n  PREVIOUSLY_EXISTING,\n  AGE_INTERVALS,\n  VULNERABILITY_AGE_ALLOWED_KEYS,\n  VULNERABILITY_ATTRIBUTES,\n} from '../rule/scan_filters/constants';\n\nconst REPORT_TYPES_KEYS = Object.keys(REPORT_TYPES_DEFAULT);\n\nexport const VULNERABILITY_STATE_KEYS = [\n  NEWLY_DETECTED,\n  ...Object.keys(APPROVAL_VULNERABILITY_STATES[NEWLY_DETECTED]),\n  ...Object.keys(APPROVAL_VULNERABILITY_STATES[PREVIOUSLY_EXISTING]),\n];\nexport const ANY_MERGE_REQUEST = 'any_merge_request';\nexport const SCAN_FINDING = 'scan_finding';\nexport const LICENSE_FINDING = 'license_finding';\nexport const MATCHING = s__('ScanResultPolicy|Matching');\nexport const EXCEPT = s__('ScanResultPolicy|Except');\n\nexport const LICENSE_STATES = {\n  newly_detected: s__('ScanResultPolicy|Newly Detected'),\n  detected: s__('ScanResultPolicy|Pre-existing'),\n};\n\n/*\n  Construct a new rule object.\n*/\nexport const securityScanBuildRule = () => ({\n  id: uniqueId('rule_'),\n  type: SCAN_FINDING,\n  scanners: [],\n  vulnerabilities_allowed: 0,\n  severity_levels: [],\n  vulnerability_states: [],\n  branch_type: ALL_PROTECTED_BRANCHES.value,\n});\n\nexport const licenseScanBuildRule = () => {\n  return {\n    id: uniqueId('rule_'),\n    type: LICENSE_FINDING,\n    match_on_inclusion_license: true,\n    license_types: [],\n    license_states: [],\n    branch_type: ALL_PROTECTED_BRANCHES.value,\n  };\n};\n\nexport const anyMergeRequestBuildRule = () => ({\n  id: uniqueId('rule_'),\n  type: ANY_MERGE_REQUEST,\n  branch_type: ALL_PROTECTED_BRANCHES.value,\n  commits: ANY_COMMIT,\n});\n\n/*\n  Construct a new rule object for when the licenseScanningPolicies flag is on\n*/\nexport const emptyBuildRule = () => ({\n  type: '',\n});\n\n/**\n * Check if all rule values of certain key are included in the allowedValues list\n * @param {Array} rules - List of rules\n * @param {String} key - Rule key to check\n * @param {Array} allowedValues - List of possible values\n * @param {Boolean} areDuplicatesAllowed - check for duplicates in array\n * @returns\n */\n// eslint-disable-next-line max-params\nconst invalidRuleValues = (rules, key, allowedValues, areDuplicatesAllowed = false) => {\n  if (!rules) {\n    return false;\n  }\n\n  const hasDuplicates = (items = []) => new Set(items).size !== items.length;\n\n  if (!areDuplicatesAllowed && rules.some((rule) => hasDuplicates(rule[key] || []))) {\n    return true;\n  }\n\n  return rules.some((rule) => (rule[key] || []).some((value) => !allowedValues.includes(value)));\n};\n\nexport const invalidScanners = (rules) => invalidRuleValues(rules, 'scanners', REPORT_TYPES_KEYS);\n\nexport const invalidSeverities = (rules) =>\n  invalidRuleValues(rules, 'severity_levels', Object.keys(SEVERITY_LEVELS));\n\nexport const invalidVulnerabilityStates = (rules) =>\n  invalidRuleValues(rules, 'vulnerability_states', VULNERABILITY_STATE_KEYS);\n\nexport const invalidVulnerabilityAttributes = (rules) => {\n  if (!rules) {\n    return false;\n  }\n\n  const validAttributes = VULNERABILITY_ATTRIBUTES.map(({ value }) => value);\n\n  return rules\n    .filter((rule) => !isEmpty(rule.vulnerability_attributes))\n    .flatMap((rule) => rule.vulnerability_attributes)\n    .some((attribute) => {\n      if (typeof attribute !== 'object') {\n        return true;\n      }\n      return Object.entries(attribute).some(\n        ([key, value]) => !validAttributes.includes(key) || typeof value !== 'boolean',\n      );\n    });\n};\n\nexport const invalidVulnerabilitiesAllowed = (rules) => {\n  if (!rules) {\n    return false;\n  }\n\n  return rules\n    .filter((rule) => rule.vulnerabilities_allowed)\n    .map((rule) => rule.vulnerabilities_allowed)\n    .some((value) => !isPositiveInteger(value));\n};\n\nexport const invalidVulnerabilityAge = (rules) => {\n  if (!rules) {\n    return false;\n  }\n\n  const validOperators = VULNERABILITY_AGE_OPERATORS.map(({ value }) => value);\n  const validIntervals = AGE_INTERVALS.map(({ value }) => value);\n  const validVulnerabilityStates = Object.keys(APPROVAL_VULNERABILITY_STATES[PREVIOUSLY_EXISTING]);\n\n  return rules\n    .filter((rule) => rule.vulnerability_age)\n    .some((rule) => {\n      const {\n        vulnerability_age: { value, operator, interval },\n        vulnerability_states: states,\n      } = rule;\n      return (\n        !validOperators.includes(operator) ||\n        !isPositiveInteger(value) ||\n        !validIntervals.includes(interval) ||\n        !states?.length ||\n        !states?.some((state) => validVulnerabilityStates.includes(state)) ||\n        !Object.keys(rule.vulnerability_age).every((key) =>\n          VULNERABILITY_AGE_ALLOWED_KEYS.includes(key),\n        )\n      );\n    });\n};\n\n/*\n  Returns the config for a particular rule type\n*/\nexport const getDefaultRule = (scanType) => {\n  switch (scanType) {\n    case SCAN_FINDING:\n      return securityScanBuildRule();\n    case LICENSE_FINDING:\n      return licenseScanBuildRule();\n    case ANY_MERGE_REQUEST:\n      return anyMergeRequestBuildRule();\n    default:\n      return emptyBuildRule();\n  }\n};\n\nconst doesBranchExist = async ({ branch, projectId }) => {\n  try {\n    await Api.projectProtectedBranch(projectId, branch);\n    return true;\n  } catch {\n    return false;\n  }\n};\n\nexport const getInvalidBranches = async ({ branches, projectId }) => {\n  const uniqueBranches = [...new Set(branches)];\n  const invalidBranches = [];\n\n  for await (const branch of uniqueBranches) {\n    if (!(await doesBranchExist({ branch, projectId }))) {\n      invalidBranches.push(branch);\n    }\n  }\n\n  return invalidBranches;\n};\n\n/**\n * Check if any rule has invalid branch type\n * @param rules list of rules with either branches or branch_type property\n * @returns {Boolean}\n */\nexport const invalidBranchType = (rules) => {\n  if (!rules) return false;\n\n  return rules.some(\n    (rule) =>\n      BRANCH_TYPE_KEY in rule && !VALID_SCAN_RESULT_BRANCH_TYPE_OPTIONS.includes(rule.branch_type),\n  );\n};\n\nexport const humanizeInvalidBranchesError = (branches) => {\n  const sentence = [];\n  if (branches.length > 1) {\n    const lastBranch = branches.pop();\n    sentence.push(branches.join(', '), s__('SecurityOrchestration| and '), lastBranch);\n  } else {\n    sentence.push(branches.join());\n  }\n  return sprintf(INVALID_PROTECTED_BRANCHES, { branches: sentence.join('') });\n};\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","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n  if (data === null) return true;\n\n  var max = data.length;\n\n  return (max === 1 && data === '~') ||\n         (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n  return null;\n}\n\nfunction isNull(object) {\n  return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n  kind: 'scalar',\n  resolve: resolveYamlNull,\n  construct: constructYamlNull,\n  predicate: isNull,\n  represent: {\n    canonical: function () { return '~';    },\n    lowercase: function () { return 'null'; },\n    uppercase: function () { return 'NULL'; },\n    camelcase: function () { return 'Null'; }\n  },\n  defaultStyle: 'lowercase'\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","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n  if (data === null) return false;\n  if (data.length === 0) return false;\n\n  var regexp = data,\n      tail   = /\\/([gim]*)$/.exec(data),\n      modifiers = '';\n\n  // if regexp starts with '/' it can have modifiers and must be properly closed\n  // `/foo/gim` - modifiers tail can be maximum 3 chars\n  if (regexp[0] === '/') {\n    if (tail) modifiers = tail[1];\n\n    if (modifiers.length > 3) return false;\n    // if expression starts with /, is should be properly terminated\n    if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n  }\n\n  return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n  var regexp = data,\n      tail   = /\\/([gim]*)$/.exec(data),\n      modifiers = '';\n\n  // `/foo/gim` - tail can be maximum 4 chars\n  if (regexp[0] === '/') {\n    if (tail) modifiers = tail[1];\n    regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n  }\n\n  return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n  var result = '/' + object.source + '/';\n\n  if (object.global) result += 'g';\n  if (object.multiline) result += 'm';\n  if (object.ignoreCase) result += 'i';\n\n  return result;\n}\n\nfunction isRegExp(object) {\n  return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n  kind: 'scalar',\n  resolve: resolveJavascriptRegExp,\n  construct: constructJavascriptRegExp,\n  predicate: isRegExp,\n  represent: representJavascriptRegExp\n});\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"createPolicyProjectAsync\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"securityPolicyProjectCreateAsync\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"errors\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":142}};\n    doc.loc.source = {\"body\":\"mutation createPolicyProjectAsync($fullPath: String!) {\\n  securityPolicyProjectCreateAsync(input: { fullPath: $fullPath }) {\\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[\"createPolicyProjectAsync\"] = oneQuery(doc, \"createPolicyProjectAsync\");\n        \n","import { s__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\nimport { DOCS_URL_IN_EE_DIR } from 'jh_else_ce/lib/utils/url_utility';\nimport { stateToComponentMap as classStateMap, stateKey } from './stores/state_maps';\n\nexport const FOUR_MINUTES_IN_MS = 1000 * 60 * 4;\n\nexport const STATE_QUERY_POLLING_INTERVAL_DEFAULT = 5000;\nexport const STATE_QUERY_POLLING_INTERVAL_BACKOFF = 1.2;\n\nexport const SUCCESS = 'success';\nexport const WARNING = 'warning';\nexport const INFO = 'info';\n\nexport const MWPS_MERGE_STRATEGY = 'merge_when_pipeline_succeeds';\nexport const MWCP_MERGE_STRATEGY = 'merge_when_checks_pass';\nexport const MTWPS_MERGE_STRATEGY = 'add_to_merge_train_when_pipeline_succeeds';\nexport const MTWCP_MERGE_STRATEGY = 'add_to_merge_train_when_checks_pass';\nexport const MT_MERGE_STRATEGY = 'merge_train';\n\nexport const PIPELINE_FAILED_STATE = 'failed';\n\nexport const AUTO_MERGE_STRATEGIES = [\n  MWPS_MERGE_STRATEGY,\n  MTWPS_MERGE_STRATEGY,\n  MTWCP_MERGE_STRATEGY,\n  MT_MERGE_STRATEGY,\n  MWCP_MERGE_STRATEGY,\n];\n\n// SP - \"Suggest Pipelines\"\nexport const SP_TRACK_LABEL = 'no_pipeline_noticed';\nexport const SP_SHOW_TRACK_EVENT = 'click_button';\nexport const SP_SHOW_TRACK_VALUE = 10;\nexport const SP_HELP_CONTENT = s__(\n  `mrWidget|GitLab %{linkStart}CI/CD can automatically build, test, and deploy your application.%{linkEnd} It only takes a few minutes to get started, and we can help you create a pipeline configuration file.`,\n);\nexport const SP_HELP_URL = `${DOCS_URL_IN_EE_DIR}/ci/quick_start/`;\nexport const SP_ICON_NAME = 'status_notfound';\n\n// JM - \"Jenkins Migration\"\nexport const JM_JENKINS_TITLE_ICON_NAME = 'information';\nexport const JM_EVENT_NAME = 'click_dismiss_button_jenkins_migration_callout';\nexport const JM_MIGRATION_LINK = helpPagePath('ci/migration/jenkins.md');\n\nexport const MERGE_ACTIVE_STATUS_PHRASES = [\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Drum roll, please…'),\n    emoji: 'drum',\n  },\n  {\n    message: s__(\"mrWidget|%{boldStart}Merging!%{boldEnd} We're almost there…\"),\n    emoji: 'sparkles',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Changes will land soon…'),\n    emoji: 'airplane_arriving',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Changes are being shipped…'),\n    emoji: 'ship',\n  },\n  {\n    message: s__(\"mrWidget|%{boldStart}Merging!%{boldEnd} Everything's good…\"),\n    emoji: 'relieved',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} This is going to be great…'),\n    emoji: 'heart_eyes',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Lift-off in 5… 4… 3…'),\n    emoji: 'rocket',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} The changes are leaving the station…'),\n    emoji: 'bullettrain_front',\n  },\n  {\n    message: s__('mrWidget|%{boldStart}Merging!%{boldEnd} Take a deep breath and relax…'),\n    emoji: 'sunglasses',\n  },\n];\n\nconst STATE_MACHINE = {\n  states: {\n    IDLE: 'IDLE',\n    MERGING: 'MERGING',\n    MERGED: 'MERGED',\n    AUTO_MERGE: 'AUTO_MERGE',\n  },\n  transitions: {\n    MERGE: 'start-merge',\n    AUTO_MERGE: 'start-auto-merge',\n    MERGE_FAILURE: 'merge-failed',\n    MERGED: 'merge-done',\n    MERGING: 'merging',\n  },\n};\nconst { states, transitions } = STATE_MACHINE;\n\nSTATE_MACHINE.definition = {\n  initial: states.IDLE,\n  states: {\n    [states.IDLE]: {\n      on: {\n        [transitions.MERGE]: states.MERGING,\n        [transitions.AUTO_MERGE]: states.AUTO_MERGE,\n        [transitions.MERGING]: states.MERGING,\n      },\n    },\n    [states.MERGING]: {\n      on: {\n        [transitions.MERGED]: states.MERGED,\n        [transitions.MERGE_FAILURE]: states.IDLE,\n      },\n    },\n    [states.AUTO_MERGE]: {\n      on: {\n        [transitions.MERGED]: states.IDLE,\n        [transitions.MERGE_FAILURE]: states.IDLE,\n      },\n    },\n  },\n};\n\nexport const stateToTransitionMap = {\n  [stateKey.merging]: transitions.MERGE,\n  [stateKey.merged]: transitions.MERGED,\n  [stateKey.autoMergeEnabled]: transitions.AUTO_MERGE,\n};\nexport const stateToComponentMap = {\n  [states.MERGING]: classStateMap[stateKey.merging],\n  [states.MERGED]: classStateMap[stateKey.merged],\n  [states.AUTO_MERGE]: classStateMap[stateKey.autoMergeEnabled],\n};\n\nexport const EXTENSION_ICONS = {\n  failed: 'failed',\n  warning: 'warning',\n  success: 'success',\n  neutral: 'neutral',\n  error: 'error',\n  notice: 'notice',\n  severityCritical: 'severityCritical',\n  severityHigh: 'severityHigh',\n  severityMedium: 'severityMedium',\n  severityLow: 'severityLow',\n  severityInfo: 'severityInfo',\n  severityUnknown: 'severityUnknown',\n};\n\nexport const EXTENSION_ICON_NAMES = {\n  failed: 'status-failed',\n  warning: 'status-alert',\n  success: 'status-success',\n  neutral: 'status-neutral',\n  error: 'status-alert',\n  notice: 'status-alert',\n  scheduled: 'status-scheduled',\n  severityCritical: 'severity-critical',\n  severityHigh: 'severity-high',\n  severityMedium: 'severity-medium',\n  severityLow: 'severity-low',\n  severityInfo: 'severity-info',\n  severityUnknown: 'severity-unknown',\n};\n\nexport const EXTENSION_ICON_CLASS = {\n  failed: {\n    backgroundClass: 'gl-bg-status-danger',\n    iconClass: 'gl-fill-status-danger',\n  },\n  warning: {\n    backgroundClass: 'gl-bg-status-warning',\n    iconClass: 'gl-fill-status-warning',\n  },\n  success: {\n    backgroundClass: 'gl-bg-status-success',\n    iconClass: 'gl-fill-status-success',\n  },\n  neutral: {\n    backgroundClass: 'gl-bg-status-neutral',\n    iconClass: 'gl-fill-status-neutral',\n  },\n  error: {\n    backgroundClass: 'gl-bg-status-danger',\n    iconClass: 'gl-fill-status-danger',\n  },\n  notice: {\n    backgroundClass: 'gl-bg-status-neutral',\n    iconClass: 'gl-fill-status-neutral',\n  },\n  scheduled: {\n    backgroundClass: 'gl-bg-status-info',\n    iconClass: 'gl-fill-status-info',\n  },\n  severityCritical: {\n    backgroundClass: 'gl-bg-red-100',\n    iconClass: 'gl-fill-red-800',\n  },\n  severityHigh: {\n    backgroundClass: 'gl-bg-red-100',\n    iconClass: 'gl-fill-red-600',\n  },\n  severityMedium: {\n    backgroundClass: 'gl-bg-orange-100',\n    iconClass: 'gl-fill-orange-400',\n  },\n  severityLow: {\n    backgroundClass: 'gl-bg-orange-100',\n    iconClass: 'gl-fill-orange-300',\n  },\n  severityInfo: {\n    backgroundClass: 'gl-bg-status-info',\n    iconClass: 'gl-fill-status-info',\n  },\n  severityUnknown: {\n    backgroundClass: 'gl-bg-status-neutral',\n    iconClass: 'gl-fill-status-neutral',\n  },\n};\n\nexport const VIEW_MERGE_REQUEST_WIDGET = 'view_merge_request_widget';\nexport const EXPAND_MERGE_REQUEST_WIDGET = 'expand_merge_request_widget';\nexport const CLICK_FULL_REPORT_ON_MERGE_REQUEST_WIDGET =\n  'click_full_report_on_merge_request_widget';\n\nexport { STATE_MACHINE };\n\nexport const INVALID_RULES_DOCS_PATH = helpPagePath(\n  'user/project/merge_requests/approvals/index.md',\n  {\n    anchor: 'invalid-rules',\n  },\n);\n\nexport const DETAILED_MERGE_STATUS = {\n  PREPARING: 'PREPARING',\n  MERGEABLE: 'MERGEABLE',\n  CHECKING: 'CHECKING',\n  NOT_OPEN: 'NOT_OPEN',\n  DISCUSSIONS_NOT_RESOLVED: 'DISCUSSIONS_NOT_RESOLVED',\n  NOT_APPROVED: 'NOT_APPROVED',\n  DRAFT_STATUS: 'DRAFT_STATUS',\n  BLOCKED_STATUS: 'BLOCKED_STATUS',\n  CI_MUST_PASS: 'CI_MUST_PASS',\n  CI_STILL_RUNNING: 'CI_STILL_RUNNING',\n  EXTERNAL_STATUS_CHECKS: 'EXTERNAL_STATUS_CHECKS',\n};\n\nexport const MT_SKIP_TRAIN = 'skip';\nexport const MT_RESTART_TRAIN = 'restart';\n\n// Pipeline event type names\n\nexport const PIPELINE_EVENT_TYPE_MERGE_TRAIN = 'Merge train pipeline';\nexport const PIPELINE_EVENT_TYPE_MERGED_RESULT = 'Merged results pipeline';\nexport const PIPELINE_EVENT_TYPE_MERGE_REQUEST = 'Merge request pipeline';\n\nexport const PIPELINE_EVENT_TYPE_MAP = {\n  [PIPELINE_EVENT_TYPE_MERGE_TRAIN]: {\n    title: s__('Pipeline|What is a merge train pipeline?'),\n    content: s__(\n      'Pipeline|Merge train pipeline runs on the contents of the merge request combined with the contents of all other merge requests queued for merging into the target branch.',\n    ),\n  },\n  [PIPELINE_EVENT_TYPE_MERGED_RESULT]: {\n    title: s__('Pipeline|What is a merged results pipeline?'),\n    content: s__(\n      'Pipeline|Merged results pipeline runs on the contents of the merge request combined with the contents of the target branch.',\n    ),\n  },\n  [PIPELINE_EVENT_TYPE_MERGE_REQUEST]: {\n    title: s__('Pipeline|What is a merge request pipeline?'),\n    content: s__(\n      \"Pipeline|Merge request pipeline runs on the contents of the merge request's source branch, not the target branch.\",\n    ),\n  },\n};\n","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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedByEE\"},\"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\":\"mergeRequestsDisableCommittersApproval\"},\"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\":\"author\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsLeft\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"policiesOverridingApprovalSettings\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"editPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"settings\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalState\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"invalidApproversRules\"},\"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\":\"rules\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approved\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalsRequired\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"invalid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"allowMergeWhenInvalid\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"type\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"approvedBy\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"committers\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"User\"},\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"userPermissions\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"canApprove\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":902}};\n    doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/user.fragment.graphql\\\"\\n\\nquery approvedByEE($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequestsDisableCommittersApproval\\n    mergeRequest(iid: $iid) {\\n      id\\n      author {\\n        id\\n      }\\n      approved\\n      approvalsLeft\\n      approvalsRequired\\n      policiesOverridingApprovalSettings {\\n        name\\n        editPath\\n        settings\\n      }\\n      approvalState {\\n        invalidApproversRules {\\n          id\\n          name\\n        }\\n        rules {\\n          id\\n          approved\\n          approvalsRequired\\n          invalid\\n          allowMergeWhenInvalid\\n          name\\n          type\\n        }\\n      }\\n      approvedBy {\\n        nodes {\\n          ...User\\n        }\\n      }\\n      committers {\\n        nodes {\\n          ...User\\n        }\\n      }\\n      userPermissions {\\n        canApprove\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/user.fragment.graphql\").definitions));\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[\"approvedByEE\"] = oneQuery(doc, \"approvedByEE\");\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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeTrainCarCount\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Project\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"mergeTrains\"},\"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\":\"cars\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":121}};\n    doc.loc.source = {\"body\":\"fragment MergeTrainCarCount on Project {\\n  id\\n  mergeTrains {\\n    nodes {\\n      cars {\\n        count\\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[\"MergeTrainCarCount\"] = oneQuery(doc, \"MergeTrainCarCount\");\n        \n","/**\n * Get query parameters used for users request from passed `options` parameter\n * @param {Object} options e.g. { currentUserId: 1, fooBar: 'baz' }\n * @param {Object} paramsMap e.g. { user_id: 'currentUserId', foo_bar: 'fooBar' }\n */\nexport const getAjaxUsersSelectParams = (options, paramsMap) => {\n  return Object.keys(paramsMap).reduce((accumulator, paramKey) => {\n    const optionKey = paramsMap[paramKey];\n    accumulator[paramKey] = options[optionKey] || null;\n\n    return accumulator;\n  }, {});\n};\n","/* eslint-disable func-names, consistent-return, no-shadow, no-self-compare, no-unused-expressions, camelcase, no-param-reassign */\n/* global Issuable */\n/* global emitSidebarEvent */\n\nimport $ from 'jquery';\nimport { escape, template, uniqBy } from 'lodash';\nimport { AJAX_USERS_SELECT_PARAMS_MAP } from '~/users_select/constants';\nimport initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown';\nimport { TYPE_MERGE_REQUEST } from '~/issues/constants';\nimport { isUserBusy } from '~/set_status_modal/utils';\nimport { fixTitle, dispose } from '~/tooltips';\nimport axios from '~/lib/utils/axios_utils';\nimport { parseBoolean, spriteIcon } from '~/lib/utils/common_utils';\nimport { s__, __, sprintf } from '~/locale';\nimport { getAjaxUsersSelectParams } from './utils';\n\n// TODO: remove eventHub hack after code splitting refactor\nwindow.emitSidebarEvent = window.emitSidebarEvent || $.noop;\n\nfunction UsersSelect(currentUser, els, options = {}) {\n  const elsClassName = els?.toString().match('.(.+$)')[1];\n  const $els = $(els || '.js-user-search');\n  this.users = this.users.bind(this);\n  this.usersPath = '/-/autocomplete/users.json';\n  if (currentUser != null) {\n    if (typeof currentUser === 'object') {\n      this.currentUser = currentUser;\n    } else {\n      this.currentUser = JSON.parse(currentUser);\n    }\n  }\n\n  const { handleClick, states } = options;\n\n  this.dropdowns = $els\n    .map((i, dropdown) => {\n      const userSelect = this;\n      const $dropdown = $(dropdown);\n      const options = {\n        states,\n        projectId: $dropdown.data('projectId'),\n        groupId: $dropdown.data('groupId'),\n        showCurrentUser: $dropdown.data('currentUser'),\n        todoFilter: $dropdown.data('todoFilter'),\n        todoStateFilter: $dropdown.data('todoStateFilter'),\n        iid: $dropdown.data('iid'),\n        issuableType: $dropdown.data('issuableType'),\n        targetBranch: $dropdown.data('targetBranch'),\n        authorId: $dropdown.data('authorId'),\n        showSuggested: $dropdown.data('showSuggested'),\n      };\n      const showNullUser = $dropdown.data('nullUser');\n      const defaultNullUser = $dropdown.data('nullUserDefault');\n      const showMenuAbove = $dropdown.data('showMenuAbove');\n      const showAnyUser = $dropdown.data('anyUser');\n      const firstUser = $dropdown.data('firstUser');\n      const defaultLabel = $dropdown.data('defaultLabel');\n      const issueURL = $dropdown.data('issueUpdate');\n      const $selectbox = $dropdown.closest('.selectbox');\n      const $assignToMeLink = $selectbox.next('.assign-to-me-link');\n      let $block = $selectbox.closest('.block');\n      const abilityName = $dropdown.data('abilityName');\n      let $value = $block.find('.value');\n      const $collapsedSidebar = $block.find('.sidebar-collapsed-user');\n      const $loading = $block.find('.block-loading').addClass('gl-hidden');\n      const selectedIdDefault = defaultNullUser && showNullUser ? 0 : null;\n      let selectedId = $dropdown.data('selected');\n      let assignTo;\n      let assigneeTemplate;\n      let collapsedAssigneeTemplate;\n\n      const suggestedReviewersHelpPath = $dropdown.data('suggestedReviewersHelpPath');\n      const suggestedReviewersHeaderTemplate = template(\n        `<div class=\"gl-flex gl-items-center\">\n         <%- header %>\n         <a\n           title=\"${s__('SuggestedReviewers|Learn about suggested reviewers')}\"\n           href=\"${suggestedReviewersHelpPath}\"\n           rel=\"noopener\"\n           target=\"_blank\"\n           aria-label=\"${s__('SuggestedReviewers|Suggested reviewers help link')}\"\n           class=\"hover:!gl-bg-transparent !gl-p-0 has-tooltip\">\n           ${spriteIcon('question-o', 'gl-ml-3 gl-icon s16')}\n         </a>\n       </div>`,\n      );\n\n      if (selectedId === undefined) {\n        selectedId = selectedIdDefault;\n      }\n\n      const assignYourself = function () {\n        const unassignedSelected = $dropdown\n          .closest('.selectbox')\n          .find(`input[name='${$dropdown.data('fieldName')}'][value=0]`);\n\n        if (unassignedSelected) {\n          unassignedSelected.remove();\n        }\n\n        // Save current selected user to the DOM\n        const currentUserInfo = $dropdown.data('currentUserInfo') || {};\n        const currentUser = userSelect.currentUser || {};\n        const fieldName = $dropdown.data('fieldName');\n        const userName = currentUserInfo.name;\n        const userId = currentUserInfo.id || currentUser.id;\n\n        const inputHtmlString = template(`\n        <input type=\"hidden\" name=\"<%- fieldName %>\"\n          data-meta=\"<%- userName %>\"\n          value=\"<%- userId %>\" />\n        `)({ fieldName, userName, userId });\n\n        if ($selectbox) {\n          $dropdown.parent().before(inputHtmlString);\n        } else {\n          $dropdown.after(inputHtmlString);\n        }\n      };\n\n      if ($block[0]) {\n        $block[0].addEventListener('assignYourself', assignYourself);\n      }\n\n      const getSelectedUserInputs = function () {\n        return $selectbox.find(`input[name=\"${$dropdown.data('fieldName')}\"]`);\n      };\n\n      const getSelected = function () {\n        return getSelectedUserInputs()\n          .map((index, input) => parseInt(input.value, 10))\n          .get();\n      };\n\n      const checkMaxSelect = function () {\n        const maxSelect = $dropdown.data('maxSelect');\n        if (maxSelect) {\n          const selected = getSelected();\n\n          if (selected.length > maxSelect) {\n            const firstSelectedId = selected[0];\n            const firstSelected = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${$dropdown.data('fieldName')}'][value=${firstSelectedId}]`);\n\n            firstSelected.remove();\n\n            if ($dropdown.hasClass(elsClassName)) {\n              emitSidebarEvent('sidebar.removeReviewer', {\n                id: firstSelectedId,\n              });\n            } else {\n              emitSidebarEvent('sidebar.removeAssignee', {\n                id: firstSelectedId,\n              });\n            }\n          }\n        }\n      };\n\n      const getMultiSelectDropdownTitle = function (selectedUser, isSelected) {\n        const selectedUsers = getSelected().filter((u) => u !== 0);\n\n        const firstUser = getSelectedUserInputs()\n          .map((index, input) => ({\n            name: input.dataset.meta,\n            value: parseInt(input.value, 10),\n          }))\n          .filter((u) => u.id !== 0)\n          .get(0);\n\n        if (selectedUsers.length === 0) {\n          return s__('UsersSelect|Unassigned');\n        }\n        if (selectedUsers.length === 1) {\n          return firstUser.name;\n        }\n        if (isSelected) {\n          const otherSelected = selectedUsers.filter((s) => s !== selectedUser.id);\n          return sprintf(s__('UsersSelect|%{name} + %{length} more'), {\n            name: selectedUser.name,\n            length: otherSelected.length,\n          });\n        }\n        return sprintf(s__('UsersSelect|%{name} + %{length} more'), {\n          name: firstUser.name,\n          length: selectedUsers.length - 1,\n        });\n      };\n\n      $assignToMeLink.on('click', (e) => {\n        e.preventDefault();\n        $(e.currentTarget).hide();\n\n        if ($dropdown.data('multiSelect')) {\n          assignYourself();\n          checkMaxSelect();\n\n          const currentUserInfo = $dropdown.data('currentUserInfo');\n          $dropdown\n            .find('.dropdown-toggle-text')\n            .text(getMultiSelectDropdownTitle(currentUserInfo))\n            .removeClass('is-default');\n        } else {\n          const $input = $(`input[name=\"${$dropdown.data('fieldName')}\"]`);\n          $input.val(gon.current_user_id);\n          selectedId = $input.val();\n          $dropdown\n            .find('.dropdown-toggle-text')\n            .text(gon.current_user_fullname)\n            .removeClass('is-default');\n        }\n      });\n\n      $block.on('click', '.js-assign-yourself', (e) => {\n        e.preventDefault();\n        return assignTo(userSelect.currentUser.id);\n      });\n\n      assignTo = function (selected) {\n        const data = {};\n        data[abilityName] = {};\n        data[abilityName].assignee_id = selected != null ? selected : null;\n        $loading.removeClass('gl-hidden');\n        $dropdown.trigger('loading.gl.dropdown');\n\n        return axios.put(issueURL, data).then(({ data }) => {\n          let user = {};\n          let tooltipTitle;\n          $dropdown.trigger('loaded.gl.dropdown');\n          $loading.addClass('gl-hidden');\n          if (data.assignee) {\n            user = {\n              name: data.assignee.name,\n              username: data.assignee.username,\n              avatar: data.assignee.avatar_url,\n            };\n            tooltipTitle = escape(user.name);\n          } else {\n            user = {\n              name: s__('UsersSelect|Unassigned'),\n              username: '',\n              avatar: '',\n            };\n            tooltipTitle = s__('UsersSelect|Assignee');\n          }\n          $value.html(assigneeTemplate(user));\n          $collapsedSidebar.attr('title', tooltipTitle);\n          fixTitle($collapsedSidebar);\n\n          return $collapsedSidebar.html(collapsedAssigneeTemplate(user));\n        });\n      };\n      collapsedAssigneeTemplate = template(\n        `<% if( avatar ) { %> <a class=\"author-link\" href=\"/<%- username %>\"> <img width=\"24\" class=\"avatar avatar-inline s24\" alt=\"\" src=\"<%- avatar %>\"> </a> <% } else { %> ${spriteIcon(\n          'user',\n        )} <% } %>`,\n      );\n      assigneeTemplate = template(\n        `<% if (username) { %> <a class=\"author-link gl-font-bold\" href=\"/<%- username %>\"> <% if( avatar ) { %> <img width=\"32\" class=\"avatar avatar-inline s32\" alt=\"\" src=\"<%- avatar %>\"> <% } %> <span class=\"author\"><%- name %></span> <span class=\"username\"> @<%- username %> </span> </a> <% } else { %> <span class=\"no-value assign-yourself\">\n      ${sprintf(s__('UsersSelect|No assignee - %{openingTag} assign yourself %{closingTag}'), {\n        openingTag: '<a href=\"#\" class=\"js-assign-yourself\">',\n        closingTag: '</a>',\n      })}</span> <% } %>`,\n      );\n\n      return initDeprecatedJQueryDropdown($dropdown, {\n        showMenuAbove,\n        data(term, callback) {\n          return userSelect.users(term, options, (users) => {\n            // GitLabDropdownFilter returns this.instance\n            // GitLabDropdownRemote returns this.options.instance\n            const deprecatedJQueryDropdown = this.instance || this.options.instance;\n            deprecatedJQueryDropdown.options.processData(term, users, callback);\n          });\n        },\n        processData(term, dataArg, callback) {\n          // Sometimes the `dataArg` can contain special dropdown items like\n          // dividers which we don't want to consider here.\n          const data = dataArg.filter((x) => !x.type);\n\n          let users = data;\n\n          // Only show assigned user list when there is no search term\n          if ($dropdown.hasClass('js-multiselect') && term.length === 0) {\n            const selectedInputs = getSelectedUserInputs();\n\n            // Potential duplicate entries when dealing with issue board\n            // because issue board is also managed by vue\n            const selectedUsers = uniqBy(selectedInputs, (a) => a.value)\n              .filter((input) => {\n                const userId = parseInt(input.value, 10);\n                const inUsersArray = users.find((u) => u.id === userId);\n\n                return !inUsersArray && userId !== 0;\n              })\n              .map((input) => {\n                const userId = parseInt(input.value, 10);\n                const {\n                  avatarUrl,\n                  avatar_url,\n                  name,\n                  username,\n                  can_merge: canMerge,\n                } = input.dataset;\n                return {\n                  avatar_url: avatarUrl || avatar_url || gon.default_avatar_url,\n                  id: userId,\n                  name,\n                  username,\n                  can_merge: parseBoolean(canMerge),\n                };\n              });\n\n            users = data.concat(selectedUsers);\n          }\n\n          let anyUser;\n          let index;\n          let len;\n          let name;\n          let obj;\n          let showDivider;\n          if (term.length === 0) {\n            showDivider = 0;\n            if (firstUser) {\n              // Move current user to the front of the list\n              for (index = 0, len = users.length; index < len; index += 1) {\n                obj = users[index];\n                if (obj.username === firstUser) {\n                  users.splice(index, 1);\n                  users.unshift(obj);\n                  break;\n                }\n              }\n            }\n            if (showNullUser) {\n              showDivider += 1;\n              users.unshift({\n                beforeDivider: true,\n                name: s__('UsersSelect|Unassigned'),\n                id: 0,\n              });\n            }\n            if (showAnyUser) {\n              showDivider += 1;\n              name = showAnyUser;\n              if (name === true) {\n                name = s__('UsersSelect|Any User');\n              }\n              anyUser = {\n                beforeDivider: true,\n                name,\n                id: null,\n              };\n              users.unshift(anyUser);\n            }\n\n            if (showDivider) {\n              users.splice(showDivider, 0, { type: 'divider' });\n            }\n\n            if ($dropdown.hasClass('js-multiselect')) {\n              const selected = getSelected().filter((i) => i !== 0);\n\n              if ($dropdown.data('showSuggested')) {\n                const suggested = this.suggestedUsers(users);\n                if (suggested.length) {\n                  users = users.filter(\n                    (u) => !u.suggested || (u.suggested && selected.indexOf(u.id) !== -1),\n                  );\n                  users.splice(showDivider + 1, 0, ...suggested);\n                }\n              }\n\n              if (selected.length > 0) {\n                if ($dropdown.data('dropdownHeader')) {\n                  showDivider += 1;\n                  users.splice(showDivider, 0, {\n                    type: 'header',\n                    content: $dropdown.data('dropdownHeader'),\n                  });\n                }\n\n                const selectedUsers = users\n                  .filter((u) => selected.indexOf(u.id) !== -1)\n                  .sort((a, b) => a.name > b.name);\n\n                users = users.filter((u) => selected.indexOf(u.id) === -1);\n\n                selectedUsers.forEach((selectedUser) => {\n                  showDivider += 1;\n                  users.splice(showDivider, 0, selectedUser);\n                });\n\n                users.splice(showDivider + 1, 0, { type: 'divider' });\n              }\n            }\n          }\n\n          callback(users);\n          if (showMenuAbove) {\n            $dropdown.data('deprecatedJQueryDropdown').positionMenuAbove();\n          }\n        },\n        suggestedUsers(users) {\n          const selected = getSelected().filter((i) => i !== 0);\n          const suggestedUsers = users.filter((u) => u.suggested && selected.indexOf(u.id) === -1);\n\n          if (!suggestedUsers.length) return [];\n\n          const items = [\n            {\n              type: 'header',\n              content: suggestedReviewersHeaderTemplate({\n                header: $dropdown.data('suggestedReviewersHeader'),\n              }),\n            },\n            ...suggestedUsers,\n            { type: 'header', content: $dropdown.data('allMembersHeader') },\n          ];\n          return items;\n        },\n        filterable: true,\n        filterRemote: true,\n        search: {\n          fields: ['name', 'username'],\n        },\n        selectable: true,\n        fieldName: $dropdown.data('fieldName'),\n        toggleLabel(selected, el, deprecatedJQueryDropdown) {\n          const inputValue = deprecatedJQueryDropdown.filterInput.val();\n\n          if (this.multiSelect && inputValue === '') {\n            // Remove non-users from the fullData array\n            const users = deprecatedJQueryDropdown.filteredFullData();\n            const callback = deprecatedJQueryDropdown.parseData.bind(deprecatedJQueryDropdown);\n\n            // Update the data model\n            this.processData(inputValue, users, callback);\n          }\n\n          deprecatedJQueryDropdown.filter.clear();\n\n          if (this.multiSelect) {\n            return getMultiSelectDropdownTitle(selected, $(el).hasClass('is-active'));\n          }\n\n          if (selected && 'id' in selected && $(el).hasClass('is-active')) {\n            $dropdown.find('.dropdown-toggle-text').removeClass('is-default');\n            if (selected.text) {\n              return selected.text;\n            }\n            return selected.name;\n          }\n          $dropdown.find('.dropdown-toggle-text').addClass('is-default');\n\n          return defaultLabel;\n        },\n        defaultLabel,\n        hidden() {\n          if ($dropdown.hasClass('js-multiselect')) {\n            if ($dropdown.hasClass(elsClassName)) {\n              if (!$dropdown.closest('.merge-request-form').length) {\n                $dropdown.data('deprecatedJQueryDropdown').clearMenu();\n                $dropdown.closest('.selectbox').children('input[type=\"hidden\"]').remove();\n              }\n              emitSidebarEvent('sidebar.saveReviewers');\n            } else {\n              emitSidebarEvent('sidebar.saveAssignees');\n            }\n          }\n\n          if (!$dropdown.data('alwaysShowSelectbox')) {\n            $selectbox.hide();\n\n            // Recalculate where .value is because vue might have changed it\n            $block = $selectbox.closest('.block');\n            $value = $block.find('.value');\n            // display:block overrides the hide-collapse rule\n            $value.css('display', '');\n          }\n\n          $('.dropdown-input-field', $block).val('');\n        },\n        multiSelect: $dropdown.hasClass('js-multiselect'),\n        inputMeta: $dropdown.data('inputMeta'),\n        clicked(options) {\n          const { $el, e, isMarking } = options;\n          const user = options.selectedObj;\n\n          dispose($el);\n\n          if ($dropdown.hasClass('js-multiselect')) {\n            const isActive = $el.hasClass('is-active');\n            const previouslySelected = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${$dropdown.data('fieldName')}'][value!=0]`);\n\n            // Enables support for limiting the number of users selected\n            // Automatically removes the first on the list if more users are selected\n            checkMaxSelect();\n\n            if (user.beforeDivider && user.name.toLowerCase() === 'unassigned') {\n              // Unassigned selected\n              previouslySelected.each((index, element) => {\n                element.remove();\n              });\n              if ($dropdown.hasClass(elsClassName)) {\n                emitSidebarEvent('sidebar.removeAllReviewers');\n              } else {\n                emitSidebarEvent('sidebar.removeAllAssignees');\n              }\n            } else if (isActive) {\n              // user selected\n              if ($dropdown.hasClass(elsClassName)) {\n                emitSidebarEvent('sidebar.addReviewer', user);\n              } else {\n                emitSidebarEvent('sidebar.addAssignee', user);\n              }\n\n              // Remove unassigned selection (if it was previously selected)\n              const unassignedSelected = $dropdown\n                .closest('.selectbox')\n                .find(`input[name='${$dropdown.data('fieldName')}'][value=0]`);\n\n              if (unassignedSelected) {\n                unassignedSelected.remove();\n              }\n            } else {\n              if (previouslySelected.length === 0) {\n                // Select unassigned because there is no more selected users\n                this.addInput($dropdown.data('fieldName'), 0, {});\n              }\n\n              // User unselected\n              if ($dropdown.hasClass(elsClassName)) {\n                emitSidebarEvent('sidebar.removeReviewer', user);\n              } else {\n                emitSidebarEvent('sidebar.removeAssignee', user);\n              }\n            }\n\n            if (getSelected().find((u) => u === gon.current_user_id)) {\n              $assignToMeLink.hide();\n            } else {\n              $assignToMeLink.show();\n            }\n          }\n\n          const page = $('body').attr('data-page');\n          const isIssueIndex = page === 'projects:issues:index';\n          const isMRIndex = page === page && page === 'projects:merge_requests:index';\n          if (\n            $dropdown.hasClass('js-filter-bulk-update') ||\n            $dropdown.hasClass('js-issuable-form-dropdown')\n          ) {\n            e.preventDefault();\n\n            const isSelecting = user.id !== selectedId;\n            selectedId = isSelecting ? user.id : selectedIdDefault;\n\n            if (selectedId === gon.current_user_id) {\n              $('.assign-to-me-link').hide();\n            } else {\n              $('.assign-to-me-link').show();\n            }\n            return;\n          }\n          if (handleClick) {\n            e.preventDefault();\n            handleClick(user, isMarking);\n          } else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {\n            return Issuable.filterResults($dropdown.closest('form'));\n          } else if ($dropdown.hasClass('js-filter-submit')) {\n            return $dropdown.closest('form').submit();\n          } else if (!$dropdown.hasClass('js-multiselect')) {\n            const selected = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${$dropdown.data('fieldName')}']`)\n              .val();\n            return assignTo(selected);\n          }\n\n          // Automatically close dropdown after assignee is selected\n          // since CE has no multiple assignees\n          // EE does not have a max-select\n          if ($dropdown.data('maxSelect') && getSelected().length === $dropdown.data('maxSelect')) {\n            // Close the dropdown\n            $dropdown.dropdown('toggle');\n          }\n        },\n        id(user) {\n          return user.id;\n        },\n        opened(e) {\n          const $el = $(e.currentTarget);\n          const selected = getSelected();\n          $el.find('.is-active').removeClass('is-active');\n\n          function highlightSelected(id) {\n            $el.find(`li[data-user-id=\"${id}\"] .dropdown-menu-user-link`).addClass('is-active');\n          }\n\n          if (selected.length > 0) {\n            getSelected().forEach((selectedId) => highlightSelected(selectedId));\n          } else {\n            highlightSelected(selectedId);\n          }\n        },\n        updateLabel: $dropdown.data('dropdownTitle'),\n        renderRow(user) {\n          const username = user.username ? `@${user.username}` : '';\n          const avatar = user.avatar_url ? user.avatar_url : gon.default_avatar_url;\n\n          let selected = false;\n\n          if (this.multiSelect) {\n            selected = getSelected().find((u) => user.id === u);\n\n            const { fieldName } = this;\n            const field = $dropdown\n              .closest('.selectbox')\n              .find(`input[name='${fieldName}'][value='${user.id}']`);\n\n            if (field.length) {\n              selected = true;\n            }\n          } else {\n            selected = user.id === selectedId;\n          }\n\n          let img = '';\n          if (user.beforeDivider != null) {\n            `<li><a href='#' class='${selected === true ? 'is-active' : ''}'>${escape(\n              user.name,\n            )}</a></li>`;\n          } else {\n            // 0 margin, because it's now handled by a wrapper\n            img = `<img src='${avatar}' alt='' class='avatar avatar-inline !gl-m-0' width='32' />`;\n          }\n\n          return userSelect.renderRow(\n            options.issuableType,\n            user,\n            selected,\n            username,\n            img,\n            elsClassName,\n          );\n        },\n      })\n        .get()\n        .map((dropdown) => dropdown.GitLabDropdownInstance);\n    })\n    .get();\n}\n\n// Return users list. Filtered by query\n// Only active users retrieved\nUsersSelect.prototype.users = function (query, options, callback) {\n  const url = this.buildUrl(this.usersPath);\n  const params = {\n    search: query,\n    active: true,\n    ...getAjaxUsersSelectParams(options, AJAX_USERS_SELECT_PARAMS_MAP),\n  };\n\n  const isMergeRequest = options.issuableType === TYPE_MERGE_REQUEST;\n  const isEditMergeRequest = !options.issuableType && options.iid && options.targetBranch;\n  const isNewMergeRequest = !options.issuableType && !options.iid && options.targetBranch;\n\n  if (isMergeRequest || isEditMergeRequest || isNewMergeRequest) {\n    params.merge_request_iid = options.iid || null;\n    params.approval_rules = true;\n  }\n\n  if (isMergeRequest && options.showSuggested) {\n    params.show_suggested = true;\n  }\n\n  if (isNewMergeRequest) {\n    params.target_branch = options.targetBranch || null;\n  }\n\n  return axios.get(url, { params }).then(({ data }) => {\n    callback(data);\n  });\n};\n\nUsersSelect.prototype.buildUrl = function (url) {\n  if (gon.relative_url_root != null) {\n    url = gon.relative_url_root.replace(/\\/$/, '') + url;\n  }\n  return url;\n};\n\n// eslint-disable-next-line max-params\nUsersSelect.prototype.renderRow = function (\n  issuableType,\n  user,\n  selected,\n  username,\n  img,\n  elsClassName,\n) {\n  const tooltip = issuableType === TYPE_MERGE_REQUEST && !user.can_merge ? __('Cannot merge') : '';\n  const tooltipClass = tooltip ? `has-tooltip` : '';\n  const selectedClass = selected === true ? 'is-active' : '';\n  const linkClasses = `${selectedClass} ${tooltipClass}`;\n  const tooltipAttributes = tooltip\n    ? `data-container=\"body\" data-placement=\"left\" data-title=\"${tooltip}\"`\n    : '';\n  const dataUserSuggested = user.suggested ? `data-user-suggested=${user.suggested}` : '';\n\n  const busyBadge =\n    user?.availability && isUserBusy(user.availability)\n      ? `<span class=\"badge badge-warning badge-pill gl-badge sm\">${__('Busy')}</span>`\n      : '';\n  return `\n    <li data-user-id=${user.id} ${dataUserSuggested}>\n      <a href=\"#\" class=\"dropdown-menu-user-link !gl-flex gl-items-center ${linkClasses}\" ${tooltipAttributes}>\n        ${this.renderRowAvatar(issuableType, user, img)}\n        <span class=\"gl-flex gl-flex-col gl-overflow-hidden\">\n          <strong class=\"dropdown-menu-user-full-name gl-font-bold\">\n            ${escape(user.name)}\n            ${busyBadge}\n          </strong>\n          ${\n            username\n              ? `<span class=\"dropdown-menu-user-username gl-text-subtle\">${escape(\n                  username,\n                )}</span>`\n              : ''\n          }\n          ${this.renderApprovalRules(elsClassName, user.applicable_approval_rules)}\n        </span>\n      </a>\n    </li>\n  `;\n};\n\nUsersSelect.prototype.renderRowAvatar = function (issuableType, user, img) {\n  if (user.beforeDivider) {\n    return img;\n  }\n\n  const mergeIcon =\n    issuableType === TYPE_MERGE_REQUEST && !user.can_merge\n      ? spriteIcon('warning-solid', 's12 merge-icon')\n      : '';\n\n  return `<span class=\"gl-relative gl-mr-3\">\n    ${img}\n    ${mergeIcon}\n  </span>`;\n};\n\nUsersSelect.prototype.renderApprovalRules = function (elsClassName, approvalRules = []) {\n  const count = approvalRules.length;\n\n  if (!elsClassName?.includes('reviewer') || !count) {\n    return '';\n  }\n\n  const [rule] = approvalRules;\n  const countText = sprintf(__('(+%{count}&nbsp;rules)'), { count });\n  const renderApprovalRulesCount = count > 1 ? `<span class=\"gl-ml-2\">${countText}</span>` : '';\n  const ruleName = rule.rule_type === 'code_owner' ? __('Code Owner') : escape(rule.name);\n\n  return `<div class=\"gl-flex gl-text-sm\">\n    <span class=\"gl-truncate\" title=\"${ruleName}\">${ruleName}</span>\n    ${renderApprovalRulesCount}\n  </div>`;\n};\n\nexport default UsersSelect;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CrmContacts\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Issue\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"customerRelationsContacts\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"firstName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"lastName\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"email\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"phone\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"organization\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":226}};\n    doc.loc.source = {\"body\":\"fragment CrmContacts on Issue {\\n  id\\n  customerRelationsContacts {\\n    nodes {\\n      id\\n      firstName\\n      lastName\\n      email\\n      phone\\n      description\\n      organization {\\n        id\\n        name\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"CrmContacts\"] = oneQuery(doc, \"CrmContacts\");\n        \n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n  return function () {\n    throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n  };\n}\n\n\nmodule.exports.Type                = require('./js-yaml/type');\nmodule.exports.Schema              = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA     = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA         = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA         = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load                = loader.load;\nmodule.exports.loadAll             = loader.loadAll;\nmodule.exports.safeLoad            = loader.safeLoad;\nmodule.exports.safeLoadAll         = loader.safeLoadAll;\nmodule.exports.dump                = dumper.dump;\nmodule.exports.safeDump            = dumper.safeDump;\nmodule.exports.YAMLException       = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA    = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan           = deprecated('scan');\nmodule.exports.parse          = deprecated('parse');\nmodule.exports.compose        = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('sidebar-editable-item',{ref:\"editable\",staticClass:\"block weight\",attrs:{\"title\":_vm.$options.i18n.weight,\"tracking\":_vm.$options.tracking,\"loading\":_vm.isLoading,\"data-testid\":\"sidebar-weight\"},on:{\"open\":function($event){_vm.oldIid = null},\"close\":function($event){return _vm.setWeight()}},scopedSlots:_vm._u([{key:\"collapsed\",fn:function(){return [_c('div',{staticClass:\"hide-collapsed gl-flex gl-items-center\"},[_c('span',{class:_vm.hasWeight ? 'gl-font-bold gl-text-default' : 'gl-text-subtle',attrs:{\"data-testid\":\"sidebar-weight-value\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.weightLabel)+\"\\n      \")]),_vm._v(\" \"),(_vm.hasWeight && _vm.canUpdate)?_c('div',{staticClass:\"gl-flex\"},[_c('span',{staticClass:\"gl-mx-2\"},[_vm._v(\"-\")]),_vm._v(\" \"),_c('gl-button',{staticClass:\"!gl-text-subtle\",attrs:{\"variant\":\"link\",\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.setWeight(true)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$options.i18n.removeWeight)+\"\\n        \")])],1):_vm._e()]),_vm._v(\" \"),_c('div',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.left.viewport\",modifiers:{\"left\":true,\"viewport\":true}}],staticClass:\"sidebar-collapsed-icon js-weight-collapsed-block\",attrs:{\"title\":_vm.tooltipTitle},on:{\"click\":_vm.expandSidebar}},[_c('gl-icon',{attrs:{\"size\":16,\"name\":\"weight\"}}),_vm._v(\" \"),(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"js-weight-collapsed-loading-icon\"}):_c('span',{staticClass:\"js-weight-collapsed-weight-label collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"},[_vm._v(\"\\n        \"+_vm._s(_vm.collapsedWeightLabel)+\"\\n        \"),(_vm.weight > _vm.$options.maxDisplayWeight)?[_vm._v(\"…\")]:_vm._e()],2)],1)]},proxy:true},{key:\"default\",fn:function(){return [_c('gl-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.handleFormSubmit()}}},[_c('gl-form-group',{attrs:{\"label\":_vm.__('Weight'),\"label-for\":\"weight-input\",\"label-sr-only\":\"\"}},[_c('gl-form-input',{directives:[{name:\"autofocusonshow\",rawName:\"v-autofocusonshow\"}],attrs:{\"id\":\"weight-input\",\"type\":\"number\",\"min\":\"0\",\"placeholder\":_vm.$options.i18n.inputPlaceholder},model:{value:(_vm.localWeight),callback:function ($$v) {_vm.localWeight=_vm._n($$v)},expression:\"localWeight\"}})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_weight_widget.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar_weight_widget.vue?vue&type=script&lang=js\"","<script>\nimport {\n  GlButton,\n  GlForm,\n  GlFormGroup,\n  GlFormInput,\n  GlLoadingIcon,\n  GlIcon,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { TYPE_ISSUE } from '~/issues/constants';\nimport { createAlert } from '~/alert';\nimport { __, sprintf } from '~/locale';\nimport SidebarEditableItem from '~/sidebar/components/sidebar_editable_item.vue';\nimport { Tracking } from '~/sidebar/constants';\nimport autofocusonshow from '~/vue_shared/directives/autofocusonshow';\nimport { MAX_DISPLAY_WEIGHT } from '../../constants';\nimport { weightQueries } from '../../queries/constants';\n\nexport default {\n  tracking: {\n    event: Tracking.editEvent,\n    label: Tracking.rightSidebarLabel,\n    property: 'weight',\n  },\n  components: {\n    GlButton,\n    GlForm,\n    GlFormGroup,\n    GlFormInput,\n    GlIcon,\n    GlLoadingIcon,\n    SidebarEditableItem,\n  },\n  directives: {\n    autofocusonshow,\n    GlTooltip: GlTooltipDirective,\n  },\n  inject: ['canUpdate'],\n  props: {\n    iid: {\n      type: String,\n      required: true,\n    },\n    fullPath: {\n      type: String,\n      required: true,\n    },\n    issuableType: {\n      required: true,\n      type: String,\n    },\n  },\n  data() {\n    return {\n      issuable: {},\n      loading: false,\n      oldIid: null,\n      localWeight: '',\n      previousWeight: null,\n    };\n  },\n  apollo: {\n    issuable: {\n      query() {\n        return weightQueries[this.issuableType].query;\n      },\n      variables() {\n        return {\n          fullPath: this.fullPath,\n          iid: String(this.iid),\n        };\n      },\n      skip() {\n        return !this.iid;\n      },\n      update(data) {\n        return data.workspace?.issuable || {};\n      },\n      error() {\n        createAlert({\n          message: sprintf(__('Something went wrong while setting %{issuableType} weight.'), {\n            issuableType: this.issuableType,\n          }),\n        });\n      },\n      result({ data }) {\n        this.localWeight = data?.workspace.issuable.weight ?? '';\n      },\n      subscribeToMore: {\n        document() {\n          return weightQueries[this.issuableType].subscription;\n        },\n        variables() {\n          return {\n            issuableId: this.issuableId,\n          };\n        },\n        skip() {\n          return this.skipIssueWeightSubscription;\n        },\n      },\n    },\n  },\n  computed: {\n    weight() {\n      return this.issuable.weight ?? null;\n    },\n    isLoading() {\n      return this.$apollo.queries?.issuable?.loading || this.loading;\n    },\n    hasWeight() {\n      return this.weight !== null;\n    },\n    weightLabel() {\n      return this.hasWeight ? this.weight : this.$options.i18n.noWeightLabel;\n    },\n    tooltipTitle() {\n      let tooltipTitle = this.$options.i18n.weight;\n\n      if (this.hasWeight) {\n        tooltipTitle += ` ${this.weight}`;\n      }\n\n      return tooltipTitle;\n    },\n    collapsedWeightLabel() {\n      return this.hasWeight\n        ? this.weight.toString().substr(0, 5)\n        : this.$options.i18n.noWeightLabel;\n    },\n    issuableId() {\n      return this.issuable.id;\n    },\n    skipIssueWeightSubscription() {\n      return this.issuableType !== TYPE_ISSUE || !this.issuableId || this.isLoading;\n    },\n  },\n  watch: {\n    iid(_, oldVal) {\n      this.oldIid = oldVal;\n    },\n  },\n  methods: {\n    setWeight(remove) {\n      const shouldRemoveWeight = remove || this.localWeight === '';\n      const weight = shouldRemoveWeight ? null : this.localWeight;\n      const currentIid = shouldRemoveWeight ? this.iid : this.oldIid || this.iid;\n      const previousWeight = this.hasWeight ? this.weight : 0;\n      this.loading = true;\n      this.$apollo\n        .mutate({\n          mutation: weightQueries[this.issuableType].mutation,\n          variables: {\n            input: {\n              projectPath: this.fullPath,\n              iid: currentIid,\n              weight,\n            },\n          },\n        })\n        .then(({ data: { issuableSetWeight } }) => {\n          if (issuableSetWeight.errors?.length) {\n            createAlert({\n              message: issuableSetWeight.errors[0],\n            });\n          } else {\n            this.$emit('weightUpdated', {\n              weight: shouldRemoveWeight\n                ? null\n                : (issuableSetWeight?.issuable?.weight || 0) - previousWeight,\n              id: issuableSetWeight?.issuable?.id,\n            });\n          }\n        })\n        .catch(() => {\n          createAlert({\n            message: sprintf(__('Something went wrong while setting %{issuableType} weight.'), {\n              issuableType: this.issuableType,\n            }),\n          });\n        })\n        .finally(() => {\n          this.loading = false;\n        });\n    },\n    expandSidebar() {\n      this.$refs.editable.expand();\n      this.$emit('expandSidebar');\n    },\n    handleFormSubmit() {\n      this.$refs.editable.collapse({ emitEvent: false });\n      this.setWeight();\n    },\n  },\n  i18n: {\n    weight: __('Weight'),\n    noWeightLabel: __('None'),\n    removeWeight: __('remove weight'),\n    inputPlaceholder: __('Enter a number'),\n  },\n  maxDisplayWeight: MAX_DISPLAY_WEIGHT,\n};\n</script>\n\n<template>\n  <sidebar-editable-item\n    ref=\"editable\"\n    :title=\"$options.i18n.weight\"\n    :tracking=\"$options.tracking\"\n    :loading=\"isLoading\"\n    class=\"block weight\"\n    data-testid=\"sidebar-weight\"\n    @open=\"oldIid = null\"\n    @close=\"setWeight()\"\n  >\n    <template #collapsed>\n      <div class=\"hide-collapsed gl-flex gl-items-center\">\n        <span\n          :class=\"hasWeight ? 'gl-font-bold gl-text-default' : 'gl-text-subtle'\"\n          data-testid=\"sidebar-weight-value\"\n        >\n          {{ weightLabel }}\n        </span>\n        <div v-if=\"hasWeight && canUpdate\" class=\"gl-flex\">\n          <span class=\"gl-mx-2\">-</span>\n          <gl-button\n            variant=\"link\"\n            class=\"!gl-text-subtle\"\n            :disabled=\"loading\"\n            @click=\"setWeight(true)\"\n          >\n            {{ $options.i18n.removeWeight }}\n          </gl-button>\n        </div>\n      </div>\n      <div\n        v-gl-tooltip.left.viewport\n        :title=\"tooltipTitle\"\n        class=\"sidebar-collapsed-icon js-weight-collapsed-block\"\n        @click=\"expandSidebar\"\n      >\n        <gl-icon :size=\"16\" name=\"weight\" />\n        <gl-loading-icon v-if=\"isLoading\" class=\"js-weight-collapsed-loading-icon\" />\n        <span\n          v-else\n          class=\"js-weight-collapsed-weight-label collapse-truncated-title gl-px-3 gl-pt-2 gl-text-sm\"\n        >\n          {{ collapsedWeightLabel }}\n          <template v-if=\"weight > $options.maxDisplayWeight\">&hellip;</template>\n        </span>\n      </div>\n    </template>\n    <template #default>\n      <gl-form @submit.prevent=\"handleFormSubmit()\">\n        <gl-form-group :label=\"__('Weight')\" label-for=\"weight-input\" label-sr-only>\n          <gl-form-input\n            id=\"weight-input\"\n            v-model.number=\"localWeight\"\n            v-autofocusonshow\n            type=\"number\"\n            min=\"0\"\n            :placeholder=\"$options.i18n.inputPlaceholder\"\n          />\n        </gl-form-group>\n      </gl-form>\n    </template>\n  </sidebar-editable-item>\n</template>\n","import { render, staticRenderFns } from \"./sidebar_weight_widget.vue?vue&type=template&id=7659b7b4\"\nimport script from \"./sidebar_weight_widget.vue?vue&type=script&lang=js\"\nexport * from \"./sidebar_weight_widget.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { takeRightWhile } from 'lodash';\n\nexport function getSymbol(type) {\n  if (type === 'new') return '+';\n  if (type === 'old') return '-';\n  return '';\n}\n\nfunction getLineNumber(lineRange, key) {\n  if (!lineRange || !key || !lineRange[key]) return '';\n  const { new_line: newLine, old_line: oldLine, type } = lineRange[key];\n  const otherKey = key === 'start' ? 'end' : 'start';\n\n  // By default we want to see the \"old\" or \"left side\" line number\n  // The exception is if the \"end\" line is on the \"right\" side\n  // `otherLineType` is only used if `type` is null to make sure the line\n  // number relfects the \"right\" side number, if that is the side\n  // the comment form is located on\n  const otherLineType = !type ? lineRange[otherKey]?.type : null;\n  const lineType = type || '';\n  let lineNumber = oldLine;\n  if (lineType === 'new' || otherLineType === 'new') lineNumber = newLine;\n  return (lineNumber && getSymbol(lineType) + lineNumber) || '';\n}\n\nexport function getStartLineNumber(lineRange) {\n  return getLineNumber(lineRange, 'start');\n}\n\nexport function getEndLineNumber(lineRange) {\n  return getLineNumber(lineRange, 'end');\n}\n\nexport function getLineClasses(line) {\n  const symbol = typeof line === 'string' ? line.charAt(0) : getSymbol(line?.type);\n\n  if (symbol !== '+' && symbol !== '-') return '';\n\n  return [\n    'gl-px-1 gl-rounded-small gl-border-solid gl-border-1 gl-border-white',\n    {\n      'gl-bg-green-100 gl-text-green-800': symbol === '+',\n      'gl-bg-red-100 gl-text-red-800': symbol === '-',\n    },\n  ];\n}\n\n// eslint-disable-next-line max-params\nexport function commentLineOptions(diffLines, startingLine, lineCode, side = 'left') {\n  const preferredSide = side === 'left' ? 'old_line' : 'new_line';\n  const fallbackSide = preferredSide === 'new_line' ? 'old_line' : 'new_line';\n  const notMatchType = (l) => l.type !== 'match';\n  const linesCopy = [...diffLines]; // don't mutate the argument\n  const startingLineCode = startingLine.line_code;\n\n  const currentIndex = linesCopy.findIndex((line) => line.line_code === lineCode);\n\n  // We're limiting adding comments to only lines above the current line\n  // to make rendering simpler. Future interations will use a more\n  // intuitive dragging interface that will make this unnecessary\n  const upToSelected = linesCopy.slice(0, currentIndex + 1);\n\n  // Only include the lines up to the first \"Show unchanged lines\" block\n  // i.e. not a \"match\" type\n  const lines = takeRightWhile(upToSelected, notMatchType);\n\n  // If the selected line is \"hidden\" in an unchanged line block\n  // or \"above\" the current group of lines add it to the array so\n  // that the drop down is not defaulted to empty\n  const selectedIndex = lines.findIndex((line) => line.line_code === startingLineCode);\n  if (selectedIndex < 0) lines.unshift(startingLine);\n\n  return lines.map((l) => {\n    const { line_code, type, old_line, new_line } = l;\n    return {\n      value: { line_code, type, old_line, new_line },\n      text: `${getSymbol(type)}${l[preferredSide] || l[fallbackSide]}`,\n    };\n  });\n}\n\nexport function formatLineRange(start, end) {\n  const extractProps = ({ line_code, type, old_line, new_line }) => ({\n    line_code,\n    type,\n    old_line,\n    new_line,\n  });\n  return {\n    start: extractProps(start),\n    end: extractProps(end),\n  };\n}\n\nexport function getCommentedLines(selectedCommentPosition, diffLines) {\n  if (!selectedCommentPosition) {\n    // This structure simplifies the logic that consumes this result\n    // by keeping the returned shape the same and adjusting the bounds\n    // to something unreachable. This way our component logic stays:\n    // \"if index between start and end\"\n    return {\n      startLine: diffLines.length + 1,\n      endLine: diffLines.length + 1,\n    };\n  }\n\n  const findLineCodeIndex = (line) => (position) => {\n    return [position.line_code, position.left?.line_code, position.right?.line_code].includes(\n      line.line_code,\n    );\n  };\n\n  const { start, end } = selectedCommentPosition;\n  const startLine = diffLines.findIndex(findLineCodeIndex(start));\n  const endLine = diffLines.findIndex(findLineCodeIndex(end));\n\n  return { startLine, endLine };\n}\n","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","/** 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","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"approvalRules\"},\"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\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"MergeRequestApprovalRule\"},\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":259}};\n    doc.loc.source = {\"body\":\"#import \\\"ee/graphql_shared/fragments/merge_request.approval_rule.fragment.graphql\\\"\\n\\nquery approvalRules($projectPath: ID!, $iid: String!) {\\n  project(fullPath: $projectPath) {\\n    id\\n    mergeRequest(iid: $iid) {\\n      ...MergeRequestApprovalRule\\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/merge_request.approval_rule.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[\"approvalRules\"] = oneQuery(doc, \"approvalRules\");\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":""}